Не удалось извлечь изображение из частного реестра с ошибкой, необходимой для аутентификации - PullRequest
0 голосов
/ 13 января 2020

Я настроил личный реестр docker с самозаверяющими сертификатами.

docker run -d -p 443:5000 --restart=always --name registry -v `pwd`/auth:/auth 
-e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm"
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v `pwd`/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/domain.crt 
-e REGISTRY_HTTP_TLS_KEY=/domain.key

domain.crt и domain.key создаются с использованием OpenSSL.

Для подключения из удаленный хост,

cp domain.crt /etc/pki/ca-trust/source/anchors/mydockerregistry.com.crt
update-ca-trust
systemctl daemon-reload
systemctl restart docker

После этого я могу войти с удаленного хоста

docker login mydockerregistry.com --username=test
password: test

Я могу нажать / вытащить образ в этот реестр, и он успешен.

Аналогичным образом я попытался развернуть этот образ в кластере Kubernetes. Я создал секрет с реестром с именем пользователя и паролем.

kubectl create secret docker-registry my-registry --docker-server=mydockerregistry.com --docker-username=test --docker-password=test --docker-email=abc.com

Кроме того, я сделал самозаверяющие сертификаты из docker шагов реестра в рабочих узлах,

cp domain.crt /etc/pki/ca-trust/source/anchors/mydockerregistry.com.crt
update-ca-trust
systemctl daemon-reload
systemctl restart docker

С учетом имени в файле imagePullSecrets файла deploy.yaml. Я пытаюсь создать POD в кластере Kubernetes (сеть Calico), но не могу получить образ.

deploy.yaml

apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: test-image
  labels:
    app: test-image
    chart: test-image
spec:
  containers:
    - name: {{ .Chart.Name }}
      image: "mydockerregistry.com/test-image:latest"
      imagePullPolicy: Always
  imagePullSecrets:
    - name: my-registry

Предупреждение не удалось 45 с (x2 более 59 с) kubelet, kube-worker-02 Не удалось получить изображение "mydockerregistry.com/test-image:latest": rp c ошибка: code = Unknown des c = неавторизовано : требуется проверка подлинности
Предупреждение не удалось
45 с (x2 свыше 59 с) kubelet, kube-worker-02 Ошибка: ErrImagePull

Я проверил docker журналы реестра,

time = "2020-01-13T14: 58: 05.269921112Z" level = error msg = "ошибка аутентификации пользователя" ": ошибка аутентификации" go .version = go1.11.2 http.request.host = mydockerregistry.com http.request.id = 02fcccff-9a30-443 c -8a00-48bcacb90e99 http.request.method = GET http.request.remoteaddr = "10.76. 112.148: 35454 "http.request.uri =" / v2 / test-image / manifes / latest "http.request.useragent =" docker / 1.13.1 go / go1.10.8 kernel / 3.10.0-957.21.3.el 7.x86_64 os / linux arch / amd64 UpstreamClient (Go -http-client / 1.1) "vars.name = test-image vars.reference = latest

time =" 2020-01-13T14 : 58: 05.269987492Z " level = warning msg =" ошибка авторизации контекста: basi c проблема аутентификации для области "Registry Registry": ошибка аутентификации "go .version = go1.11.2 http.request.host = mydockerregistry.com http.request.id = 02fcccff-9a30-443 c -8a00-48bcacb90e99 http.request.method = GET http.request.remoteaddr = "10.76.112.148:35454" http.request.uri = "/ v2 / ca-config-calc / manifest / latest" http.request.useragent = "docker / 1.13.1 go / go1.10.8 kernel / 3.10.0-957.21.3.el7.x86_64 os / linux arch / amd64 UpstreamClient (Go -http-client / 1.1) "vars.name = test-image vars.reference = latest

Я могу docker войти в мой домен регистрации и вытащить образ с рабочего узла

Что-то мне не хватает в конфигурации?

Ответы [ 2 ]

0 голосов
/ 13 января 2020

Мне удалось успешно вытащить изображение из защищенного частного docker реестра в kubernetes, используя эту ссылку .

0 голосов
/ 13 января 2020

У вас есть опечатка в имени реестра в команде создания секрета.

kubectl create secret docker-registry my-registry --docker-server=myregistryregistry.com --docker-username=test --docker-password=test --docker-email=abc.com

Измените myregistryregistry.com на mydockerregistry.com, который вы использовали с docker login.

...