Help us learn about your current experience with the documentation. Take the survey.
Harbor
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
您可以将 Harbor 用作 GitLab 项目的容器注册表。
Harbor 是一个开源注册表,可帮助您管理 Kubernetes 和 Docker 等云原生计算平台上的工件。
如果您需要 GitLab CI/CD 和容器镜像仓库,Harbor 集成可以帮助您。
先决条件
在 Harbor 实例中,确保:
- 要集成的项目已创建。
- 已认证的用户有权限在 Harbor 项目中拉取、推送和编辑镜像。
配置 GitLab
GitLab 支持在组或项目级别集成 Harbor 项目。在 GitLab 中完成以下步骤:
-
在左侧边栏,选择 Search or go to 并找到您的项目。
-
选择 Settings > Integrations。
-
选择 Harbor。
-
在 Enable integration 下,选择 Active 复选框。
-
提供 Harbor 配置信息:
- Harbor URL: 正在链接到此 GitLab 项目的 Harbor 实例的基础 URL。例如,
https://harbor.example.net。 - Harbor project name: Harbor 实例中的项目名称。例如,
testproject。 - Username: 您在 Harbor 实例中的用户名,应符合 prerequisites 中的要求。
- Password: 您的用户名密码。
- Harbor URL: 正在链接到此 GitLab 项目的 Harbor 实例的基础 URL。例如,
-
选择 Save changes。
Harbor 集成激活后:
- 将为 CI/CD 使用创建全局变量
$HARBOR_USERNAME、$HARBOR_HOST、$HARBOR_OCI、$HARBOR_PASSWORD、$HARBOR_URL和$HARBOR_PROJECT。 - 项目级别的集成设置会覆盖组级别的集成设置。
安全注意事项
保护对 Harbor API 的请求
通过 Harbor 集成的每个 API 请求,连接到 Harbor API 的凭证使用 username:password 组合。以下是安全使用的建议:
- 对您连接的 Harbor API 使用 TLS。
- 使用您的凭证遵循最小权限原则(对 Harbor 的访问)。
- 对您的凭证制定轮换策略。
CI/CD 变量安全
推送到您的 .gitlab-ci.yml 文件中的恶意代码可能会危及您的变量,包括 $HARBOR_PASSWORD,并将它们发送到第三方服务器。更多详情,请参阅 CI/CD variable security。
使用 Harbor 变量
使用 OCI 注册表推送 Helm chart
Helm 默认支持 OCI 注册表。Harbor 2.0 及更高版本支持 OCI。更多关于 OCI 的信息,请参阅 Helm 的 blog 和 documentation。
helm:
stage: helm
image:
name: dtzar/helm-kubectl:latest
entrypoint: ['']
variables:
# 启用 OCI 支持(Helm v3.8.0 之后不需要)
HELM_EXPERIMENTAL_OCI: 1
script:
# 登录到 Helm 注册表
- helm registry login "${HARBOR_URL}" -u "${HARBOR_USERNAME}" -p "${HARBOR_PASSWORD}"
# 打包您的 Helm chart,它在 `test` 目录中
- helm package test
# 您的 helm chart 以 <chart name>-<chart release>.tgz 的形式创建
# 您可以将所有构建的 chart 推送到您的 Harbor 仓库
- helm push test-*.tgz ${HARBOR_OCI}/${HARBOR_PROJECT}