设置独立的 PostgreSQL 数据库

我们将使用 Ubuntu 的 Omnibus GitLab 包。该软件包提供了保证与 chart 服务兼容的服务版本。

创建包含 Omnibus GitLab 的 VM

在您选择的提供商或本地创建 VM。这里是使用 VirtualBox、KVM 和 Bhyve 进行测试的。 确保可从集群访问该实例。

将 Ubuntu Server 安装到您创建的 VM 上。 确保安装了 openssh-server,并且所有软件包都是最新的。 配置网络和主机名。记下主机名/IP,并确保它可以从您的 Kubernetes 集群解析和访问。 确保防火墙策略在正确的位置,以允许流量。

按照 Omnibus GitLab 的安装说明进行操作。当您执行包安装时,不要 提供EXTERNAL_URL= 值。 我们不希望发生自动配置,因为我们将在下一步中提供非常具体的配置。

配置 Omnibus GitLab

创建一个最小的 gitlab.rb 文件放在 /etc/gitlab/gitlab.rb。要_非常_明确地知道此节点上启用的功能,请使用以下内容。

注意:此示例不提供 PostgreSQL 扩缩容.

注意:以下值应被替换

  • DB_USERNAME 默认用户名是 gitlab
  • DB_PASSSWORD 未编码值
  • DB_PASSWORDDB_ENCODED_PASSWORD 编码值。可以通过用DB_USERNAMEDB_PASSWORD 的真实值来生成:echo -n 'DB_PASSSWORDDB_USERNAME' | md5sum - | cut -d' ' -f1
  • AUTH_CIDR_ADDRESS 配置用于 MD5 身份验证的 CIDR,应该是集群的最小子网或其网关。对于 Minikube,此值为 192.168.100.0/12
# Change the address below if you do not want PG to listen on all available addresses
postgresql['listen_address'] = '0.0.0.0'
# Set to approximately 1/4 of available RAM.
postgresql['shared_buffers'] = "512MB"
# This password is: `echo -n '${password}${username}' | md5sum - | cut -d' ' -f1`
# The default username is `gitlab`
postgresql['sql_user_password'] = "DB_ENCODED_PASSWORD"
# Configure the CIDRs for MD5 authentication
postgresql['md5_auth_cidr_addresses'] = ['AUTH_CIDR_ADDRESSES']
# Configure the CIDRs for trusted authentication (passwordless)
postgresql['trust_auth_cidr_addresses'] = ['127.0.0.1/24']

## Configure gitlab_rails
gitlab_rails['auto_migrate'] = false
gitlab_rails['db_username'] = "gitlab"
gitlab_rails['db_password'] = "DB_PASSSWORD"


## Disable everything else
sidekiq['enable'] = false
puma['enable'] = false
registry['enable'] = false
gitaly['enable'] = false
gitlab_workhorse['enable'] = false
nginx['enable'] = false
prometheus_monitoring['enable'] = false
redis['enable'] = false

创建 gitlab.rb 后,我们将使用 gitlab-ctl reconfigure 重新配置包。任务完成后,使用 gitlab-ctl status 检查正在运行的进程。输出应如下所示:

# gitlab-ctl status
run: logrotate: (pid 4856) 1859s; run: log: (pid 31262) 77460s
run: postgresql: (pid 30562) 77637s; run: log: (pid 30561) 77637s