リポジトリの作成

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

このページでは、Artifact Registry リポジトリを作成する方法について説明します。

始める前に

  1. Artifact Registry API の有効化や Google Cloud CLI のインストールなど、Artifact Registry を有効にします
  2. (省略可)gcloud コマンドのデフォルトを構成します
  3. Artifact Registry 管理者のロールまたは同等の権限のロールが必要です。

概要

アーティファクトをアップロードするには、リポジトリを作成する必要があります。各リポジトリには、サポートされている単一の形式のアーティファクトを含めることができます。

すべてのリポジトリのコンテンツは、Google が管理する暗号鍵または顧客管理の暗号鍵のいずれかを使用して暗号化されます。Artifact Registry はデフォルトで Google が管理する暗号鍵を使用するため、このオプションの構成は不要です。

Artifact Registry は、CMEK 保護を要求でき、CMEK 保護に使用できる loud KMS CryptoKeys を制限できる CMEK 組織ポリシー(プレビュー)をサポートします。

既存のリポジトリの管理については、次の情報をご覧ください。

リポジトリの CMEK の設定

デフォルトでは、Google Cloud は、Cloud Key Management Service(KMS)で管理されている Google 管理の暗号鍵を使用して、保存されているデータの暗号化を自動的に行います。データを保護する鍵について、特定のコンプライアンス要件または規制要件がある場合は、顧客管理の暗号鍵(CMEK)を使用してリポジトリのコンテンツを暗号化するリポジトリを作成できます。

CMEK で暗号化するリポジトリを作成する前に、Cloud KMS で鍵を作成して有効にする必要があります。その後、キーの作成時にリポジトリにキーを割り当てることができます。

既存のリポジトリの暗号化メカニズムを変更することはできません。CMEK で暗号化されたリポジトリがある場合、暗号化メカニズムを Google のデフォルトの暗号化に変更したり、暗号化用の別の Cloud KMS 鍵を割り当てたりすることはできません。

概要

リポジトリを作成する際は、次の設定を選択する必要があります。

  • リポジトリが保存するアーティファクト形式。
  • リージョンまたはマルチリージョンのロケーション
  • Cloud Key Management Service の鍵(顧客管理の暗号鍵を使用している場合)。

これらの設定は、リポジトリの作成後には変更できません。

次の表に、利用可能なアーティファクト形式、その形式に対応するリポジトリ、Google Cloud CLI でリポジトリを作成するために使用する値を示します。

アーティファクト リポジトリの形式 gcloud の設定
コンテナ イメージまたは Helm チャート Docker docker
Java パッケージ Maven maven
Node.js パッケージ npm npm
Python パッケージ Python python
Debian パッケージ APT apt
RPM パッケージ Yum yum
Kubeflow パイプライン テンプレート Kubeflow Pipelines kfp

リポジトリを作成して構成する

