Как настроить гавань на кластере k8s? - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь развернуть Harbor (частный docker реестр) в кластере k8s (предоставленном Rancher) с помощью helm (values.yaml). ниже мой valuse.yaml.

  1. Сеть
    У меня nginx перед входом k8s nginx контроллер.
    nginx (http 301 перенаправить на https, пример. http://harbor.mydomain.com -> https://harbor.ssgadm.com) -> вход- nginx -> портовый сервис

  2. Порт с nginx
    https://github.com/goharbor/harbor/blob/master/docs/1.10/install-config/troubleshoot-installation.md#using - nginx или балансировка нагрузки
    Команда Harbour сообщает, что если Harbor работает за прокси nginx, удалите заголовок 'X-Forwarded-Proto', поэтому я добавил входную аннотацию в values.yaml


Вот мои проблемы.
1. Успешный вход в систему docker, но не удалось sh docker изображение с сообщением: отказано: запрошенный доступ к ресурсу запрещен

не видит конечную точку реестра Minio на веб-странице порта
не может найти конечные точки!

Итак, не могли бы вы помочь мне решить проблемы?

---
  harborAdminPassword: "admin"
  secretKey: "add-your-secret0"
  logLevel: "info"
  expose: 
    type: "ingress"
    ingress: 
      hosts: 
        core: "harbor.mydomain.com"
        notary: "harbor.notary.mydomain.com"
      annotations:
        ingress.kubernetes.io/proxy-body-size: "0"
        ingress.kubernetes.io/ssl-redirect: "true"
        nginx.ingress.kubernetes.io/proxy-body-size: "0"
        nginx.ingress.kubernetes.io/ssl-redirect: "true"
        nginx.org/server-snippets: |
          location / {
            proxy_hide_header 'X-Forwarded-Proto'
          }

          location /v2/ {
            proxy_hide_header 'X-Forwarded-Proto'
          }

          location /service/ {
            proxy_hide_header 'X-Forwarded-Proto'
          }
    loadBalancer: 
      IP: ""
    tls: 
      enabled: false
      secretName: ""
  externalURL: "https://harbor.mydomain.com"
  persistence: 
    imageChartStorage: 
      type: "s3"
      disableredirect: true
      azure: 
        accountname: ""
        accountkey: ""
        container: ""
      gcs: 
        bucket: ""
        encodedkey: ""
      s3: 
        bucket: "docker"
        region: "us-east-1"
        accesskey: "minio"
        secretkey: "minio"
        regionendpoint: "https://minio.mydomain.com"
      oss: 
        bucket: ""
        region: ""
        accesskeyid: ""
        accesskeysecret: ""
      swift: 
        authurl: "https://storage.myprovider.com/v3/auth"
        username: ""
        password: ""
        container: ""
    enabled: true
    persistentVolumeClaim: 
      registry: 
        storageClass: "nfs-provisioner"
        size: "1Gi"
        existingClaim: ""
      chartmuseum: 
        storageClass: "nfs-provisioner"
        size: "1Gi"
        existingClaim: ""
      jobservice: 
        storageClass: "nfs-provisioner"
        size: "1Gi"
        existingClaim: ""
      database: 
        storageClass: "nfs-provisioner"
        size: "1Gi"
        existingClaim: ""
      redis: 
        storageClass: "nfs-provisioner"
        size: "1Gi"
        existingClaim: ""
  jobservice: 
    jobLogger: "database"
  database: 
    type: "internal"
    external: 
      host: ""
      username: ""
      password: ""
      coreDatabase: "registry"
      clairDatabase: "clair"
      notaryServerDatabase: "notary_server"
      notarySignerDatabase: "notary_signer"
      sslmode: "disable"
      port: "5432"
  redis: 
    type: "internal"
    external: 
      host: ""
      port: "6379"
      password: ""
  clair: 
    enabled: true
  notary: 
    enabled: false
  chartmuseum: 
    enabled: true
  cert: 
    enabled: true

1 Ответ

0 голосов
/ 28 февраля 2020

Убедитесь, что у вас есть все обязательные условия .

Убедитесь, что вы предоставили сертификаты для порта и Docker.

После создания файлов ca.crt, yourdomain.com.crt и yourdomain.com.key вы должны предоставить их в Harbour и Docker и перенастроить Harbour для их использования. Наконец, перезапустите Docker Engine.

Чтобы включить отправку изображений в docker реестр, выполните следующие команды:

Вам необходимо включить пространство имен для Docker Hub, чтобы связать его с вашей учетной записью. Пространство имен совпадает с именем вашей учетной записи Docker Hub. Вам необходимо переименовать изображение в YOUR_DOCKERHUB_NAME / docker - кит.

Пометить изображение перед нажатием:

$ docker tag your_image YOUR_DOCKERHUB_NAME/your_image

, и тогда вы сможете в pu sh it.

$ docker push YOUR_DOCKERHUB_NAME/your_image

Вы также продублировали аннотацию nginx.ingress.kubernetes.io/proxy-body-size в файле конфигурации.

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

Чтобы настроить этот параметр глобально для всех правил входа, значение размера тела прокси-сервера может быть задано в NGINX ConfigMap. Чтобы использовать пользовательские значения в правиле Ingress, определите эти аннотации:

nginx.ingress.kubernetes.io/proxy-body-size: 8m

попробуйте добавить 0m .

Также проверка работоспособности среды: должен произойти сбой без SSL, включите внешние ss в базе данных:

sslmode=require

Если возникает дополнительная проблема, проверьте журналы установленной гавани:

$ kubectl logs -n harbor your-harbor-pod
...