Первоначально опубликовано в блоге Admiralty.
Если вы работаете несколько кластеров Kubernetes, и нужна POD в кластере, чтобы позвонить на сервере API Kubernetes другого кластера, мы знаем вашу боль. До сих пор вы либо должны были полагаться на гетерогенные поставщики идентичности за пределами Kubernetes, либо повторяют удаленные учетные записи уплотнения.
Кластер Kubernetes обычно аутентифицирует клиентов API, используя два или более Модули аутентификации Отказ Один модуль аутентифицирует Kubernetes Сервисные счета , определенный в кластере; Другие модули аутентифицируются Пользователи определяется за пределами кластера.
Аутентификация пользователя зависит от вашего распределения Kubernetes: он может быть просто основан на статических файлах, содержащих списки паролей, токенов и/или клиентских сертификатов; Это часто использует открытый идентификатор соединения; Он также может использовать другие методы (LDAP, SAML, Kerberos и т. Д.) Честные веб-капли и прокси. Даже с общим модулем Connect Connect Connect, поставщик идентификации поддержки зависит от вашего распределения: Google Cloud IAM, Azure Active Directory, среди прочего.
Следовательно, в гибридной и/или мультиклудной архитектуре аутентификация пользователя Kubernetes может быть гетерогенной. POD в кластере пытается вызвать серверы API других кластеров как «пользователь», возможно, должен войти в несколько поставщиков идентичности. Даже если вы используете один поставщик идентификаторов через кластеры, вы все еще несете ответственность за монтажные секреты внутри PODS- Автоматизация аутентификации клиента Go Предназначен для вне кластера, инструментами с людьми. Чтобы сохранить вещи простыми, нам нужно договориться об общем, автоматизированном провайдере идентичности многоцветного стиля для стручек.
Kubernetes вполне может быть провайдером идентичности, которую мы ищем. Он уже обеспечивает удостоверения личности для PODS: каждый POD аутентифицируется с его локальными серверами API Kubernetes с помощью A Сервисная учетная запись В своем пространстве имен. Kubernetes даже автоматизирует создание токена и конфигурации POD:
- Контроллер учетной записи службы гарантирует, что в каждом пространстве имен существует как минимум «по умолчанию», хотя может быть создано больше.
- Контроллер токена генерирует токен для каждой учетной записи службы и ставит его в секрет в том же пространстве имен.
- Контроллер приема службы Accounts Accounts Autousouts Секрет службы учетной записи в каждом POD, либо для учетной записи службы «по умолчанию», либо указанному в спецификации POD.
В сочетании с Контроль доступа на основе ролей (RBAC) Счетные аккаунты обслуживания являются мощным решением для управления идентификацией и доступом (IAM) для API Kubernetes. Тем не менее, хотя токен службы может использоваться вне его пространства и кластера имен и кластера, автоматическое создание токена и регулировки томов работают только в пространстве имен учетной записи службы; Это ваша пересчет, чтобы получить актуальный токен и соответственно настроить ваш клиент.
Несколько многоцветных инструментов выдвинули файлы KubeConfig для хранения жетонов удаленного обслуживания учетных записей, поскольку они также могут хранить URL-адреса удаленного сервера API и корневые сертификаты, и они поддерживаются клиентом. Это то, что мы использовали сначала Когда мы открываемся многоцветный контроллер , но это было немного взлома. Файлы KubeConfig предназначены для использования клиентами Kubernetes Kubernetes, такие как Kubectl для аутентификации фактических пользователей, но ничто не мешает нам монтировать их внутри PODS для аутентификации удаленных учетных записей службы. Однако, что просто решает одну часть задачи и файлов KubeConfig, все еще должны быть созданы и установлены внутри стручков.
Сегодня мы с открытым ходом многоцветной учетной записи , используя учетные записи услуг как многоклеенные идентификаторы, со всеми необходимыми автоматизацией:
- Определение пользовательских ресурсов ServiceAccountimport (CRD) и контроллер для импорта учетных записей дистанционного обслуживания (и их секретов);
- Dynamic Acdiscation Webhook для учетной записи учетной записи службы авторусных услуг внутри аннотированных стручков, одинаковые способы регулярных учетных записей обслуживания являются автоматическими.
- Библиотека Go Bibreation Metherper Methods для создания конфигураций Client-Go от импорта службы учетной записи (а также общие методы для возврата к контекстам KubeConfig и обычные учетные записи службы).
Admiralty IO/Multi Cluster-Service-Account
Импорт и автомат Удаленные учетные записи службы Kubernetes
MultiCluster-Service-Accountax позволяет легко для стручек в кластере позвонить в API Kubernetes других кластеров. Он импортирует жетоны удаленной службы в локальные секреты и автоматически их внутри аннотированных стручков.
Многоцветная учетная запись-учетная запись может использоваться для запуска любых клиентов Kubernetes из другого кластера. Он также может быть использован для строительства операторов, которые контролируют ресурсы Kubernetes по нескольким кластерам, например, с Многоцветный контроллер Отказ
Почему? Проверить Blog Admiralty Post Представляете MulticLuster-Service-Account Отказ
Как это работает
MultiCluster-Service-Account состоит из:
Двоичный,
Kubemcsa
, чтобы загрузовать кластеры, позволяя им импортировать секреты учетной записи службы друг от друга- После Установка MultiCluster-Service-Account В Cluster1, позволяя Cluster1 для импорта учетной записи службы от Cluster2 так просто, как работает Если вы работаете с несколькими контекстами в одном файле Kubeconfig по умолчанию, илиЕсли вы работаете с несколькими файлами Kubeconfig.
- После Установка MultiCluster-Service-Account В Cluster1, позволяя Cluster1 для импорта учетной записи службы от Cluster2 так просто, как работает
- Пользовательский пользовательский …
Проверьте Readme Для получения более подробной информации, включая инструкции по установке. Вклад , Запросы на функции и отчеты об ошибках всегда приветствуются.
ПРИМЕЧАНИЕ. Проблеменное пространство MULTICLUSER-SERVICE-СЧЕТА — это только аутентификация клиентов Kubernetes. Для аутентификации многоцветной аутентификации на обслуживание к услугам, мы рекомендуем ISTIO MultiCluster .
Оригинал: «https://dev.to/admiralty/introducing-multicluster-service-account-1g1n»