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で次の手順を実行します:
左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
設定 > インテグレーションを選択します。
Harborを選択します。
インテグレーションを有効にするで、有効チェックボックスをオンにします。
Harborの設定情報を入力します:
- Harbor URL: このGitLabプロジェクトにリンクされているHarborインスタンスのベースURL。たとえば
https://harbor.example.netなどです。 - Harborのプロジェクト名: Harborインスタンス内のプロジェクト名。たとえば
testprojectなどです。 - ユーザー名: Harborインスタンスでのユーザー名。前提条件の要件を満たしている必要があります。
- パスワード: あなたのユーザー名のパスワード。
- Harbor URL: このGitLabプロジェクトにリンクされているHarborインスタンスのベースURL。たとえば
変更を保存を選択します。
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}