Google Cloud Platform での Container Registry の使用

Google Cloud Platform のコンピューティング リソースは、簡単にアクセスできるように Container Registry と統合されています。

Compute Engine

Compute Engine インスタンスから非公開 Docker イメージを pull するには、イメージのバケットに対する read 権限がインスタンスに付与されている必要があります。インスタンスとイメージ バケットが同じ Google Cloud Platform プロジェクトにある場合は、デフォルトで正しく構成されています。

非公開 Docker イメージを Compute Engine インスタンスから push するには、イメージのバケットに対する read-write または full-control 権限がインスタンスに付与されている必要があります。

ストレージ バケットの read-write 権限でインスタンスを開始するには、次のコマンドを実行します。

gcloud compute instances create INSTANCE \
  --scopes https://www.googleapis.com/auth/devstorage.read_write

コンテナ用に最適化された Compute Engine インスタンス

レジストリ内のイメージを使用してコンテナ用に最適化された Compute Engine インスタンスを起動する方法については、Cloud-Config 経由で Docker コンテナを開始するをご覧ください。

詳細については、インスタンスの作成と構成をご覧ください。

Google Kubernetes Engine

Google Kubernetes Engine クラスタは、同じプロジェクトの Container Registry から非公開イメージを pull できるように自動的に構成されます。レジストリとクラスタが同じ Cloud プロジェクトにある場合、認証構成の追加手順を行う必要はありません。

次のコマンドを使用して、Google Kubernetes Engine クラスタで Container Registry イメージを実行できます。

kubectl run [NAME] --image=[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]

ここで

  • [NAME] はリソースの名前です。
  • [HOSTNAME] は、コンソールで Location の下に表示されます。4 つのオプション、gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io のいずれかです。
  • [PROJECT-ID] は Google Cloud Platform Console プロジェクト ID です。プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
  • [IMAGE] は、Container Registry 内のイメージ名です。
  • [TAG] は、Container Registry 内のイメージのバージョンを識別するタグです。タグを指定しない場合、Container Registry はデフォルトタグ latest を探します。

Kubernetes コマンドの詳細については、kubectl の概要をご覧ください。イメージが別のプロジェクトにある場合は、イメージを格納しているストレージ バケットの Google Kubernetes Engine クラスタで使用されているサービス アカウントへの読み取りアクセス権を明示的に付与する必要があります。

別のプロジェクトで実行されているクラスタからイメージを pull する権限を付与する方法については、アクセス制御の構成をご覧ください。

Google Kubernetes Engine はクラスタノードの VM インスタンスで構成されたサービス アカウントを使用して、レジストリからイメージを pull します。イメージの pull で使用されるサービス アカウントは次のとおりです。

  • [PROJECT_ID]-compute@developer.gserviceaccount.com の形式(デフォルト)。
  • gcloud でクラスタを作成するときに --service-account オプションを指定した場合には、このオプションと同じ値。

App Engine フレキシブル環境

App Engine フレキシブル環境を使用すると、既存のランタイム(Java 8 など)をカスタマイズできます。また、カスタム Docker イメージまたは Dockerfile を提供することによって、独自のランタイムを構成できます。

フレキシブル環境では、Cloud Build を使用してコンテナ イメージが自動的にビルドされ、Container Registry に保存されます。

App Engine へのデプロイ

gcloud コマンドライン ツールを使用して、Container Registry がホストするイメージを App Engine にデプロイできます。

イメージのルート ディレクトリで gcloud beta app gen-config コマンドを使用すると、App Engine にデプロイするために必要な app.yaml ファイルが自動的に作成されます。このファイルは自分で作成することもできます。

App Engine 構成ファイルを作成し、Docker イメージをビルドしてイメージを Container Registry に push したら、次のコマンドを実行してイメージを App Engine にデプロイできます。

gcloud app deploy --image-url=[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]

ここで

  • [HOSTNAME] は、コンソールで [場所] の下に表示されます。4 つのオプション、gcr.ious.gcr.ioeu.gcr.ioasia.gcr.io のいずれかです。
  • [PROJECT-ID] は Google Cloud Platform Console プロジェクト ID です。プロジェクト ID にコロン(:)が含まれている場合は、ドメインをスコープとするプロジェクトをご覧ください。
  • [IMAGE] は、Container Registry 内のイメージ名です。
  • [TAG] は、Container Registry 内のイメージのバージョンを識別するタグです。タグを指定しない場合、Container Registry はデフォルトタグ latest を探します。
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...