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

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

    Предварительные требования

    • Этот документ применим к версиям Harbor 2.14 и выше, предоставляемым платформой. Он отделен от платформы и основан на технологиях, таких как 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 по умолчанию, и открытым портом. Используйте метод доступа LoadBalancer для создания экземпляров Redis. Подробнее см. документацию по функционалу Alauda Cache Service для Redis OSS.
    WARNING

    В настоящее время не поддерживается подключение к Alauda Cache Service для Redis OSS в режиме TLS.

    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Поддерживаемые версии PostgreSQL
    2.12.z14.x
    2.14.z15.x, 16.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.14.x выберите PostgreSQL 15.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 в качестве бэкенда хранения 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

    Для Registry необходима следующая политика для операций push и pull. Обязательно замените 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.