Рейтинг:2

Развертывание контроллера AWS Load Balancer для службы EKS Fargate API

флаг ar

Контекст

Я пытаюсь развернуть контейнерную службу API в кластере EKS Fargate и заставить ее обслуживать запросы с внешних интернет-адресов в качестве чрезмерно спроектированного POC/опыта обучения. Я сталкиваюсь с проблемами, когда дело доходит до понимания того, как направить сетевой трафик на службу Fargate. Моим основным руководством для проекта являются эти два учебника:

Но моя неопытность проявляется, когда дело доходит до принятия решения о том, стоит ли мне пытаться настроить шлюз API, балансировщик нагрузки приложений, контроллер входящего трафика ALB или использовать контроллер балансировщика нагрузки AWS, мои текущие самые дальние попытки были с последним. У меня большая часть инфраструктуры и компонентов EKS/Fargate работает с использованием Terraform и файлов .yaml для использования с kubectl.

Настраивать

У меня есть следующее развертывание с одной конфигурацией Terraform, которая успешно развертывается:

  • VPC с частной и общедоступной подсетями и включенными шлюзами nat и vpn.
  • Кластер EKS с coredns, kube-proxy, vpc-cni и одним профилем fargate, который выбирает пространство имен моего приложения и выделяет узлы частным подсетям VPC.

У меня есть следующие конфигурации '.yaml', которые согласуются между разными попытками метода:

  • пространство имен.yaml (вид: пространство имен)
  • развертывание.yaml (вид: развертывание)
  • deploy_secret.yaml (вид: Секрет)
  • сервис.yaml (вид: сервис, спецификация: тип: NodePort)

Я рад опубликовать подробности любого из этих файлов, но этот пост уже очень длинный.

Проблема

Я просто подробно расскажу о попытке заставить AWS Load Balancer Controller работать, так как именно он использовался в учебном пособии EKS Workshop, но, пожалуйста, дайте мне знать, если мне определенно следует использовать один из других методов. Я также должен предварить, что проблемы возникают как с моим собственным приложением, так и с образцом приложения без каких-либо изменений.

После того, как я развернул свою инфраструктуру с помощью Terraform и успешно настроить и установить контроллер AWS LB Я создаю развертывание и сервис с помощью kubectl. Проблема начинается, когда я пытаюсь создать объект Ingress (?), предоставленная конфигурация выглядит так:

---
Версия API: networking.k8s.io/v1beta1
вид: Вход
метаданные:
  пространство имен: мое пространство имен
  имя: вход-myapp
  аннотации:
    kubernetes.io/ingress.class: альб
    alb.ingress.kubernetes.io/scheme: выход в интернет
    alb.ingress.kubernetes.io/целевой тип: ip
спецификация:
  правила:
    - http:
        пути:
          - дорожка: /*
            серверная часть:
              serviceName: сервис-myapp
              сервисПорт: 80

Это возвращает сообщение об ошибке ошибка: ошибка при проверке "ingress.yaml":, я опустил детали, потому что это решено в этот вопрос ведущий к этому запрос на вытягивание. Я перенастроил файл, чтобы он соответствовал измененному определению конфигурации, которое теперь выглядит так:

Версия API: networking.k8s.io/v1
вид: Вход
метаданные:
  имя: вход-myapp
  пространство имен: my-namesace
  аннотации:
    kubernetes.io/ingress.class: альб
    alb.ingress.kubernetes.io/целевой тип: ip
    alb.ingress.kubernetes.io/scheme: выход в интернет
спецификация:
  по умолчаниюБэкенд:
    оказание услуг:
      имя: сервис-myapp
      порт:
        номер: 80
  правила:
    - http:
        пути:
          - дорожка: /*
            серверная часть:
              оказание услуг:
                имя: сервис-myapp
                порт:
                  номер: 80
            тип_пути: специфика реализации

Это приводит к ошибке:

Ошибка сервера (InternalError): ошибка при создании "ingress.yaml": Произошла внутренняя ошибка: не удалось вызвать веб-перехватчик "vingress.elbv2.k8s.aws": Сообщение "https://aws-load-balancer-webhook-service.kube" -system.svc:443/validate-networking-v1-ingress?timeout=10s": срок действия контекста превышен

Я последовал вместе с эта почта описывая аналогичную проблему, поэтому я убедился, что все мои ссылки на LBC используют версию 2.4.0, но не влияют на проблему. Я тоже просмотрел эти две темы (Ошибка GitHub и Ветка Reddit), но я изо всех сил пытаюсь понять, какое решение было в этих случаях.

Я предполагаю, что какая-то часть процесса не может достичь внешнего адреса при проверке нового входного объекта/конфигурации, но я не уверен, какой компонент пытается сделать этот запрос, и является ли это проблемой разрешения или сети, которая предотвращает Это. Любые рекомендации или подсказки приветствуются!

Рейтинг:0
флаг za

Вам нужно создать группу безопасности AWS для портов 443 и портов модуля, с которым он общается. (443 -> хх?)

Затем добавьте это правило к узлам в вашем кластере. Время ожидания вашего запроса истекло, поскольку AWS удалила все разрешения в кластерах EKS на узлах.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.