Kubernetes. Часть 5: Настройка gMSA в Active Directory

Windows Server Active Directory Kubernetes gMSA

Group Managed Service Account

Для начала следует рассказать что же такое gMSA и зачем оно нам надо в контексте Kubernetes.

Сети на базе Windows обычно используют Active Directory (AD) для облегчения проверки подлинности и авторизации между пользователями, компьютерами и другими сетевыми ресурсами. Разработчики корпоративных приложений часто проектируют свои приложения для интеграции AD и работают на серверах, связанных с доменом, чтобы воспользоваться преимуществами интегрированной аутентификации Windows.

Хотя контейнеры Windows не могут быть соединены доменом, они все еще могут использовать идентификаторы домена Active Directory для поддержки различных сценариев проверки подлинности.

Для достижения этой цели можно настроить контейнер Windows для работы с Group Managed Service Account (gMSA), которая представляет собой специальный тип учетной записи службы, представленной в Windows Server 2012, предназначенную для того, чтобы позволить нескольким компьютерам обмениваться идентификационными данными без необходимости знать ее пароль.

При запуске контейнера с gMSA, контейнерный хост получает пароль gMSA от контроллера домена Active Directory и передает его экземпляру контейнера. Контейнер будет использовать учетные данные gMSA всякий раз, когда его учетная запись компьютера (SYSTEM) нуждается в доступе к сетевым ресурсам.

В этой статье объясняется, как начать использовать управляемые учетные записи службгруппы Active Directory с помощью контейнеров Windows.

Необходимые условия

Для запуска контейнера Windows с gMSA потребуется следующее:

  1. Домен Active Directory с по крайней мере одним контроллером домена под управлением Windows Server 2012+. Для использования gMSA нет требований к функциональному уровню лесов или доменов, но пароли gMSA могут распространяться только контроллерами доменов под управлением Windows Server 2012+.
  2. Разрешение на создание учетной записи gMSA. Чтобы создать учетную запись gMSA, вам нужно быть администратором домена или использовать учетную запись, которой было делегировано разрешение Create msDS-GroupManagedServiceAccount objects.

Разовая подготовка «Active Directory»

Если вы еще не создали gMSA в вашем домене, вам нужно будет создать корневой ключ службы распределения ключей (KDS). KDS отвечает за создание, ротацию и выпуск паролей gMSA для авторизованных узлов. Когда хост контейнера должен использовать gMSA для запуска контейнера, он свяжется с KDS, чтобы получить текущий пароль.

Чтобы проверить, был ли уже создан корневой ключ KDS, запустите следующий смдлет PowerShell в качестве администратора домена на контроллере домена или элементе домена с установленными инструментами AD PowerShell:

Get-KdsRootKey

Если команда возвращает идентификатор ключа, все готово. В противном случае необходимо создавать корневой ключ KDS.

Add-KdsRootKey -EffectiveImmediately

Хотя команда подразумевает, что ключ будет действовать немедленно, вам нужно будет подождать 10 часов, прежде чем корневой ключ KDS будет реплицирован и доступен для использования на всех контроллерах домена.

Оглавление

  1. установить Docker на Ubuntu 18.04 LTS (будет использована как мастер узел)
  2. установить Docker на Windows Server 2019 (1809) (будет использоваться как рабочий узел)
  3. установить Kubernetes на мастер узле
  4. добавить в Kubernetes узел на базе Windows Server 2019 (1809)
  5. настроить Active Directory для использования gMSA
  6. настроить Kubernetes для использования gMSA
  7. запустить Pod от имени gMSA в Kubernetes