Предоставление контролю EKS доступа к дополнительным VPC для централизованной аутентификации OIDC.

Вопрос или проблема

У нас есть два аккаунта AWS (A и B), на каждом из которых развернут частный EKS (k8s-A и k8s-B). VPC соединены через Transit Gateway. Мы знаем, что рабочие узлы могут общаться друг с другом, потому что из k8s-A мы можем вызвать сервис на k8s-B через LB.

Теперь на k8s-B мы развернули dex и gangway на обоих k8s-A и k8s-B (если вы знаете лучшую альтернативу, не стесняйтесь упомянуть об этом).

На k8s-B настройка Dex+Gangway для OIDC аутентификации заработала как по волшебству практически из коробки. На k8s-A мы не можем заставить это работать. Конкретно, похоже, что Control Plane в A не может получить доступ к частному LB на B.

В логах API кубернетес (A) мы можем видеть каждые несколько секунд:

oidc authenticator: initializing plugin: Get "https://dex.mycompany.cloud/.well-known/openid-configuration": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

Я знаю, что Control Plane находится в управляемом AWS VPC, но можем ли мы как-то предоставить ему доступ к VPC в B как-то?

Ответ или решение

Доступ контрольной плоскости EKS к дополнительным VPC для централизованной OIDC аутентификации

Ваша проблема, касающаяся соединения контрольной плоскости Amazon EKS в аккаунте A с развернутым Dex в аккаунте B в контексте OIDC аутентификации, вызвана несколькими факторами сетевой архитектуры AWS и особенностями управления доступом. Давайте глубже разберем проблему и предложим возможные решения.

1. Понимание архитектуры и ограничений

Контрольная плоскость Amazon EKS развернута в управляемом VPC, и, как следствие, напрямую не имеет возможностей для настройки маршрутизации или доступа, как это возможно для рабочих узлов. Если ваша контрольная плоскость в аккаунте A не может обращаться к внутреннему балансировщику нагрузки (LB) в VPC аккаунта B, это может быть связано с тем, что контрольная плоскость не видит этот LB в сетевом контексте.

2. Решения по настройке доступа

Чтобы предоставить контрольной плоскости EKS доступ к Dex на другом VPC, рассмотрите следующие шаги:

a. Настройка peering или Transit Gateway:

Поскольку ваши VPC соединены через Transit Gateway, вам нужно убедиться, что все необходимые маршруты настроены корректно.

  • Убедитесь, что маршруты в таблицах маршрутизации обоих VPC включают возможность доступа к другим VPC.
  • Проверьте, что маршруты для CIDR диапазонов (разделов) VPC настроены на доступ из управления VPC в управление другого VPC и наоборот.

b. Настройка правил безопасности (Security Groups):

Убедитесь, что правила безопасности вашего внутреннего LB на k8s-B настроены на прием трафика из CIDR диапазонов VPC, где расположена контрольная плоскость EKS (k8s-A). Это может включать:

  • Исключительные правила для портов, используемых OIDC (обычно это 443 для HTTPS).
  • Разрешить inbound-трафик от IP диапазонов вашего VPC в аккаунте A.

c. Настройка Network ACL:

Проверьте настройки Network ACL, чтобы они не блокировали трафик между вашими двумя VPC. Network ACL должны быть должным образом настроены для разрешения входящего и исходящего трафика.

3. Доступ через публичное DNS имени

Если подключение через приватный балансировщик нагрузки вызывает проблемы, в качестве временного решения можно рассмотреть возможность использования публичного API и переключить Dex на прием публичного трафика:

  • Убедитесь, что у вас есть замечательная система аутентификации и шифрования, чтобы избежать утечек.
  • Измените конфигурацию Dex в кластере B так, чтобы она могла принимать соединения из публичной сети (например, через AWS API Gateway).

4. Логирование и отладка

Для разработки более надежного подхода:

  • Активируйте более детальное логирование как на стороне контрольной плоскости A, так и на Dex в B.
  • Отслеживайте любые сетевые вызовы и их статус через AWS CloudTrail, чтобы убедиться, что нет неожиданных блокировок.

Заключение

С вводом вышеуказанных решений вы сможете разрешить проблемы с OIDC аутентификацией между вашими кластерами EKS в разных аккаунтах. Убедительно рекомендую продолжить тщательную проверку всех настроек сети, учитывая рекомендации по безопасной конфигурации. Убедитесь, что ваше облачное окружение остается защищенным и управляемым, поскольку это критически важно для любой инфраструктуры.

Если у вас остались вопросы или необходима дополнительная помощь в реализации, не стесняйтесь обращаться.

Оцените материал
Добавить комментарий

Капча загружается...