主题
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) |
| kubectl | apps/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,无需改节点 |
| NFS | 192.168.122.1(libvirt 宿主机,即本机),xfs 盘 /mnt/xfs |
| 镜像源 | registry.gitlab.com、charts.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 gitlab2) 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 # 2013) helm 登录 Harbor OCI(push/pull chart 用)
bash
echo 'xxx' | helm registry login 192.168.122.156:30000 -u admin --password-stdin --insecure4) 下载 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 30080 | GitLab Web(workhorse) |
| NodePort 30022 | GitLab SSH(gitlab-shell) |
| 公网 9020 | Traefik ep9020 → HTTPS Web |
| 公网 19022 | frps 直连 → 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 分钟。