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 中完成以下步骤:

  1. 在左侧边栏,选择 Search or go to 并找到您的项目。

  2. 选择 Settings > Integrations

  3. 选择 Harbor

  4. Enable integration 下,选择 Active 复选框。

  5. 提供 Harbor 配置信息:

    • Harbor URL: 正在链接到此 GitLab 项目的 Harbor 实例的基础 URL。例如,https://harbor.example.net
    • Harbor project name: Harbor 实例中的项目名称。例如,testproject
    • Username: 您在 Harbor 实例中的用户名,应符合 prerequisites 中的要求。
    • Password: 您的用户名密码。
  6. 选择 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 的 blogdocumentation

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}