配置 Redis、PostgreSQL 和账户访问凭证

本文档描述了 Harbor 实例所需的凭证的配置方法。

目录

先决条件

  • 本文档适用于平台提供的 Harbor 2.12 及以上版本。该文档与基于 Operator 等技术的平台解耦。

Redis 凭证

要求

Harbor 对 Redis 部署的要求如下:

  • 推荐使用 Redis 版本 7.x。
  • 部署模式支持 StandaloneSentinel 模式,但不支持 Redis Cluster 模式。

有关详细的 Redis 部署说明,请参考 Harbor 官方文档

凭据格式

在计划部署 Harbor 的命名空间下创建一个 Secret,选择 Opaque 类型,并在配置中添加并填写以下字段:

字段描述体系示例值
hostRedis 连接地址。确保 Harbor 服务可以连接到它。standalone192.168.1.1
portRedis 连接端口。确保 Harbor 服务可以连接到此端口。standalone6379
passwordRedis 实例账户密码。当启用 Redis 认证时需要此项。standalone,sentinelpassword111
addressSentinel 节点连接地址。sentinel192.168.1.1:26379,192.168.1.2:26379,192.168.1.3:26379
masterNameSentinel 在 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

更新凭据

如果您想在部署 Harbor 实例后修改 Redis 连接信息,需要直接更新 Harbor 实例资源,而不是修改凭据内容。具体操作请参考 配置 Redis 访问凭据

使用 Alauda Cache Service for Redis OSS

通过 Alauda Cache Service for Redis OSS 提供 Redis 服务时,请注意以下重要要求:

  • 推荐使用 Redis 版本 7.x。
  • 架构类型选择 Sentinel 模式。
  • 参数模板选择 RDB 持久化模板,如 system-rdb-redis-7.2-sentinel
  • 开启数据持久化,存储配额不低于 2G。
  • 在多网卡场景中,Redis Sentinel 将选择节点的默认 IP 来初始化每个 Redis 节点的访问地址,不支持非默认 IP + 暴露端口的节点访问。建议使用 LoadBalancer 访问方法创建 Redis 实例。有关更多详细信息,请参考 Alauda Cache Service for Redis OSS 功能描述文档。
WARNING

创建 Redis 实例时会自动生成一个包含连接信息的 Secret,可直接用该 Secret 部署 Harbor。该 Secret 资源可通过标签 middleware.instance/type: Redis 过滤。

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

如果 Redis 实例和 Harbor 实例不在同一命名空间,需要将该 Secret 资源复制到 Harbor 实例所在的命名空间。

有关更多 Redis 部署参数和高可用部署要求,请参考

PostgreSQL 凭证

要求

Harbor 对 PostgreSQL 版本的要求如下:

  • Harbor 2.12.x 版本要求 PostgreSQL 版本为 14.x。

凭据格式

在计划部署 Harbor 的命名空间下创建一个 Secret,选择 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 实例上创建数据库

使用 psql cli 连接到 PG 实例并执行以下命令以创建数据库:

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 配置。

更新凭据

如果您想在部署 Harbor 实例后修改 PostgreSQL 连接信息,您需要直接更新 Harbor 实例资源,而不是修改凭据内容。具体操作请参考 配置 PostgreSQL 凭证

使用数据服务提供的 PostgreSQL

数据服务 支持部署可以用于 Harbor 部署的 PostgreSQL 实例。创建 PostgreSQL 实例时,请考虑以下重要要求:

  1. 选择与您的 Harbor 版本匹配的 PostgreSQL 版本,例如,部署 Harbor 2.12.x 时,需要选择 PostgreSQL 14.x。
  2. 存储配额应不少于 5Gi。

创建 PostgreSQL 实例时,会自动生成一个包含连接信息的 Secret。该 Secret 资源可通过标签 middleware.instance/type: PostgreSQL 过滤。

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

该 Secret 包含 hostportusernamepassword 信息。您需要根据该 Secret 补充 databasesslmode(设置为 require)信息,并在 Harbor 实例所在命名空间中创建一个新的 secret。

如果 PostgreSQL 实例和 Harbor 实例不在同一命名空间,您需要将该 Secret 资源复制到 Harbor 实例所在的命名空间。

有关更多 PostgreSQL 部署参数和要求,请参考

Harbor 账户凭证

在计划部署 Harbor 的命名空间下创建一个 Secret,选择 Opaque 类型,并在配置中添加并填写以下字段:

字段描述示例值
password设置默认 admin 账户的密码,需包含字母、数字和特殊符号,至少 8 个字符。password111@
namespace设置与 Harbor 实例相同的命名空间tools
apiVersion: v1
data:
  password: <base64 encode password>
kind: Secret
metadata:
  name: harbor-admin-password
  namespace: <ns-of-harbor-instance>
type: Opaque