Раскройте частный реестр Docker внутри кластера Kubernetes по пути `/ registry` - PullRequest
2 голосов
/ 25 марта 2019

У меня есть личный реестр Docker внутри кластера Kubernetes 1.13, предоставляемый входным контроллером Kubernetes NGINX 0.23.0 и следующим Ingress объектом:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
  name: my-name
  namespace: my-namespace
spec:
  rules:
  - host: my-domain
    http:
      paths:
      - backend:
          serviceName: registry
          servicePort: 5000
        path: /?(.*)
  tls:
  - hosts:
    - my-domain
    secretName: my-secret

Это позволяет мне извлекать существующий образ какследует:

docker image pull my-cluster/my-image

Я бы не стал менять настройки так, чтобы реестр выставлялся на my-cluster/registry.Как это можно сделать, и возможно ли это?

Изменение path на /registry/?(.*) не сработало.docker login my-cluster/registry теперь выдает следующее сообщение об ошибке и docker image pull my-cluster/registry/my-image также не работает.Мое текущее предположение относительно основной причины состоит в том, что реестр также использует префикс registry (как настроено в Ingress) для своих внутренних перенаправлений.Если применимо, как это можно настроить (желательно в Ingress тоже)?

Error response from daemon: login attempt to https://my-cluster/v2/ failed with status: 404 Not Found

Ответы [ 2 ]

1 голос
/ 25 марта 2019

Теперь я пришел к выводу, что обращение к реестру Docker по URL-подобному расположению (например, my-cluster/registry) в отличие от хост-подобного расположения (например, my-cluster с дополнительным портом) невозможно.

Поэтому я зарезервирую отдельный IP-адрес и сертификат для registry.my-cluster и продолжу.

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

У меня похожая проблема, я пытаюсь выставить RegistryUI с входом nginx по пути / Registry.

во-первых, мне удалось выставить с этой конфигурацией nginx:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: registry-ingress
  namespace: devops
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /
    certmanager.k8s.io/cluster-issuer: letsencrypt-staging
    kubernetes.io/tls-acme: 'true'
spec:
  tls:
  - hosts:
    - registry.host.com
    secretName: letsencrypt-staging
  rules:
  - host: registry.host.com
    http:
      paths:
      - path: /
        backend:
          serviceName: registry-ui
          servicePort: 8080

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

spec:
  tls:
  - hosts:
    - host.com
    secretName: letsencrypt-staging
  rules:
  - host: host.com
    http:
      paths:
      - path: /registry
        backend:
          serviceName: registry-ui
          servicePort: 8080

Я хотел бы узнать, как вы пришли к выводу, что невозможно иметь работающие ссылки на хост / регистр?

сердечно спасибо

...