Kubernetes с частным реестром докеров v2 - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь настроить личный реестр докеров для работы с Kubernetes.Я настроил реестр, и мастер-сервер, на котором работает кластер Kubernetes, может без проблем извлекать образы из реестра.Кроме того, я следовал документам Kubernetes, в которых объясняется, как подключиться к частному реестру докеров (см. https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/).

Однако, когда я пытаюсь извлечь образы из реестра Docker через Kubernetes, я получаю следующую ошибку:

Failed to pull image "xxx.xxx.xxx.xxx:5000/helloworld:latest": rpc error: code = Unknown desc = Error response from daemon: Get https://xxx.xxx.xxx.xxx:5000/v1/_ping: x509: certificate signed by unknown authority

Я заметил, что ссылка, оканчивающаяся на v1 / _ping, неверна, должна быть v2 / _ping.

Я выполнил следующую команду, чтобы сгенерировать свой regcred:

kubectl create secret docker-registry regcred --docker-server="https://xxx.xxx.xxx.xxx:5000/v2/" --docker-username=xxxxx --docker-password=xxxxxx --docker-email=xxxx@xxx.xx

Я также немного погуглил и обнаружил следующее: https://github.com/kubernetes/kubernetes/issues/20786

Эти предложения, к сожалению, не помогли, но они указывают на то, что больше людей сталкиваются с той же проблемой.

Кто-нибудь знает, как правильно настроить реестр Docker v2 с Kubernetes?

Спасибо

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018
Secure regisrty 

Registry servser side (http://tech.paulcz.net/2016/01/deploying-a-secure-docker-registry/)
1.mkdir -p /opt/registry/{data,ssl,config}
2. docker run --rm \
  -v /opt/registry/ssl:/certs \
  -e SSL_IP=172.17.8.101 \
  -e SSL_DNS=registry.local \
  paulczar/omgwtfssl

3.create /opt/registry/config/registry.env
# location of registry data
REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/opt/registry/data

# location of TLK key/cert
REGISTRY_HTTP_TLS_KEY=/opt/registry/ssl/key.pem
REGISTRY_HTTP_TLS_CERTIFICATE=/opt/registry/ssl/cert.pem

# location of CA of trusted clients
REGISTRY_HTTP_TLS_CLIENTCAS_0=/opt/registry/ssl/ca.pem


4.docker run -d --name registry \
  -v /opt/registry:/opt/registry \
  -p 443:5000 --restart always \
  --env-file /opt/registry/config/registry.env \
  registry:2

5.$ docker pull alpine
Using default tag: latest
latest: Pulling from library/alpine
Digest: sha256:78a756d480bcbc35db6dcc05b08228a39b32c2b2c7e02336a2dcaa196547a41d
Status: Downloaded newer image for alpine:latest
$ docker tag alpine 127.0.0.1/alpine
$ docker push 127.0.0.1/alpine

Registry client side

6.$ sudo mkdir -p /etc/docker/certs.d/172.17.8.101 (make in all node )
$ sudo scp core@172.17.8.101:/opt/docker/registry/ca.pem \
    /etc/docker/certs.d/172.17.8.101/ca.crt

7.$ docker pull 172.17.8.101/alpine
Using default tag: latest
latest: Pulling from alpine

340b2f9a2643: Already exists 
Digest: sha256:a96155be113bb2b4b82ebbc11cf1b511726c5b41617a70e0772f8180afc72fa5
Status: Downloaded newer image for 172.17.8.101/alpine:latest

mkdir 35.187.233.18`enter code here`2
cd 35.187.233.182/
rsync -avz 35.185.179.71:/opt/registry/ssl/ca.pem .
mv ca.pem ca.crt
docker run --rm   -v /opt/registry/ssl:/certs   -e SSL_IP=35.185.179.71   -e SSL_DNS=registry.local   paulczar/omgwtfssl
docker run -d --name registry3   -v /opt/registry:/opt/registry   -p 443:5000 --restart always   --env-file /opt/registry/config/registry.env   registry:2
0 голосов
/ 20 сентября 2018

Решил эту проблему, мастер-сервер по умолчанию не запускает ваши развертывания.Поэтому мне нужно было сделать следующее на моих подчиненных серверах:

  1. Добавить сертификат в /etc/docker/certs.d/my-registry-domain.com[:port]/ca.crt
  2. Do docker login my-registry-domain.com [: port]
  3. Добавить секрет реестра docker в Kubernetes (см. https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/) --docker-server = docker-registry-domain.com/v2/ или v1 в зависимости от того, что вы запускаете
  4. Теперь он успешно извлечет изображения из реестра Docker.

Надеюсь, это кому-нибудь поможет.

...