Docker login в Kubernetes

DNTSK · October 20, 2020

Довольно часто требуется организовать получение образов контейнеров из приватных репозиториев. В случае прямой работы с docker мы просто используем команду docker login и все работает.

Но вот в kubernetes мы не работаем с docker напрямую и тут сразу возникает вопрос - как залогиниться в наш приватный репозиторий.

Делается это довольно просто. Надо создать секрет с credentials:

# kubectl create secret docker-registry regcred --docker-server=private.docker.repo.com --docker-username=username --docker-password=mypas$w0rd [email protected]

Если же вы используете namespaces, то обязательно указывайте его в этой команде.

# kubectl create secret docker-registry regcred --docker-server=private.docker.repo.com --docker-username=username --docker-password=mypas$w0rd [email protected] -n namespace_name

Теперь надо просто укзать какой секрет использовать для получения образа:

apiVersion: v1
kind: Pod
metadata:
  name: private-reg
spec:
  containers:
  - name: private-reg-container
    image: <your-private-image>
  imagePullSecrets:
  - name: regcred

Проблема в том, что секреты между неймспейсами не могут быть переданы. Поэтому создавать секрет надо в каждом неймспейсе, где в этом есть необходимость. Но можно и просто копировать секреты между неймспейсами:

kubectl get secret regcred --namespace=namespace_name -oyaml | grep -v '^\s*namespace:\s' | kubectl apply --namespace=dev -f -

Посмотреть, что у нас там в секретах лежит можно так:

kubectl get secret regcred -т namespace_name --output=yaml

Twitter, Facebook