主题
GitLab CE 19.2.2 高可用部署(RKE2 / NFS / Harbor)
在 RKE2 集群(API 192.168.122.31:6443)上用官方 Helm Chart 10.2.2 部署 GitLab CE 19.2.2 高可用实例。
架构
浏览器/ Git 客户端
├─ 公网: https://ai-ear.cn:9020 → 8.153.84.140 Traefik(ep9020) → frps:19020
│ → 宿主机 frpc → NodePort 30080 → gitlab-web-nodeport svc → webservice×2 (workhorse:8181)
├─ 公网 SSH: ssh://git@ai-ear.cn:19022 → frps:19022 → frpc → NodePort 30022 → gitlab-shell×2
└─ 内网: http://<任一节点>:30080 / ssh -p 30022 git@<节点>
namespace gitlab:
webservice×2 ──┐
sidekiq×2 ─────┼─→ PostgreSQL 17 (单副本, NFS) 库: gitlabhq_production / _ci / praefect
toolbox ────┤ Redis 7 (单副本, NFS)
│ MinIO (单副本, NFS) buckets: gitlab / gitlab-backups / tmp
praefect×2 ────┴─→ gitaly×3 (StatefulSet, 各 100Gi NFS PVC, Praefect 三副本复制)- HA 范围:入口层(webservice/sidekiq/shell/praefect 多副本)+ Git 数据层(Praefect + Gitaly×3 同步复制,单节点宕机不丢数据不停写)
- 已知单点:PostgreSQL / Redis / MinIO 为单副本(数据落 NFS,pod 重建即恢复);详见 docs/05-运维手册.md
资源约定
| 项 | 值 |
|---|---|
| 镜像仓库 | 192.168.122.156:30000/gitlab/*(HTTP Harbor,chart 在 charts/gitlab:10.2.2 OCI) |
| 镜像源 | registry.gitlab.com 直连;docker.io 走 docker.m.daocloud.io |
| 存储 | SC nfs-gitlab → 192.168.122.1:/mnt/xfs/rancher/gitlab(专用 provisioner) |
| NodePort | Web 30080、SSH 30022 |
| 公网 | https://ai-ear.cn:9020、ssh://git@ai-ear.cn:19022(frp 惯例同 Jenkins) |
目录
charts/gitlab-10.2.2.tgz # 官方 chart(来源 https://charts.gitlab.io/)
deploy/nfs-provisioner-values.yaml
deploy/deps/00-secrets.yaml # 所有密钥(pg/redis/minio/root/praefect-db/对象存储/备份)
deploy/deps/10-postgres.yaml # PG 17 + 初始化 gitlabhq_production{,_ci}/praefect
deploy/deps/20-redis.yaml # Redis 7(AOF)
deploy/deps/30-minio.yaml # MinIO 对象存储
deploy/deps/31-minio-buckets-job.yaml
deploy/gitlab/values.yaml # chart values(HA 拓扑、镜像指向 Harbor、NodePort 等)
deploy/gitlab/30-gitlab-yml-override-cm.yaml # gitlab.yml.erb 覆盖(外部端口 9020)
deploy/gitlab/40-nodeport-svc.yaml # webservice 固定 NodePort 30080
scripts/sync-images.sh # skopeo 镜像同步
scripts/post-render.sh # Helm 后渲染:注入 port: 9020 到 webservice CM
scripts/post-render.py # 后渲染 Python 脚本(被 post-render.sh 调用)
scripts/deploy.sh # 一键部署
docs/ # 01 环境准备 / 02 镜像同步 / 03 高可用部署 / 04 公网接入 / 05 运维手册 / 06 故障修复记录快速开始
bash
export KUBECONFIG=~/.kube/config-122.31
bash scripts/sync-images.sh # 首次或升级时
bash scripts/deploy.sh详见 docs/ 下各篇。