Для начала следует разобраться с тем, что нового произошло с тех времен, как я рассказывал о поднятии кластера с Windows узлами:
актуальной версией кубернетеса является 1.22;
в качестве CNI кроме Flannel можно использовать еще и Calico;
вышел Windows Server 2022;
появилась возможность использовать CRI-containerD в том числе и в режиме HostProcess.
Немного слов про Docker
Мы не будем его использовать в контексте Kubernetes. Нас теперь интересует только ContainerD.
Тем не менее удалять Docker рано, т.к. он всё еще нужен для создания образов.
Теперь перейдем к самому вкусному
Я расскажу как настроить Kubernetes кластер с узлами на базе Windows Server 2022 и CRI-ContainerD. В качетсве CNI для кластера будет Calico.
Для начала следует рассказать что же такое gMSA и зачем оно нам надо в контексте Kubernetes.
Сети на базе Windows обычно используют Active Directory (AD) для облегчения проверки подлинности и авторизации между пользователями, компьютерами и другими сетевыми ресурсами. Разработчики корпоративных приложений часто проектируют свои приложения для интеграции AD и работают на серверах, связанных с доменом, чтобы воспользоваться преимуществами интегрированной аутентификации Windows.
Хотя контейнеры Windows не могут быть соединены доменом, они все еще могут использовать идентификаторы домена Active Directory для поддержки различных сценариев проверки подлинности.
Так же, как и в случае с Linux, будем считать что у нас есть только что установленный Windows Server 2019 (1809). В случае, если это именно 2019, нам вполне достаточно Server Core.
(Add-WindowsFeature Containers).RestartNeeded
Если результатом команды будет Yes, то перезагружаем компьютер.
Данный проект помогает реализовать TLS подключение к Docker Remote API с аутентификацией по сертификату с проверкой отзыва клиентского сертификата.
Операционной системой на сервере является Windows Server 1803+.
Удаленное управление Docker
Для нужд удаленного управления Docker'ом, Docker умеет предоставлять веб-API.
Это API может как вовсе не требовать аутентификации (что крайне не рекомендуется), так и использовать аутентификация по сертификату.
Проблема заключается в том, что родная аутентификация по сертификату не предусматривает проверку отзыва сертификата.
А это может стать проблемой.
Сборка Docker образа
Для сборки образа нам потребуется публичный сертификат центра сертификации (ca.cer), который будет выдавать сертификаты пользователям.
Этот сертификат будет установлен в доверенные корневые центры сертификации контейнера, в котором будет запущен наш прокси.
Установка его необходима для процедуры проверки сертификата.