下载工作台
PaaS 组件实战

镜像仓库与 CI/CD 全链路

试读上半部分 · 解锁后可读全文

第 11 章 · 镜像仓库与 CI/CD 全链路

本章将 代码提交 → 构建镜像 → 推送仓库 → 集群升级 串成可验收流水线。基于应用商店真实目录:Gitea / GitLab CE / Jenkins / Docker Registry

前置:第 7 章 Jenkins、Gitea 基础;本章侧重 端到端联动


11.1 CI/CD 架构

开发者 ──push──► Gitea/GitLab ──webhook──► Jenkins
                                              │
                                    docker build & push
                                              ▼
                                    Docker Registry(:5000)
                                              │
                              kubectl set image / 应用部署·升级
                                              ▼
                                    app Namespace · Deployment
角色商店 id端口说明
代码仓gitea / gitlab-ce3000 / 80轻量选 Gitea;要内置 CI 选 GitLab(资源高)
流水线jenkins8080Pipeline / Jenkinsfile
镜像仓docker-registry5000官方 OCI 仓库,内网够用
仓 UIregistry-ui80浏览镜像 tag
企业仓harbor-portal8080仅 core 镜像,需外接 MySQL+Redis,生产慎用单容器

11.2 Docker Registry 2.8(推荐内网镜像仓)

适用场景

选用说明
内网私有镜像存储Jenkins 构建后 docker push
小团队 / 演示环境单容器 + PVC 即可
与 K8s 拉取节点配置 insecure-registry 或使用 HTTPS

商店部署参数

iddocker-registry
镜像registry:2.8
端口5000
PVC50 Gi/var/lib/registry
Namespacedevops

环境变量

env:
  - name: REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY
    value: /var/lib/registry
  # 可选:删除接口开启(仅内网)
  - name: REGISTRY_STORAGE_DELETE_ENABLED
    value: "true"

连接语法

操作命令
推送docker tag api:1.0 <节点IP>:<NodePort>/shop/api:1.0docker push ...
拉取docker pull <节点IP>:<NodePort>/shop/api:1.0
K8s 镜像image: <节点IP>:<NodePort>/shop/api:1.0
HTTP 仓库需在 构建节点集群节点/etc/docker/daemon.json 配置 "insecure-registries": ["<IP>:5000"] 后重启 Docker。

Registry UI

idregistry-ui
镜像joxit/docker-registry-ui:2.5.7
envREGISTRY_URL=http://docker-registry.devops.svc.cluster.local:5000

浏览器浏览 shop/api 下所有 tag。


11.3 Harbor(harbor-portal)说明

商店卡片描述:企业级容器镜像仓库(需配合外部 DB/Redis)

idharbor-portal
镜像goharbor/harbor-core:v2.11.0
端口8080

事实说明:完整 Harbor 含 core、registry、jobservice、portal、DB、Redis 等多组件。商店单容器 不适合直接当生产 Harbor

场景建议
学习 / 演示Docker Registry + Registry UI
企业级需求外接第 2 章 MySQL + 第 3 章 Redis,按 Harbor 官方文档补全多组件;或评估 Artifactory OSSartifactory-oss,端口 8081)

11.4 GitLab CE 17.1(一体化 DevOps)

商店部署参数

idgitlab-ce
镜像gitlab/gitlab-ce:17.1.0-ce.0
端口80(HTTPS 443 需在端口弹窗补充)
PVC50 Gi/var/opt/gitlab
资源大型 · 4 核 8Gi+

环境变量(可选)

env:
  - name: GITLAB_OMNIBUS_CONFIG
    value: |
      external_url 'http://gitlab.devops.svc.cluster.local'
      gitlab_rails['gitlab_shell_ssh_port'] = 2222

首次使用

  1. NodePort 访问 → 设置 root 密码
  2. 新建 Group / Project → 推送代码
  3. Settings → CI/CD → Runners 注册 Runner(或继续用 Jenkins)

.gitlab-ci.yml 示例

以下内容需解锁后阅读

试读已结束。解锁本章 ¥5.00,或开通年度会员畅读全部教程。
年度会员 ¥199.00/年; 小紫 AI 工作台有效会员 ¥99.00/年

正文仅在服务端鉴权后下发,未付费无法获取下半部分内容。