Skip to content

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.2gitlab/gitlab-webservice-ce:v19.2.2Rails + Puma
…/cng/gitlab-workhorse-ce:v19.2.2gitlab/gitlab-workhorse-ce:v19.2.2反向代理/git http
…/cng/gitlab-sidekiq-ce:v19.2.2gitlab/gitlab-sidekiq-ce:v19.2.2后台任务
…/cng/gitlab-toolbox-ce:v19.2.2gitlab/gitlab-toolbox-ce:v19.2.2toolbox + migrations
…/cng/gitaly:v19.2.2gitlab/gitaly:v19.2.2gitaly 与 praefect(二进制同镜像)
…/cng/gitlab-shell:v14.56.1gitlab/gitlab-shell:v14.56.1SSH
…/cng/gitlab-base:v19.2.2gitlab/gitlab-base:v19.2.2所有 configure init 容器
…/cng/certificates:v19.2.2gitlab/certificates:v19.2.2证书 init 容器
…/cng/kubectl:v19.2.2gitlab/kubectl:v19.2.2shared-secrets job
…/cng/gitlab-exporter:16.9.0gitlab/gitlab-exporter:16.9.0(备用,当前禁用)
docker.m.daocloud.io/library/postgres:17-alpinegitlab/postgres:17-alpine外部 PG
docker.m.daocloud.io/library/redis:7-alpinegitlab/redis:7-alpine外部 Redis
docker.m.daocloud.io/minio/minio:latestgitlab/minio:latest对象存储
docker.m.daocloud.io/minio/mc:latestgitlab/mc:latest建 bucket Job
docker.m.daocloud.io/library/busybox:1.36gitlab/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)]"