正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

Harbor

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

GitLabプロジェクトのコンテナレジストリとしてHarborを使用できます。

Harborは、KubernetesやDockerのようなクラウドネイティブコンピューティングプラットフォーム全体のアーティファクトを管理するのに役立つオープンソースレジストリです。

Harborインテグレーションは、GitLab CI/CDとコンテナイメージリポジトリが必要な場合に役立ちます。

前提要件

Harborインスタンスで、以下を確認してください:

  • 統合されるプロジェクトが作成済みであること。
  • 認証済みユーザーが、Harborプロジェクトでイメージをプル、プッシュ、および編集する権限を持っていること。

GitLabを設定する

GitLabは、グループまたはプロジェクトレベルでのHarborプロジェクトの統合をサポートしています。GitLabで次の手順を実行します:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。

  2. 設定 > インテグレーションを選択します。

  3. Harborを選択します。

  4. インテグレーションを有効にするで、有効チェックボックスをオンにします。

  5. Harborの設定情報を入力します:

    • Harbor URL: このGitLabプロジェクトにリンクされているHarborインスタンスのベースURL。たとえばhttps://harbor.example.netなどです。
    • Harborのプロジェクト名: Harborインスタンス内のプロジェクト名。たとえばtestprojectなどです。
    • ユーザー名: Harborインスタンスでのユーザー名。前提条件の要件を満たしている必要があります。
    • パスワード: あなたのユーザー名のパスワード。
  6. 変更を保存を選択します。

Harborインテグレーションが有効化された後:

  • $HARBOR_USERNAME$HARBOR_HOST$HARBOR_OCI$HARBOR_PASSWORD$HARBOR_URL、および$HARBOR_PROJECTのグローバル変数がCI/CD用として作成されます。
  • プロジェクトレベルの統合設定は、グループレベルの統合設定をオーバーライドします。

セキュリティに関する考慮事項

Harbor APIへのリクエストを保護する

Harborインテグレーションを介した各APIリクエストでは、Harbor APIへの接続に使用する認証情報は、username:passwordの組み合わせを使用します。安全に使用するための提案を以下に示します:

  • 接続先のHarbor APIでTLSを使用します。
  • お使いの認証情報で、(Harborへのアクセスについて)最小権限の原則に従ってください。
  • お使いの認証情報にローテーションポリシーを設定してください。

CI/CD変数のセキュリティ

.gitlab-ci.ymlファイルにプッシュされた悪意のあるコードは、$HARBOR_PASSWORDを含む変数を侵害し、サードパーティサーバーに送信する可能性があります。詳細については、CI/CD変数のセキュリティを参照してください。

Harbor変数を使用する

OCIレジストリでHelmチャートをプッシュする

HelmはデフォルトでOCIレジストリをサポートしています。OCIはHarbor 2.0以降でサポートされています。HelmのブログドキュメントでOCIの詳細をお読みください。

helm:
  stage: helm
  image:
    name: dtzar/helm-kubectl:latest
    entrypoint: ['']
  variables:
    # Enable OCI support (not required since Helm v3.8.0)
    HELM_EXPERIMENTAL_OCI: 1
  script:
    # Log in to the Helm registry
    - helm registry login "${HARBOR_URL}" -u "${HARBOR_USERNAME}" -p "${HARBOR_PASSWORD}"
    # Package your Helm chart, which is in the `test` directory
    - helm package test
    # Your helm chart is created with <chart name>-<chart release>.tgz
    # You can push all building charts to your Harbor repository
    - helm push test-*.tgz ${HARBOR_OCI}/${HARBOR_PROJECT}