配置 Redis、PostgreSQL 和账户凭证

本文档描述了如何配置 GitLab 实例所需的凭证。

目录

先决条件

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

Redis 凭据

要求

GitLab 对 Redis 部署模式和版本的要求如下:

  • 部署模式支持 StandaloneSentinel 两种模式,不支持 Redis Cluster 模式
  • Redis 版本要求 6.2 及以上版本

凭据格式

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

字段描述体系示例值
hostRedis 连接地址。确保 GitLab 服务可以连接到它。standalone192.168.1.1
portRedis 连接端口。确保 GitLab 服务可以连接到此端口。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
sentinelPasswordSentinel 实例的密码。当启用 Sentinel 认证时需要此项。sentinelpassword111
WARNING
  1. 当同时存在 sentinel 和 standalone 配置时,sentinel 配置将优先。
  2. 在使用高可用性模板进行部署时,如果配置了 standalone Redis,确保 Redis 实例的高可用性是用户的责任。

Standalone 示例

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

Sentinel 示例

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

更新凭据

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

使用 Alauda Cache Service for Redis OSS

Redis 服务可以通过 Alauda Cache Service for Redis OSS 提供。部署时需要注意以下几点:

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

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

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

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

更多 Redis 部署参数以及高可用部署要求请参考

PostgreSQL 凭据

要求

GitLab 对 PostgreSQL 版本的要求如下:

  • GitLab 17.x 版本要求 PostgreSQL 版本为 14.x
  • GitLab 18.x 版本要求 PostgreSQL 版本为 16.x

凭据格式

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

字段描述示例值
host数据库连接地址。确保 GitLab 服务可以连接到此数据库地址。192.168.1.1
port数据库连接端口。确保 GitLab 服务可以连接到此数据库端口。5432
username数据库账户用户名gitlab
password数据库账户密码password111
database数据库名称。该数据库必须已存在并且为空。您可以使用命令 create database <database name> 创建它。gitlab_db
sslmode是否启用数据库连接的 SSL。可用选项:
- enable: 启用 SSL 连接
- disable: 禁用 SSL 连接,更多关于 sslmode 的信息
enable

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: gitlab-pg
  namespace: <ns-of-gitlab-instance>
type: Opaque

如何在 PG 实例上创建数据库

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

create database <database name>;

为 gitaly 集群创建单独的数据库

在高可用模式下,gitaly 组件需要配置为集群模式,并且需要一个 单独的数据库 来存储 gitaly 元数据。您需要创建另一个 Secret 来存储数据库连接信息,字段与上述描述一致。

sslmode

sslmode 是一个控制 GitLab 服务与 PostgreSQL 数据库之间连接安全性的参数。可用选项:

  • enable: 启用 SSL 连接
  • disable: 禁用 SSL 连接

当您使用 Alauda support for PostgreSQL 时,sslmode 应设置为 enable
当您使用外部 PostgreSQL 时,sslmode 依赖于您的 PostgreSQL 配置。

更新凭据

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

使用 Data Services 提供的 PostgreSQL

Data Services 支持部署 PostgreSQL 实例,可用来部署 GitLab。创建 PostgreSQL 实例时需要注意以下几点:

  1. 根据 GitLab 版本选择与之匹配的 PostgreSQL 版本,如部署 GitLab 17.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 | grep -E '^postgres'
INFO

该 Secret 中包含了 host, port, username, password 信息,您需要基于这个 Secret 补充 databasesslmode(设置为 enable)信息,并创建一个新的 Secret 保存到 GitLab 实例所在的命名空间。

更多 PostgreSQL 部署参数以及要求请参考

GitLab 帐户凭据

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

字段描述示例值
password设置默认 root 账户的密码,需包含字母、数字和特殊符号,至少 8 个字符,常见弱口令不能使用password111@
namespace设置与 GitLab 实例相同的命名空间tools
apiVersion: v1
data:
  password: <base64 encode password>
kind: Secret
metadata:
  name: gitlab-root-password
  namespace: <ns-of-gitlab-instance>
type: Opaque