Частный реестр докеров на Кубернетес - PullRequest
0 голосов
/ 13 апреля 2019

Я пытаюсь развернуть личный реестр докеров в Kubernetes, используя официальный образ Docker для реестра.Однако я получаю некоторые предупреждения о развертывании, а также не могу получить к нему доступ в модуле.

Вывод из контейнера реестра:

time="2019-04-12T18:40:21Z" level=warning msg="Ignoring unrecognized environment variable REGISTRY_PORT" 
time="2019-04-12T18:40:21Z" level=warning msg="Ignoring unrecognized environment variable REGISTRY_PORT_5000_TCP"  
time="2019-04-12T18:40:21Z" level=warning msg="Ignoring unrecognized environment variable REGISTRY_PORT_5000_TCP_ADDR" 
time="2019-04-12T18:40:21Z" level=warning msg="Ignoring unrecognized environment variable REGISTRY_PORT_5000_TCP_PORT" 
time="2019-04-12T18:40:21Z" level=warning msg="Ignoring unrecognized environment variable REGISTRY_PORT_5000_TCP_PROTO" 
time="2019-04-12T18:40:21Z" level=warning msg="Ignoring unrecognized environment variable REGISTRY_SERVICE_HOST" 
time="2019-04-12T18:40:21Z" level=warning msg="Ignoring unrecognized environment variable REGISTRY_SERVICE_PORT" 
time="2019-04-12T18:40:21.145278902Z" level=warning msg="No HTTP secret provided - generated random secret. This may cause problems with uploads if multiple registries are behind a load-balancer. To provide a shared secret, fill in http.secret in the configuration file or set the REGISTRY_HTTP_SECRET environment variable." go.version=go1.11.2 instance.id=988660e4-d4b9-4d21-a42e-c60c82d00a73 service=registry version=v2.7.1 
time="2019-04-12T18:40:21.145343563Z" level=info msg="redis not configured" go.version=go1.11.2 instance.id=988660e4-d4b9-4d21-a42e-c60c82d00a73 service=registry version=v2.7.1 
time="2019-04-12T18:40:21.149771291Z" level=info msg="Starting upload purge in 2m0s" go.version=go1.11.2 instance.id=988660e4-d4b9-4d21-a42e-c60c82d00a73 service=registry version=v2.7.1 
time="2019-04-12T18:40:21.163063574Z" level=info msg="using inmemory blob descriptor cache" go.version=go1.11.2 instance.id=988660e4-d4b9-4d21-a42e-c60c82d00a73 service=registry version=v2.7.1 
time="2019-04-12T18:40:21.163689856Z" level=info msg="listening on [::]:5000" go.version=go1.11.2 instance.id=988660e4-d4b9-4d21-a42e-c60c82d00a73 service=registry version=v2.7.1 

Файлы yaml дляразвертывание в Kubernetes:

104 apiVersion: extensions/v1beta1
105 kind: Deployment
106 metadata:
107   name: registry
108   namespace: docker
109 spec:
110   replicas: 1
111   template:
112     metadata:
113       labels:
114         name: registry
115     spec:
116       containers:
117       - resources:
118         name: registry
119         image: registry:2
120         ports:
121         - containerPort: 5000
122         volumeMounts:
123         - mountPath: /var/lib/registry
124           name: images
140       volumes:
141       - name: images
142         hostPath:
143           path: /mnt/nfs/docker-local-registry/images
150       nodeSelector:
151         name: master
152 ---
153 apiVersion: v1
154 kind: Service
155 metadata:
156   name: registry
157   namespace: docker
158 spec:
159   ports:
160   - port: 5000
161     targetPort: 5000
162   selector:
163     name: registry

Даже если я игнорирую эти предупреждения, доступ к реестру на уровне pod с помощью registry.docker:5000/image_name и registry.docker.svc.cluster.local/image_name не будет работать, поскольку хост не может быть разрешен.Я не хочу, чтобы реестр был открыт.Все, что я хочу, - это чтобы я мог получать изображения оттуда.

Ответы [ 2 ]

2 голосов
/ 13 апреля 2019

Не уверен, я полностью понимаю ваш вариант использования, но если вы хотите запустить модуль, основанный на изображении, полученном из внутреннего реестра, важно понимать, что не модуль, а dockerd на узле кластерапотянув изображение.Внутренние DNS-имена, такие как * svc.cluster.local, не могут быть разрешены там.По крайней мере, во многих средах K8 это так.Некоторые люди обсуждали это здесь: https://github.com/knative/serving/issues/1996 Это может помочь, если вы опубликуете, какого провайдера Kubernetes (GKE, EKS и т. Д.) Вы используете.Решение состоит в том, чтобы настроить узлы кластера для разрешения этих имен или для внешнего доступа к реестру с помощью входа.

0 голосов
/ 17 апреля 2019

Похоже, вы упаковали образ реестра в развертывание без проверки требований.Используя ваше развертывание, я подошел к той же ошибке.После некоторого времени попыток правильно упаковать его и прочитать требования на док-станции.Это изображение требует дополнительных настроек.Вам нужно хранить ваш htpasswd, создавать сертификаты для HTPASSWD и создавать каталог для изображений.Также вам нужно будет указать env vars и создать соответствующие пути в контейнерах.

REGISTRY_AUTH 
REGISTRY_AUTH_HTPASSWD_REALM 
REGISTRY_AUTH_HTPASSWD_PATH 
REGISTRY_HTTP_TLS_CERTIFICATE 
REGISTRY_HTTP_TLS_KEY

Вот учебник , который я использовал и успешно развернул реестр.Если у вас возникнут проблемы, просто обновите вопрос, и я постараюсь помочь.Также этот способ article может дать вам некоторые идеи (но будьте осторожны, поскольку файл docker compose требует некоторого редактирования, поскольку он не работает в форме, опубликованной в статье).

...