Кластеры Kubernetes, работающие на GKE или GCE, имеют встроенную поддержку для доступа к реестру контейнеров и не требуют дальнейшей настройки.
Как вы упомянули, что вы используете локальный кластер, вы не запускаете ни одного из них и используете только реестр контейнеров из GCP, поэтому, хотя у меня не было возможности проверить это (у меня нет кластер вне Google Cloud) процесс не должен отличаться от процесса извлечения изображения из частного реестра.
В вашем случае вы можете создать секрет с учетными данными аутентификации для реестра gcr.io следующим образом:
kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
ваш-реестр-сервер в этом случае, вероятно, будет https://gcr.io/[your-project-id]
Когда вы создали секрет с именем regcred
, вы можете настроить pods, чтобы использовать его для извлечения нужного изображения из реестра, добавив imagePullSecrets
, например:
apiVersion: v1
kind: Pod
metadata:
name: private-reg
spec:
containers:
- name: private-reg-container
image: [The image you want to pull]
imagePullSecrets:
- name: regcred
Затем вы можете проверить, правильно ли вытащено изображение, развернув этот модуль:
kubectl create -f [your pod yaml]
Ожидание создания модуля и его описание с помощью kubectl describe pod private-reg
и просмотр последовательности событий, аналогичной:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 4m default-scheduler Successfully assigned private-reg to gke-cluster-22-default-pool-e7830b6c-pxmt
Normal Pulling 4m kubelet, gke-cluster-22-default-pool-e7830b6c-pxmt pulling image "gcr.io/XXX/XXX:latest"
Normal Pulled 3m kubelet, gke-cluster-22-default-pool-e7830b6c-pxmt Successfully pulled image ""gcr.io/XXX/XXX:latest"
Normal Created 3m kubelet, gke-cluster-22-default-pool-e7830b6c-pxmt Created container
Normal Started 3m kubelet, gke-cluster-22-default-pool-e7830b6c-pxmt Started container