主题
02 镜像同步
将 GitLab CE 19.2.2(chart 10.2.2)所需镜像同步到内部 Harbor 192.168.122.156:30000/gitlab/*。
镜像清单(裁剪配置后实际使用)
已禁用:kas、mailroom、spamcheck、registry(用 Harbor)、gitlab-runner、zoekt、pages、prometheus、cert-manager、nginx-ingress、gatewayApi/envoy、gitlab-exporter。
| 源 | 目标 | 说明 |
|---|---|---|
| registry.gitlab.com/gitlab-org/build/cng/gitlab-webservice-ce:v19.2.2 | gitlab/gitlab-webservice-ce:v19.2.2 | Rails + Puma |
| …/cng/gitlab-workhorse-ce:v19.2.2 | gitlab/gitlab-workhorse-ce:v19.2.2 | 反向代理/git http |
| …/cng/gitlab-sidekiq-ce:v19.2.2 | gitlab/gitlab-sidekiq-ce:v19.2.2 | 后台任务 |
| …/cng/gitlab-toolbox-ce:v19.2.2 | gitlab/gitlab-toolbox-ce:v19.2.2 | toolbox + migrations |
| …/cng/gitaly:v19.2.2 | gitlab/gitaly:v19.2.2 | gitaly 与 praefect(二进制同镜像) |
| …/cng/gitlab-shell:v14.56.1 | gitlab/gitlab-shell:v14.56.1 | SSH |
| …/cng/gitlab-base:v19.2.2 | gitlab/gitlab-base:v19.2.2 | 所有 configure init 容器 |
| …/cng/certificates:v19.2.2 | gitlab/certificates:v19.2.2 | 证书 init 容器 |
| …/cng/kubectl:v19.2.2 | gitlab/kubectl:v19.2.2 | shared-secrets job |
| …/cng/gitlab-exporter:16.9.0 | gitlab/gitlab-exporter:16.9.0 | (备用,当前禁用) |
| docker.m.daocloud.io/library/postgres:17-alpine | gitlab/postgres:17-alpine | 外部 PG |
| docker.m.daocloud.io/library/redis:7-alpine | gitlab/redis:7-alpine | 外部 Redis |
| docker.m.daocloud.io/minio/minio:latest | gitlab/minio:latest | 对象存储 |
| docker.m.daocloud.io/minio/mc:latest | gitlab/mc:latest | 建 bucket Job |
| docker.m.daocloud.io/library/busybox:1.36 | gitlab/busybox:1.36 | 权限 init 容器 |
执行
bash
bash scripts/sync-images.sh要点:
skopeo copy --dest-tls-verify=false --dest-creds 'admin:xxx' docker://<src> docker://192.168.122.156:30000/gitlab/<name>:<tag>- registry.gitlab.com 国内直连可达(token 端点
gitlab.com/jwt/auth也通);docker.io 经 daocloud 加速 - 失败自动重试 3 次;中断后重跑脚本即可(Harbor 按 digest 去重,但 skopeo 仍会比对,耗时较短)
- chart 本体:
helm push charts/gitlab-10.2.2.tgz oci://192.168.122.156:30000/charts --plain-http
验证
bash
curl -s -u 'admin:xxx' \
'http://192.168.122.156:30000/api/v2.0/projects/gitlab/repositories?page_size=50' \
| python3 -c "import json,sys;[print(r['name']) for r in json.load(sys.stdin)]"