1. 前提条件

  • 已安装并配置好 Kubernetes 集群。
  • 已安装 kubectl 和 helm 工具。
  • 确保集群有足够的资源(CPU、内存)和可用的存储类(StorageClass)。

2. 安装 Helm Chart

GitLab 提供了官方 Helm Chart,支持定制化部署。

步骤 1:添加 Helm 仓库

1
2
helm repo add gitlab https://charts.gitlab.io
helm repo update

步骤 2:创建命名空间

1
kubectl create namespace gitlab

步骤 3:准备配置文件(gitlab-values.yaml)

创建一个自定义配置文件 gitlab-values.yaml,以下为关键配置示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
global:
# 配置 GitLab 域名(替换为你的域名)
hosts:
domain: example.com
gitlab:
name: gitlab.example.com
ingress:
configureCertmanager: false # 关键!禁用 Cert-Manager 自动配置
tls:
enabled: true
secretName: gitlab-tls-secret

# 配置存储类(根据你的集群修改)
persistence:
enabled: true
storageClass: "nfs-storage" # 替换为你的 StorageClass 名称

# 配置 PostgreSQL(默认使用内置数据库)
postgresql:
install: true
persistence:
storageClass: "nfs-storage"

# 配置 Redis(默认使用内置 Redis)
redis:
install: true
persistence:
storageClass: "nfs-storage"

# 启用 GitLab Runner
gitlab-runner:
install: true

# 禁用 Cert-Manager 相关组件(如果不需要)
certmanager:
install: false # 不安装 Cert-Manager

步骤 4:部署 GitLab

1
2
3
helm upgrade --install gitlab gitlab/gitlab \
--namespace gitlab \
-f gitlab-values.yaml

3. 获取初始密码

部署完成后,获取初始 root 用户密码:

1
kubectl -n gitlab get secret gitlab-gitlab-initial-root-password -o jsonpath='{.data.password}' | base64 --decode

4. 访问 GitLab

  • 通过 Ingress 访问
    如果配置了域名和 Ingress,访问 https://gitlab.zmutec.com。
  • 通过 NodePort/LoadBalancer 访问
    如果没有配置 Ingress,查看 Service 的对外端口:
    1
    kubectl -n gitlab get svc gitlab-webservice-default

5. 关键组件说明

  • GitLab Core:Web 服务、Sidekiq、Gitaly。
  • PostgreSQL:默认部署在集群内(生产建议使用外部数据库)。
  • Redis:默认部署在集群内。
  • GitLab Runner:用于 CI/CD 任务执行。

6. 自定义配置(可选)

配置 HTTPS 证书

  • 使用 Let’s Encrypt(需安装 Cert-Manager):
    1
    2
    3
    4
    global:
    ingress:
    configureCertmanager: true
    certmanager-issuer: letsencrypt-prod
    使用外部数据库
    在 gitlab-values.yaml 中禁用内置数据库并配置外部数据库:
    1
    2
    3
    4
    5
    6
    postgresql:
    install: false
    global:
    psql:
    host: external-postgresql.example.com
    password: your-postgres-password

7. 验证部署

检查 Pod 状态:

1
kubectl -n gitlab get pods

确保所有 Pod 处于 Running 状态。

8. 后续操作

  1. 登录 GitLab
    使用用户名 root 和获取的初始密码登录。
  2. 配置 CI/CD Runner
    如果启用了 gitlab-runner,Runner 会自动注册到 GitLab。
  3. 备份与恢复
    定期备份 GitLab 数据(参考 GitLab 文档)。