新しいリポジトリを作成して構成するには:

  1. CMEK を使用してリポジトリ データを暗号化する場合は、このリポジトリで使用する鍵を作成し、その鍵を使用する権限を付与します。顧客管理の暗号鍵の有効化をご覧ください。

  2. リポジトリを追加します。

    コンソール

    1. Google Cloud コンソールで [リポジトリ] ページを開きます。

      [リポジトリ] ページを開く

    2. [リポジトリを作成] をクリックします。

    3. リポジトリ名を指定します。プロジェクト内のリポジトリの場所ごとに、リポジトリ名は一意であることが必要です。

    4. リポジトリの形式を指定します。

    5. Maven リポジトリを作成する場合は、リポジトリのバージョン ポリシーを構成します。

      1. バージョン ポリシーを選択します。

        • なし - バージョン ポリシーはありません。リリース パッケージとスナップショット パッケージの両方を保存します。
        • リリース - リリース パッケージのみを保存します。
        • スナップショット - スナップショット パッケージのみを保存します。
      2. スナップショット リポジトリが、リポジトリ内の既存のバージョンを上書きする一意でないスナップショットを受け入れる場合は、[スナップショットの上書きを許可する] を選択します。

    6. [ロケーション タイプ] で、リポジトリのロケーションを選択します。

      1. ロケーション タイプとして [リージョン] または [マルチリージョン] を選択します。ロケーションのリストが選択内容に応じて変更されます。

      2. [リージョン] リストまたは [マルチリージョン] リストでロケーションを選択します。

      ロケーション タイプとサポートされているロケーションについては、リポジトリのロケーションをご覧ください。

    7. リポジトリの説明を追加します。説明は、リポジトリの目的と、リポジトリに含まれるアーティファクトの種類を特定するのに役立ちます。

      リポジトリの説明は暗号化されないため、機密データは含めないでください。

    8. ラベルを使用してリポジトリを整理する場合は、[ラベルを追加] をクリックしてラベルの Key-Value ペアを入力します。リポジトリの作成後に、ラベルを追加、編集、削除できます。

    9. [暗号化] セクションで、リポジトリの暗号化メカニズムを選択します。

      • Google が管理する鍵 - Google が管理する暗号鍵を使用してリポジトリのコンテンツを暗号化します。
      • 顧客管理の暗号鍵 - Cloud Key Management Service で管理する鍵を使用してリポジトリのコンテンツを暗号化します。鍵の設定手順については、リポジトリの CMEK の設定をご覧ください。
    10. [作成] をクリックします。

    gcloud

    次のコマンドを実行して、新しいリポジトリを作成します。

    gcloud artifacts repositories create REPOSITORY \
        --repository-format=FORMAT \
        [--location=LOCATION] \
        [--description="DESCRIPTION"] \
        [--kms-key=KMS-KEY] \
        [--async] \
    
    • REPOSITORY はリポジトリの名前です。 プロジェクト内のリポジトリの場所ごとに、リポジトリ名は一意であることが必要です。
    • FORMAT はリポジトリの形式です。
    • LOCATION は、リポジトリのリージョンまたはマルチリージョンのロケーションです。 デフォルトを設定すると、このフラグを省略できます。サポートされているロケーションのリストを表示するには、次のコマンドを実行します。

      gcloud artifacts locations list
      
    • DESCRIPTION はリポジトリの説明です。リポジトリの説明は暗号化されないため、機密データは含めないでください。

    • 顧客管理の暗号鍵を使用してリポジトリの内容を暗号化している場合、KMS-KEY は Cloud KMS 暗号鍵のフルパスです。パスの形式は次のとおりです。

      projects/KMS-PROJECT/locations/KMS-LOCATION/keyRings/KEY-RING/cryptoKeys/KEY
      

      ここで

      • KMS-PROJECT は、鍵が格納されているプロジェクトです。
      • KMS-LOCATION は鍵の場所です。
      • KEY-RING はキーリングの名前です。
      • KEY は鍵の名前です。
    • --async は処理中のオペレーションの完了を待たずに、直ちにコマンドを終了します。

    デフォルトでは、Maven リポジトリはパッケージのスナップショットとリリース バージョンの両方を保存します。スナップショットのバージョンとリリース バージョンを異なるリポジトリに保存する場合は、リポジトリの作成時にリポジトリのバージョン ポリシーを指定します。

    gcloud artifacts repositories create REPOSITORY \
        --repository-format=FORMAT \
        [--location=LOCATION] \
        [--description="DESCRIPTION"] \
        [--kms-key=KMS-KEY] \
        [--version-policy=VERSION-POLICY] \
        [--allow-snapshot-overwrites] \
        [--async] \
    

    次のフラグは、Maven リポジトリに固有のものです。

    --version-policy=VERSION-POLICY
    リポジトリに保存するパッケージの種類を指定します。VERSION-POLICY を次のように設定できます:
    • None - バージョン ポリシーがありません。リリース パッケージとスナップショット パッケージの両方を保存します。 コマンドに --version-policy フラグが含まれていない場合、これがデフォルトの設定です。
    • Release - リリース パッケージのみを保存します。
    • Snapshot - スナップショット パッケージのみを保存します。
    --allow-snapshot-overwrites

    スナップショット リポジトリ専用。このフラグを指定すると、リポジトリ内の既存のバージョンを上書きする一意でないスナップショットを公開できます。

    Terraform

    google_artifact_registry_repository リソースのベータ版を使用してリポジトリを作成します。

    Google Cloud で Terraform を初めて使用する場合は、HashiCorp ウェブサイトの Google Cloud スタートガイド ページをご覧ください。

    次の例では、プロバイダと、Terraform リソース名が my-repo のリポジトリを定義します。

    provider "google" {
        project = "PROJECT-ID"
    }
    
    resource "google_artifact_registry_repository" "my-repo" {
      provider = google-beta
    
      location = "LOCATION"
      repository_id = "REPOSITORY"
      description = "DESCRIPTION"
      format = "FORMAT"
      kms_key_name = "KEY"
    }
    

    Where

    • PROJECT-ID は、Google Cloud プロジェクト ID です。
    • REPOSITORY はリポジトリ名です。
    • LOCATION はリポジトリのロケーションです。
    • DESCRIPTION はリポジトリの説明です(省略可能)。リポジトリの説明は暗号化されないため、機密データは含めないでください。
    • FORMAT は、リポジトリの形式です。

      • Docker
      • KFP
      • MAVEN
      • NPM
      • PYTHON
      • APT
      • YUM
    • KEY は、暗号化に顧客管理の暗号鍵(CMEK)を使用している場合の Cloud Key Management Service 鍵の名前です。デフォルトの設定である Google が管理する暗号鍵を使用する場合は、この引数を省略します。

    Maven リポジトリの場合のみ、maven_config ブロックを使用してリポジトリのバージョン ポリシーを指定できます。このブロックでは次の設定がサポートされます。

    • version_policy は、次のいずれかの値でバージョン ポリシーを設定します。
      • VERSION_POLICY_UNSPECIFIED: スナップショットとリリースのパッケージを保存します。これはデフォルトの設定です。
      • RELEASE: リリース パッケージのみを保存します。
      • SNAPSHOT: スナップショット パッケージのみを保存します。
    • allow_snapshot_overwrites は、リポジトリの既存のバージョンを上書きする一意でないスナップショットを受け入れるように SNAPSHOT バージョン ポリシーでリポジトリを構成します。

    次の例では、リリース バージョン ポリシーを含む Maven リポジトリを定義しています。

    provider "google" {
      project = "my-project"
    }
    
    resource "google_artifact_registry_repository" "my-repo" {
      provider = google-beta
    
      location = "us-central1"
      repository_id = "my-repo"
      description = "Maven repository"
      format = "MAVEN"
      maven_config {
        version_policy = "RELEASE"
      }
    }
    
  3. リポジトリにアクセスするための権限を付与します。

    プロジェクト レベルで Artifact Registry のロールが付与されている場合、それらのロールはプロジェクト内のリポジトリによって継承されます。チームメンバーにプロジェクト内に存在するリポジトリへの異なるレベルのアクセス権を付与する場合は、リポジトリ レベルでロールを付与します。

  4. Docker やパッケージ マネージャーからリポジトリを操作するには、これらのツールの認証を構成する必要があります。適切なページをご覧ください。

リポジトリの説明を更新する

次のコマンドを使用して、既存のリポジトリの説明を更新できます。

gcloud artifacts repositories update REPOSITORY [--project=PROJECT] \
[--location=LOCATION] --description="DESCRIPTION"

どこで

  • REPOSITORY はリポジトリの名前です。 デフォルト リポジトリを構成した場合は、このフラグを省略してデフォルトを使用できます。
  • PROJECT は、Google Cloud プロジェクト ID です。 このフラグを省略すると、現在のプロジェクトまたはデフォルトのプロジェクトが使用されます。
  • LOCATION は、リージョンまたはマルチリージョンのロケーションです。特定のロケーションのリポジトリを表示するには、このフラグを使用します。デフォルト ロケーションを構成している場合は、このフラグを省略してデフォルトを使用できます。
  • DESCRIPTION はリポジトリの説明です。

このコマンドの詳細をご覧になるには、次のコマンドを実行します。

 gcloud artifacts repositories update --help

次のステップ