Skip to content

01 环境与准备工作

环境基线(已验证 2026-08-14)

集群RKE2 v1.35.6+rke2r1,3 CP(sza122023/24/31)+ 3 Worker(sza122028/29/30),Rocky 9.8,containerd 2.2.5
kubeconfig本机 ~/.kube/config-122.31(API https://192.168.122.31:6443
kubectlapps/jenkins/tools/kubectl(v1.29.3)或 /tmp/bin/kubectl
helm本机 v3.19.4
镜像仓库Harbor http://192.168.122.156:30000(admin / xxx),节点 containerd 已配 HTTP mirror,无需改节点
NFS192.168.122.1(libvirt 宿主机,即本机),xfs 盘 /mnt/xfs
镜像源registry.gitlab.comcharts.gitlab.io 国内直连可达;docker.io 走 docker.m.daocloud.io;GitHub 加速 ghfast.top

一次性准备

1) NFS 导出(宿主机 192.168.122.1,即本机)

bash
sudo mkdir -p /mnt/xfs/rancher/gitlab
echo '/mnt/xfs/rancher/gitlab *(rw,sync,no_subtree_check,no_root_squash)' | sudo tee -a /etc/exports
sudo exportfs -ra
showmount -e localhost | grep gitlab

2) Harbor 创建 gitlab 项目

bash
curl -u 'admin:xxx' -X POST -H 'Content-Type: application/json' \
  -d '{"project_name":"gitlab","public":true}' \
  http://192.168.122.156:30000/api/v2.0/projects   # 201

3) helm 登录 Harbor OCI(push/pull chart 用)

bash
echo 'xxx' | helm registry login 192.168.122.156:30000 -u admin --password-stdin --insecure

4) 下载 chart(直连 charts.gitlab.io)

bash
curl -sLO https://gitlab-charts.s3.amazonaws.com/gitlab-10.2.2.tgz
tar -xzf gitlab-10.2.2.tgz        # 解析 values 用
helm push gitlab-10.2.2.tgz oci://192.168.122.156:30000/charts --plain-http

端口规划

端口用途
NodePort 30080GitLab Web(workhorse)
NodePort 30022GitLab SSH(gitlab-shell)
公网 9020Traefik ep9020 → HTTPS Web
公网 19022frps 直连 → SSH
frps 隧道 19020/19022宿主机 frpc → 公网机

集群已用 NodePort 仅 30880(Jenkins)/30900(SonarQube),30080/30022 无冲突。

注意事项

  • skopeo 1.4.1 对 registry.gitlab.com 执行 inspect 会陷入 tags 分页列举(镜像仓库 tags 极多),不要用 inspect 做存在性检查copy 指定 tag 不受影响。
  • registry.gitlab.com 的 blob 走 cdn.registry.gitlab-static.net,吞吐约 5MB/s,全量镜像(约 4GB,14 个)同步需 40~80 分钟。