Управление несколькими экземплярами kong - создание ресурсов kong в соответствующей базе данных
У меня два KONG
экземпляры в кластере k8s с соответствующей базой данных
- Экземпляр песочницы Kong назван
kong-ingress-controller
и его конфигурация такова:
- А также у меня есть производственный экземпляр Kong, который называется
kong-ingress-controller-production
и его конфигурация такова:
Даже в этой схеме конфигурации я могу развернуть оба kongs (песочница и производственные экземпляры) в одном и том же порту, я имею в виду 8001
, потому что каждый конг находится в другой машине стручка.
В экземпляре песочницы kong я создал следующие ресурсы kong:
basic-auth
а такжеacl
KongPlugins2
KongConsumer
ресурсы с соответствующимиKongCredentials
А также я настроил
- --ingress-class=kong
Параметр в песочнице Конга и у меня естьIngress
ресурс, указывающий на это
В среде песочницы kong все ранее упомянутые ресурсы создаются и хранятся в его базе данных kong.
Не так в производственной среде Гонконга. Посмотрим...
Я также создаю в производственной среде Конг следующее:
basic-auth
а такжеacl
KongPlugins1
KongConsumer
ресурс с соответствующимKongCredential
А также я настроил
- --ingress-class=kong-production
параметр в производстве Конга, и у меня естьIngress
ресурс, указывающий на это
Что происходит?
Мои две песочницы kong и производственные экземпляры работают и работают, но база данных среды песочницы kong берет на себя создание и хранение KongConsumers
а также KongCredentials
,
Эти ресурсы не сохраняются в производственной базе данных kong, учетные данные, потребители, плагины basic-auth и ACL хранятся в базе данных песочницы...
Только KongPlugins
хранятся в производственной базе данных Конга.
Ситуация выглядит так, как будто в какой-то момент были пересечены различные соединения 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, и у каждого есть определенное значение следующим образом:
- Конг производственная среда ->
- --ingress-class=kong-production
- среда песочницы в Конге ->
- --ingress-class=kong
А также в каждом Ingress
ресурс, который указывает на каждый конкретный класс Конг, используя kubernetes.io/ingress.class
аннотация этого способа:
Вход, указывающий на песочницу в Конге --->
kubernetes.io/ingress.class: "kong"
Вход, указывающий на производство в Конге --->
kubernetes.io/ingress.class: "kong-production"
Кто-то знает, что здесь происходит?
Как я могу перенаправить или хотя бы выполнить отладку этого поведения? Я проверял журналы и операцию переадресации порта, чтобы подтвердить доступность обоих экземпляров kong, а также того, что ни один из них не побеждает другой, как мы можем видеть на этом рисунке: