0

KONG在具有各自数据库的 k8s 集群中有两个实例

  • Kong沙箱实例被命名kong-ingress-controller,其配置如下:

在此处输入图像描述

  • 而且我还有一个名为的Kong生产实例kong-ingress-controller-production,它的配置如下:

在此处输入图像描述

甚至,在这个配置模式下,我可以在同一个端口部署两个kong(沙箱和生产实例),我的意思是8001,因为每个 kong 位于不同的 pod 机器中。

在 kong 沙箱实例中,我创建了以下 kong 资源:

  • basic-authacl KongPlugins

  • 2KongConsumer资源及其各自KongCredentials

  • 而且我已经- --ingress-class=kong在kong沙箱中配置了参数,并且我有一个Ingress指向它的资源

在 kong 沙箱环境中,前面提到的所有资源都创建并存储在其 kong 数据库中。

在kong生产环境中不是这种方式。让我们来看看 ...

我还在kong生产环境中创建以下内容:

  • basic-authacl KongPlugins

  • 1KongConsumer资源及其各自KongCredential

  • 而且我已经- --ingress-class=kong-production在kong生产中配置了参数,并且我有一个Ingress指向它的资源

怎么了?

我的两个 kong 沙箱和生产实例正在运行和工作,但 kong 沙箱环境数据库正在接管 and 的创建和 KongConsumers存储KongCredentials

这些资源没有存储到 kong 生产数据库中,凭据、消费者、基本身份验证和 ACL 插件存储在沙盒数据库中......

只有KongPlugins那些被存储在kong生产数据库中。

这种情况看起来像是不同的 kong 连接在某个时候交叉,或者至少 kong 沙盒环境正在侦听并将请求发送到 kong 生产环境。

我所说的一个测试或证明是,即使是 Kong 生产控制器环境也忽略KongconsumerKongCredential. 这些是与此确认相关的日志

I0509 14:23:21.759720       6 kong.go:113] syncing global plugins
I0509 14:29:57.353944       6 store.go:371] ingress rule without annotations
I0509 14:29:57.353963       6 store.go:373] ignoring add event for plugin swaggerapi-production-basic-auth based on annotation kubernetes.io/ingress.class with value 
I0509 14:29:57.395732       6 store.go:371] ingress rule without annotations
I0509 14:29:57.395756       6 store.go:373] ignoring add event for plugin swaggerapi-production-acl based on annotation kubernetes.io/ingress.class with value 
I0509 14:29:57.438604       6 store.go:439] ignoring add event for consumer zcrm365dev-consumer based on annotation kubernetes.io/ingress.class with value 
I0509 14:29:57.487996       6 store.go:505] ignoring add event for credential zcrm365dev-credential based on annotation kubernetes.io/ingress.class with value 
I0509 14:29:57.529698       6 store.go:505] ignoring add event for credential zcrm365-prod-acl-credential based on annotation kubernetes.io/ingress.class with value 

这很奇怪,因为我在每个 Kong 部署中都指定了 --ingress-class 参数,并且每个参数都有这种方式的特定值:

  • kong 生产环境 --> - --ingress-class=kong-production
  • kong 沙盒环境 --> - --ingress-class=kong

并且在每个资源中使用这种方式的注释Ingress指向每个特定的 kong 类:kubernetes.io/ingress.class

  • 指向kong沙箱的入口--->kubernetes.io/ingress.class: "kong"

  • 指向kong生产的入口--->kubernetes.io/ingress.class: "kong-production"

有人知道这里发生了什么吗?

如何重定向或至少执行此行为的调试?我一直在检查日志和端口转发操作,以确认两个 kong 实例的可用性以及它们中的任何一个都没有击败另一个,例如我们在这张图片中看到的:

在此处输入图像描述

4

0 回答 0