Текущая ситуация
У меня есть кластер Kubernetes, созданный в DigitalOcean.Я хочу развернуть образ Docker, размещенный в частном порядке и принадлежащий организации в Docker Hub.
- Название организации Docker Hub (пример): myorg
- Docker Hubимя репозитория (пример): myorg / mo-server
Итак, для проталкивания нового изображения я использую docker push myorg/mo-server
(Примечание. В приведенном выше примере есть тире (-
) во имя образа, который у меня есть и в настоящем имени)
Проблема
Когда я пытаюсь развернуть этот образ докера в kubernetes, используя kubectl
, развертывание всегда заканчиваетсяв состоянии ErrImagePull
.Сообщение об ошибке:
ailed to pull image "index.docker.io/myorg/mo-server": rpc error: code = Unknown desc = Error response from daemon: pull access denied for myorg/mo-server, repository does not exist or may require 'docker login'
То, что я пробовал до сих пор
Поскольку это частное хранилище, я заранее создаю секрет.Для этого я использую имя пользователя и электронную почту.
set DOCKER_REGISTRY_SERVER=https://index.docker.io/v1/
set DOCKER_USER=sarensw
set DOCKER_EMAIL=stephan@myorg.com
set DOCKER_PASSWORD=...
Учетные данные такие же, как и при использовании docker login
.Затем я создаю секрет, используя:
kubectl create secret docker-registry regcred
--docker-server=%DOCKER_REGISTRY_SERVER%
--docker-username=%DOCKER_USER%
--docker-password=%DOCKER_PASSWORD%
--docker-email=%DOCKER_EMAIL%
Затем я использую kubectl create
для создания нового развертывания.
kubectl create -f ci\helper\kub-deploy-staging.yaml
kub-deploy-staging.yaml
выглядит следующим образом:
apiVersion: apps/v1
kind: Deployment
metadata:
name: mo-server
spec:
replicas: 1
selector:
matchLabels:
app: mo-server
template:
metadata:
labels:
app: mo-server
spec:
containers:
- name: mo-server
image: index.docker.io/myorg/mo-server
imagePullPolicy: Always
command: [ "echo", "SUCCESS" ]
imagePullSecrets:
- name: regcred
Результат - ErrImagePull
, как описано выше.
Я вполне уверен, что image: index.docker.io/myorg/mo-server
является виновником, потому что это образ организации, который я пытаюсь использовать с обычной учетной записью.И все учебники по доступу к частному изображению не учитывают организации.
Так что я делаю не так?
(одна из многих похожих) ссылок: https://gist.github.com/rkuzsma/b9a0e342c56479f5e58d654b1341f01e