У меня есть 3 кластера kubernetes (dev, stage, prod), на которых запущено множество приложений для front / backend Все кластеры были созданы с использованием EKS на Amazon. Для обслуживания traffi c для этих приложений у нас есть ALB, также настроенный кластером kubernetes, который обслуживает traffi c на основе некоторых простых правил маршрутизации.
Проблема, которую я пытаюсь решить, заключается в том, что я хочу разрешить доступ к нашим средам разработки / рабочей области только с указанных c IP-адресов, просто чтобы заблокировать доступ к ним внешних пользователей
Я решил сделать это, установив белый список ip в контроллере alb https://github.com/kubernetes-sigs/aws-alb-ingress-controller/blob/master/docs/guide/ingress/annotation.md
alb.ingress.kubernetes.io/healthcheck-path: "/"
alb.ingress.kubernetes.io/success-codes: "200,404"
alb.ingress.kubernetes.io/security-group-inbound-cidrs: "xx.xxx.xxx.xxx/32, xx.x.x.x/16"
labels:
app: development-alb
Моя проблема в том, что я также использую проверки готовности в все наши приложения, так что k8s не обслуживает трафик c для модулей, которые не готовы. Одно из наших приложений, интерфейс angular, не пройдет проверку готовности, когда действуют правила белого списка. Это эффективно перезапускает l oop и не будет обслуживать трафик c. Все остальные приложения / модули работают нормально и присоединяются к балансировщику нагрузки, как я и ожидал. При наличии белого списка, но без проверки готовности, приложение работает как положено. Я хотел бы сохранить проверки готовности на месте, чтобы обеспечить 0 периодов простоя при развертывании и более точное создание зеркал.
Как сохранить проверки готовности на месте, одновременно предотвращая попадание внешних кластеров c в кластер?
readinessProbe:
httpGet:
path: /
port: 4000
initialDelaySeconds: 90
periodSeconds: 5