我KONG
在具有各自数据库的 k8s 集群中有两个实例
- Kong沙箱实例被命名
kong-ingress-controller
,其配置如下:
- 而且我还有一个名为的Kong生产实例
kong-ingress-controller-production
,它的配置如下:
甚至,在这个配置模式下,我可以在同一个端口部署两个kong(沙箱和生产实例),我的意思是8001
,因为每个 kong 位于不同的 pod 机器中。
在 kong 沙箱实例中,我创建了以下 kong 资源:
basic-auth
和acl
KongPlugins2
KongConsumer
资源及其各自KongCredentials
而且我已经
- --ingress-class=kong
在kong沙箱中配置了参数,并且我有一个Ingress
指向它的资源
在 kong 沙箱环境中,前面提到的所有资源都创建并存储在其 kong 数据库中。
在kong生产环境中不是这种方式。让我们来看看 ...
我还在kong生产环境中创建以下内容:
basic-auth
和acl
KongPlugins1
KongConsumer
资源及其各自KongCredential
而且我已经
- --ingress-class=kong-production
在kong生产中配置了参数,并且我有一个Ingress
指向它的资源
怎么了?
我的两个 kong 沙箱和生产实例正在运行和工作,但 kong 沙箱环境数据库正在接管 and 的创建和 KongConsumers
存储KongCredentials
。
这些资源没有存储到 kong 生产数据库中,凭据、消费者、基本身份验证和 ACL 插件存储在沙盒数据库中......
只有KongPlugins
那些被存储在kong生产数据库中。
这种情况看起来像是不同的 kong 连接在某个时候交叉,或者至少 kong 沙盒环境正在侦听并将请求发送到 kong 生产环境。
我所说的一个测试或证明是,即使是 Kong 生产控制器环境也忽略Kongconsumer
了KongCredential
. 这些是与此确认相关的日志
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 实例的可用性以及它们中的任何一个都没有击败另一个,例如我们在这张图片中看到的: