Как развернуть образ частной организации из Docker Hub в Kubernetes - PullRequest
0 голосов
/ 05 марта 2019

Текущая ситуация

У меня есть кластер 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

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Как я вижу, вы пытаетесь установить свою переменную с помощью команды "set", и, пожалуйста, попробуйте сейчас с "export", как указано в файле gist , за которым вы следуете

export DOCKER_REGISTRY_SERVER=https://index.docker.io/v1/
export DOCKER_USER=Type your dockerhub username, same as when you `docker login`
export DOCKER_EMAIL=Type your dockerhub email, same as when you `docker login`
export DOCKER_PASSWORD=Type your dockerhub pw, same as when you `docker login`

kubectl create secret docker-registry myregistrykey \
  --docker-server=$DOCKER_REGISTRY_SERVER \
  --docker-username=$DOCKER_USER \
  --docker-password=$DOCKER_PASSWORD \
  --docker-email=$DOCKER_EMAIL

Тогда попробуйте еще раз и сообщите нам результат, пожалуйста.

0 голосов
/ 05 марта 2019

Я подозреваю, что это происходит из-за переменной реестра docker, с помощью которой вы создали свой секрет, попробуйте заменить index.docker.io на registry.hub.docker.com, поскольку это официальный URL-адрес реестра dockerhub.Если вы используете облако Google, вы также можете попробовать docker.io

...