Google Cloud Platformに戻る

Artifact Registry

Artifact Registryとは

Artifact Registry は、Google Cloud Platform (GCP) が提供するフルマネージドのアーティファクトリポジトリサービスです。コンテナイメージ、言語パッケージ(npm、Maven、Python)、OS パッケージなどのソフトウェアアーティファクトを保存、管理、セキュア化するための統合リポジトリです。Artifact Registryは、CI/CDパイプラインとシームレスに統合され、ソフトウェア開発ライフサイクル全体をサポートします。

Artifact Registryの主な特徴

Artifact Registryのアーキテクチャ

Artifact Registryは以下の主要コンポーネントで構成されています:

コンポーネント 説明
リポジトリ アーティファクトを保存する論理的なコンテナ。特定のフォーマット(Docker、npm など)に対応
アーティファクト リポジトリに保存されるソフトウェアパッケージ(コンテナイメージ、npm パッケージなど)
バージョン アーティファクトの特定のバージョン。タグやダイジェストで識別
ロケーション リポジトリが配置される地理的な場所(リージョンまたはマルチリージョン)
IAMポリシー リポジトリへのアクセスを制御するポリシー

Artifact Registry と Container Registry の違い

Artifact RegistryはContainer Registryの後継サービスであり、以下のような違いがあります:

Artifact Registryの使用方法

Artifact Registryは、Google Cloud Console、gcloud CLIツール、またはAPIを使用して利用できます。

リポジトリの作成

Google Cloud Consoleまたはgcloud CLIを使用してリポジトリを作成できます:

gcloud CLIを使用したDockerリポジトリの作成

gcloud artifacts repositories create my-docker-repo \
    --repository-format=docker \
    --location=asia-northeast1 \
    --description="Docker repository for my applications"

gcloud CLIを使用したnpmリポジトリの作成

gcloud artifacts repositories create my-npm-repo \
    --repository-format=npm \
    --location=asia-northeast1 \
    --description="npm repository for JavaScript packages"

Dockerイメージの操作

Artifact RegistryにDockerイメージをプッシュおよびプルする方法:

認証の設定

gcloud auth configure-docker asia-northeast1-docker.pkg.dev

イメージのタグ付け

docker tag my-image:latest asia-northeast1-docker.pkg.dev/my-project/my-docker-repo/my-image:latest

イメージのプッシュ

docker push asia-northeast1-docker.pkg.dev/my-project/my-docker-repo/my-image:latest

イメージのプル

docker pull asia-northeast1-docker.pkg.dev/my-project/my-docker-repo/my-image:latest

npmパッケージの操作

Artifact Registryにnpmパッケージを公開および使用する方法:

認証の設定

npx google-artifactregistry-auth

パッケージの公開

# package.jsonの設定
{
  "name": "my-package",
  "version": "1.0.0",
  "publishConfig": {
    "registry": "https://asia-northeast1-npm.pkg.dev/my-project/my-npm-repo/"
  }
}

# パッケージの公開
npm publish

パッケージのインストール

# .npmrcの設定
@myorg:registry=https://asia-northeast1-npm.pkg.dev/my-project/my-npm-repo/

# パッケージのインストール
npm install @myorg/my-package

Artifact Registryの高度な機能

脆弱性スキャン

Artifact Registryは、Container Analysis APIを使用してコンテナイメージの脆弱性を自動的にスキャンします:

# 脆弱性スキャンの有効化
gcloud artifacts repositories update my-docker-repo \
    --location=asia-northeast1 \
    --enable-vulnerability-scanning

スキャン結果の確認:

gcloud artifacts docker images list-vulnerabilities \
    asia-northeast1-docker.pkg.dev/my-project/my-docker-repo/my-image:latest \
    --location=asia-northeast1

リポジトリのアップストリーム設定

リポジトリにアップストリームを設定して、パッケージが見つからない場合に別のリポジトリから取得できます:

gcloud artifacts repositories update my-npm-repo \
    --location=asia-northeast1 \
    --add-upstream-policies=repository=projects/my-project/locations/asia-northeast1/repositories/upstream-repo,priority=1

Artifact Registryのセキュリティベストプラクティス

IAMポリシーの設定例

# 読み取り専用アクセスの付与
gcloud artifacts repositories add-iam-policy-binding my-docker-repo \
    --location=asia-northeast1 \
    --member=serviceAccount:my-service-account@my-project.iam.gserviceaccount.com \
    --role=roles/artifactregistry.reader

# 書き込みアクセスの付与
gcloud artifacts repositories add-iam-policy-binding my-docker-repo \
    --location=asia-northeast1 \
    --member=serviceAccount:ci-service-account@my-project.iam.gserviceaccount.com \
    --role=roles/artifactregistry.writer

Artifact Registryのモニタリングとロギング

Artifact RegistryはGoogle Cloud Monitoringおよびロギングと統合されており、リポジトリの使用状況とアクティビティを監視できます:

主なモニタリング機能

監査ログの有効化

Artifact Registryの監査ログを有効にするには:

gcloud logging sinks create artifact-registry-logs \
    storage.googleapis.com/my-project-logs \
    --log-filter='resource.type="artifactregistry.googleapis.com/Repository"'

Artifact Registryのコスト最適化

Artifact Registryのコストを最適化するためのベストプラクティス:

ライフサイクルルールの設定例

gcloud artifacts repositories update my-docker-repo \
    --location=asia-northeast1 \
    --cleanup-policies="{
      'name': 'delete-old-versions',
      'action': 'DELETE',
      'condition': {
        'olderThan': '90d',
        'tagState': 'TAGGED',
        'tagPrefixes': ['dev-']
      }
    }"

Artifact Registryのユースケース

Artifact Registryは以下のようなユースケースに適しています:

Artifact Registryとの統合サービス

Artifact Registryは他のGoogle Cloudサービスと統合して、より強力なソフトウェア開発ワークフローを構築できます:

サービス 統合の利点
Cloud Build ビルドプロセスで生成されたアーティファクトを自動的に保存
GKE コンテナイメージをKubernetesクラスタにシームレスにデプロイ
Cloud Run コンテナイメージをサーバーレス環境に直接デプロイ
Binary Authorization 署名されたコンテナイメージのみをデプロイするポリシーを適用
Container Analysis コンテナイメージの脆弱性スキャンと分析
Cloud Deploy 複数環境へのアーティファクトの段階的なデプロイを管理
VPC Service Controls セキュリティ境界内でのアーティファクトの管理

まとめ

Artifact Registry は、Google Cloud Platform上でのソフトウェアアーティファクトの管理を簡素化するフルマネージドサービスです。コンテナイメージ、言語パッケージ、OSパッケージなど、さまざまな種類のアーティファクトを単一のサービスで管理できます。

Artifact Registryの主な利点は以下の通りです:

Artifact Registryを効果的に活用するには、適切なリポジトリ構造の設計、セキュリティ対策の実装、ライフサイクル管理の自動化が重要です。また、他のGCPサービスと組み合わせることで、エンドツーエンドのソフトウェア開発ライフサイクルを効率化することができます。