Управление несколькими экземплярами kong - создание ресурсов kong в соответствующей базе данных - PullRequest
0 голосов
/ 09 мая 2019

У меня есть два KONG экземпляра в кластере k8s с соответствующей базой данных

  • Экземпляр песочницы Kong назван kong-ingress-controller, и его конфигурация следующая:

enter image description here

  • А также у меня есть производственный экземпляр Kong , который называется kong-ingress-controller-production, и его конфигурация такова:

enter image description here

Даже в этой схеме конфигурации я могу развернуть оба kongs (песочница и производственные экземпляры) в одном и том же порту, я имею в виду 8001, потому что каждый kong расположен на отдельной машине pod.

В экземпляре песочницы kong я создал следующие ресурсы kong:

  • basic-auth и acl KongPlugins

  • 2 KongConsumer ресурсов с соответствующими KongCredentials

  • А также я настроил параметр - --ingress-class=kong в песочнице kong, и у меня есть ресурс Ingress, указывающий на него

В среде песочницы kong все ранее упомянутые ресурсы создаются и хранятся в его базе данных kong.

Не так в производственной среде Гонконга. Посмотрим ...

Я также создаю в производственной среде kong следующее:

  • basic-auth и acl KongPlugins

  • 1 KongConsumer ресурс с соответствующими KongCredential

  • А также я настроил параметр - --ingress-class=kong-production в производстве в Конге, и у меня есть ресурс Ingress, указывающий на него

Что происходит?

Мои две песочницы и производственные экземпляры работают и работают, но База данных среды песочницы kong берет на себя создание и хранение KongConsumers и KongCredentials.

Эти ресурсы не сохраняются в производственной базе данных kong, учетные данные, потребители, плагины basic-auth и ACL хранятся в базе данных песочницы ...

В производственной базе данных kong хранится только KongPlugins.

Ситуация выглядит так, как будто в какой-то момент были пересечены различные соединения 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, и у каждого есть определенное значение следующим образом:

  • Конг производственная среда -> - --ingress-class=kong-production
  • среда песочницы в Конге -> - --ingress-class=kong

А также в каждом Ingress ресурсе, который указывает на каждый конкретный класс конга, используя аннотацию kubernetes.io/ingress.class следующим образом:

  • Вход, указывающий на песочницу в Конге ---> kubernetes.io/ingress.class: "kong"

  • Вход, указывающий на производство в Конге ---> kubernetes.io/ingress.class: "kong-production"

Кто-то знает, что здесь происходит?

Как мне перенаправить или хотя бы выполнить отладку этого поведения? Я проверял журналы и операцию переадресации портов, чтобы подтвердить доступность обоих экземпляров kong, а также того, что ни один из них не побеждает другой, как мы можем видеть на этом рисунке:

enter image description here

...