• Русский
  • Настройка учетных данных для Redis, PostgreSQL, ObjectStorage (s3) и учетных записей

    В этом документе описаны методы настройки учетных данных, необходимых для экземпляров Harbor.

    Требования

    • Данный документ применим к версиям Harbor 2.12 и выше, предоставляемым платформой. Он отделен от платформы и основан на таких технологиях, как Operator.

    Учетные данные Redis

    Требования

    Harbor предъявляет следующие требования к развертыванию Redis:

    • Рекомендуется использовать Redis версии 7.x.
    • Поддерживаются режимы развертывания Standalone и Sentinel. Режим Redis Cluster не поддерживается.

    Подробные инструкции по развертыванию Redis см. в Официальной документации Harbor.

    Формат учетных данных

    Создайте Secret в namespace, где планируется развертывание экземпляра Harbor, выберите тип Opaque и добавьте следующие поля в конфигурацию:

    ПолеОписаниеАрхитектураПример значения
    hostАдрес подключения к Redis. Убедитесь, что сервис Harbor может подключиться к нему.standalone192.168.1.1
    portПорт подключения к Redis. Убедитесь, что сервис Harbor может подключиться к этому порту.standalone6379
    passwordПароль учетной записи Redis. Обязателен при включенной аутентификации Redis.standalone, sentinelpassword111
    addressАдрес узла Sentinel.sentinel192.168.1.1:26379,192.168.1.2:26379,192.168.1.3:26379
    masterNameИмя группы экземпляров, контролируемой Sentinel в sentinel.conf.sentinelmymaster
    WARNING
    1. Если заданы обе конфигурации — sentinel и standalone, приоритет имеет конфигурация sentinel.
    2. При развертывании с шаблонами высокой доступности, если настроен standalone Redis, ответственность за обеспечение высокой доступности Redis лежит на пользователе.

    Пример для Standalone:

    apiVersion: v1
    data:
      host: <base64 encode host>
      port: <base64 encode port>
      password: <base64 encode password>
    kind: Secret
    metadata:
      name: harbor-redis
      namespace: <ns-of-harbor-instance>
    type: Opaque

    Пример для Sentinel:

    apiVersion: v1
    data:
      password: <base64 encode password>
      address: <base64 encode address>
      masterName: <base64 encode masterName>
    kind: Secret
    metadata:
      name: harbor-redis
      namespace: <ns-of-harbor-instance>
    type: Opaque

    Обновление учетных данных

    Если необходимо изменить информацию о подключении к Redis после развертывания экземпляра Harbor, следует обновлять ресурс экземпляра Harbor напрямую, а не изменять содержимое учетных данных. Подробности см. в разделе Настройка учетных данных Redis.

    Использование Alauda Cache Service для Redis OSS

    При предоставлении Redis через Alauda Cache Service для Redis OSS необходимо учитывать следующие важные требования:

    • Рекомендуется использовать Redis версии 7.x.
    • Для типа архитектуры выберите режим Sentinel.
    • Для шаблона параметров выберите шаблон с RDB-персистентностью, например system-rdb-redis-7.2-sentinel.
    • Включите сохранение данных с квотой хранилища не менее 2 ГБ.
    • В сценариях с несколькими сетевыми интерфейсами Redis Sentinel использует IP-адрес по умолчанию узла для инициализации адреса доступа к каждому узлу Redis. Не поддерживается доступ к узлам с IP, отличным от IP по умолчанию, и открытым портом. Для создания экземпляров Redis используйте метод доступа LoadBalancer. Подробнее см. в документации по функционалу Alauda Cache Service для Redis OSS.
    WARNING

    При создании экземпляра Redis автоматически создается Secret с информацией для подключения, который можно использовать напрямую для развертывания Harbor. Этот ресурс Secret можно отфильтровать по метке middleware.instance/type: Redis.

    kubectl get secret -n <ns-of-redis-instance> -l middleware.instance/type=Redis

    Если экземпляр Redis и экземпляр Harbor находятся в разных namespace, необходимо скопировать ресурс Secret в namespace экземпляра Harbor.

    Для получения дополнительных параметров развертывания Redis и требований к высокой доступности см. Документация по развертыванию Redis.

    Учетные данные PostgreSQL

    Требования

    Harbor предъявляет следующие требования к версиям PostgreSQL:

    • Для Harbor 2.12.x требуется PostgreSQL версии 14.x

    Формат учетных данных

    Создайте Secret в namespace, где планируется развертывание экземпляра Harbor, выберите тип Opaque и добавьте следующие поля в конфигурацию:

    ПолеОписаниеПример значения
    hostАдрес подключения к базе данных. Убедитесь, что сервис Harbor может подключиться к этому адресу.192.168.1.1
    portПорт подключения к базе данных. Убедитесь, что сервис Harbor может подключиться к этому порту.5432
    usernameИмя пользователя базы данныхpostgres
    passwordПароль пользователя базы данныхpassword111
    databaseИмя базы данных. Эта база должна уже существовать и быть пустой. Для создания базы можно использовать команду create database <database name>harbor_db
    sslmodeВключение SSL для подключения к базе данных. Доступные опции:
    - require: Требовать SSL-подключение
    - disable: Отключить SSL
    - verify-ca: Проверять сертификат сервера
    - verify-full: Проверять сертификат и имя хоста. Подробнее о sslmode
    require

    Пример YAML:

    apiVersion: v1
    data:
      database: <base64 encode database name>
      host: <base64 encode host>
      password: <base64 encode password>
      port: <base64 encode port>
      username: <base64 encode username>
      sslmode: <base64 encode sslmode>
    kind: Secret
    metadata:
      name: harbor-database
      namespace: <ns-of-harbor-instance>
    type: Opaque

    Как создать базу данных на экземпляре PG

    Подключитесь к экземпляру PG с помощью psql CLI и выполните команду для создания базы данных:

    create database <database name>;

    sslmode

    sslmode — параметр, управляющий безопасностью соединения между сервисом Harbor и базой данных PostgreSQL. Доступные опции:

    • require: Требовать SSL-подключение
    • disable: Отключить SSL-подключение
    • verify-ca: Проверять сертификат сервера
    • verify-full: Проверять сертификат сервера и имя хоста

    При использовании Alauda support for PostgreSQL параметр sslmode должен быть установлен в require.

    При использовании внешнего PostgreSQL значение sslmode зависит от вашей конфигурации PostgreSQL.

    Обновление учетных данных

    Если необходимо изменить информацию о подключении к PostgreSQL после развертывания экземпляра Harbor, следует обновлять ресурс экземпляра Harbor напрямую, а не изменять содержимое учетных данных. Подробности см. в разделе Настройка учетных данных PostgreSQL.

    Использование PostgreSQL, предоставляемого Data Services

    Data Services поддерживает развертывание экземпляров PostgreSQL, которые можно использовать для развертывания Harbor. При создании экземпляра PostgreSQL учитывайте следующие важные требования:

    1. Выберите версию PostgreSQL, соответствующую версии Harbor, например, для Harbor 2.12.x требуется PostgreSQL 14.x
    2. Квота хранилища должна быть не менее 5 Ги

    При создании экземпляра PostgreSQL автоматически создается Secret с информацией для подключения. Этот ресурс Secret можно отфильтровать по метке middleware.instance/type: PostgreSQL.

    kubectl get secret -n <ns-of-postgresql-instance> -l middleware.instance/type=PostgreSQL | grep -E '^postgres'

    Этот Secret содержит информацию host, port, username, password. Необходимо дополнить его полями database и sslmode (установить в require) и создать новый Secret в namespace экземпляра Harbor.

    При создании экземпляра Postgres автоматически создается Secret, начинающийся с postgres и содержащий информацию для подключения. Этот Secret можно использовать напрямую для развертывания Harbor и отфильтровать с помощью команды:

    kubectl get secret -n <ns-of-postgres-instance> -l middleware.instance/type=PostgreSQL

    Если экземпляр Postgres и экземпляр Harbor находятся в разных namespace, необходимо скопировать ресурс Secret в namespace экземпляра Harbor.

    Для получения дополнительных параметров развертывания PostgreSQL и требований см. Документация по развертыванию PostgreSQL.

    Учетные данные учетной записи Harbor

    Создайте Secret в namespace, где планируется развертывание экземпляра Harbor, выберите тип Opaque и добавьте следующие поля в конфигурацию:

    ПолеОписаниеПример значения
    passwordУстановите пароль для учетной записи администратора по умолчанию. Пароль должен содержать буквы, цифры и специальные символы, быть не менее 8 символов и не может быть пустымpassword111@
    namespaceУкажите тот же namespace, что и у экземпляра Harbortools

    Обратите внимание, что имя пользователя по умолчанию для Harbor — admin.

    apiVersion: v1
    data:
      password: <base64 encode password>
    kind: Secret
    metadata:
      name: harbor-admin-password
      namespace: <ns-of-harbor-instance>
    type: Opaque

    Учетные данные Object Storage

    Когда Harbor использует ObjectStorage в качестве backend-хранилища Registry, необходимо создать Secret для хранения учетных данных Object Storage.

    ПолеОписаниеПример значения
    REGISTRY_STORAGE_S3_ACCESSKEYКлюч доступа ObjectStorageXVOHXUQ5QMKSA10O7ZI2
    REGISTRY_STORAGE_S3_SECRETKEYСекретный ключ ObjectStorageX4Dz4IQzpcwQMeshNY2g3skWwDgM12RIJsDrJuG5
    apiVersion: v1
    data:
      REGISTRY_STORAGE_S3_ACCESSKEY: <base64 encode access key>
      REGISTRY_STORAGE_S3_SECRETKEY: <base64 encoded secret key>
    kind: Secret
    metadata:
      name: object-storage-secret
      namespace: <ns-of-harbor-instance>
    type: Opaque

    Для операций push и pull Registry требует следующую политику. Обязательно замените S3_BUCKET_NAME на имя вашего бакета.

    Если у вас еще нет учетной записи, создайте ее и примените следующую политику.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "s3:ListBucket",
            "s3:GetBucketLocation",
            "s3:ListBucketMultipartUploads"
          ],
          "Resource": "arn:aws:s3:::S3_BUCKET_NAME"
        },
        {
          "Effect": "Allow",
          "Action": [
            "s3:PutObject",
            "s3:GetObject",
            "s3:DeleteObject",
            "s3:ListMultipartUploadParts",
            "s3:AbortMultipartUpload"
          ],
          "Resource": "arn:aws:s3:::S3_BUCKET_NAME/*"
        }
      ]
    }

    Для получения дополнительной информации о хранилище см. Хранилище Harbor.