Вступление
Kubernetes позволяет нам настраивать учетные данные реестра частных контейнеров с помощью imagePullSecrets для каждого пода или для каждого пространства имен.
Однако, как администраторы кластера, мы можем сократить время, затрачиваемое на обслуживание, и завершить это раз и навсегда.
Мы открыли простое приложение Kubernetes с открытым исходным кодом под названием imagepullsecret-patcher, которое автоматически создает и исправляет imagePullSecrets для учетных записей служб по умолчанию во всех пространствах имен Kubernetes, чтобы разрешить доступ с проверкой подлинности для всего кластера в реестр частных контейнеров.
Недавно мы создали несколько локальных кластеров Kubernetes и начали выполнять на них рабочие нагрузки.
Кластеры должны получить доступ к нашему реестру частных контейнеров в Google Cloud, чтобы получить образа нашего частного Docker.
Мы можем сделать это, сначала создав секрет Kubernetes с помощью конфигурации Docker.
☸️ Генерация секрета TLS в Kubernetes
kubectl create secret docker-registry image-pull-secret \
-n <your-namespace> \
--docker-server=<your-registry-server> \
--docker-username=<your-name> \
--docker-password=<your-password> \
--docker-email=<your-email>
Как примечание, Реестр контейнеров Google (GCR) поддерживает метод аутентификации файла ключей JSON, в котором в качестве имени пользователя используется _json_key, а в качестве пароля – содержимое личного ключа учетной записи службы.
apiVersion: v1
kind: Pod
metadata:
name: my-app
namespace: my-namespace
spec:
containers:
- name: my-app
image: my-private-registry/my-app:v1
imagePullSecrets:
- name: image-pull-secret
kubectl patch serviceaccount default \
-p "{\"imagePullSecrets\": [{\"name\": \"image-pull-secret\"}]}" \
-n <your-namespace>
Мы пошли по второму пути, так что администраторам кластера нужно сделать это только один раз для каждого пространства имен, и разработчики также могут избегать добавления дополнительных строк в свои определения развертывания.
Однако мы ожидаем, что новые пространства имен будут создаваться очень часто, и это станет бременем для администраторов нашего кластера, поскольку им придется выполнять эту задачу повторно, когда новое пространство имен добавляется в кластеры.
Поэтому с учетом преимуществ автоматизации есть небольшое приложение Kubernetes Client-Go.
Реализация
Вот диаграмма, показывающая рабочий процесс imagepullsecret-patcher.
Для более подробной информации, пожалуйста, обратитесь к репозиторию GitHub.
Увидим это в действии
После развертывания в наших кластерах Kubernetes мы можем увидеть его в действии!