Docker login в Kubernetes
Довольно часто требуется организовать получение образов контейнеров из приватных репозиториев.
В случае прямой работы с 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
Комментарии: