| Функция | Статус поддержки | Требования |
|---|---|---|
| LoadBalancer Service | Поддерживается | Опционально развернуть AWS Load Balancer Controller. Без этого контроллера возможности LoadBalancer ограничены. |
| Ingress | Поддерживается | Опционально развернуть AWS Load Balancer Controller. Опционально включить функциональность Ingress Class (после включения можно вручную выбирать ingress классы при создании ingress через форму). |
Подготовьте две подсети с тегом kubernetes.io/role/elb. Для общих подсетей добавьте тег kubernetes.io/cluster/<cluster-name>: shared. См. Добавление тегов к подсетям.
Если кластер EKS уже создан, импортируйте кластер Amazon EKS.
Убедитесь, что инструменты kubectl, Helm, AWS CLI и eksctl доступны перед развертыванием AWS Load Balancer Controller.
Примечание: После установки инструментов настройте данные для входа с помощью пользователя, создавшего кластер, через AWS CLI, и проверьте корректность установки AWS CLI и eksctl.
Заранее получите ACCOUNT_ID, REGION и CLUSTER_NAME, и замените <ACCOUNT_ID>, <REGION>, <CLUSTER_NAME> в документации на реальные значения.
Примечание: ACCOUNT_ID — это идентификатор аккаунта пользователя, создавшего кластер, REGION — регион кластера, CLUSTER_NAME — имя кластера.
Обновите и проверьте конфигурационный файл Kubeconfig.
Примечание: Подробную информацию о развертывании AWS Load Balancer Controller смотрите в официальной документации.
Настройка OIDC Provider
Кластеры Kubernetes используют OpenID Connect (OIDC) для управления идентификацией и связаны с URL-адресом издателя OIDC. Чтобы включить AWS Identity в кластере и разрешить IAM роли для Service Accounts, создайте IAM OIDC Provider, связанный с URL издателя OIDC кластера.
Выполните следующую команду в eksctl для настройки OIDC Provider:
Выполните следующие команды для создания IAM политики и создания Service Account с именем aws-load-balancer-controller, связанного с IAM ролью:
Развертывание AWS Load Balancer Controller в кластере
Выполните следующие команды в eksctl для развертывания AWS Load Balancer Controller:
Добавьте репозиторий eks-charts:
Обновите локальный репозиторий:
Разверните Helm Chart AWS Load Balancer Controller в кластере:
Примечание: aws-load-balancer-controller — это Service Account, созданный в разделе Настройка Service Account.
Вы можете создавать ingress и LoadBalancer сервисы одновременно или выбрать один из них в зависимости от потребностей.
Создание Ingress
В Container Platform перейдите в раздел Network > Ingress в левом меню.
Нажмите Create Ingress и выберите EKS Ingress Class для поля Ingress Class.
Выберите Protocol. По умолчанию — HTTP. Для HTTPS сначала создайте сертификат и выберите его.
Переключитесь в режим YAML и добавьте следующие аннотации. Подробности см. в документации по аннотациям:
Нажмите Create.
Создание LoadBalancer сервиса
В Container Platform перейдите в раздел Network > Services в левом меню.
Нажмите Create Service и выберите LoadBalancer для External Access.
Разверните раздел annotations и при необходимости заполните аннотации для LoadBalancer сервиса.
Нажмите Create.
Выполните следующую команду. Если она возвращает список кластеров, AWS CLI установлен корректно:
Выполните следующую команду. Если она возвращает список кластеров, eksctl установлен корректно:
Выполните aws sts get-caller-identity для получения ACCOUNT_ID. В ответе 651168850570 — это ACCOUNT_ID:
Выполните следующую команду для обновления файла Kubeconfig для указанного региона:
Выполните следующую команду для проверки файла Kubeconfig. Если возвращается информация, конфигурация корректна:
Выполните следующую команду для получения подсетей кластера:
Выполните следующую команду для получения деталей подсетей:
Выполните следующие команды для добавления тегов к подсетям. Замените <subnet-id> на реальные значения. См. Автоматическое обнаружение подсетей:
Добавьте тег kubernetes.io/role/elb к подсетям:
Добавьте тег kubernetes.io/cluster/<CLUSTER_NAME>: shared к общим подсетям:
При использовании протокола HTTPS заранее сохраните учетные данные HTTPS сертификата как Secret (типа TLS).
В Container Platform перейдите в раздел Configuration > Secrets в левом меню.
Нажмите Create Secret.
Выберите тип TLS и импортируйте или заполните Certificate и Private Key по необходимости.
Нажмите Create.