このページでは、新しいサービスと新しいリビジョンを Cloud Run for Anthos にデプロイする方法について説明します。
前提条件
Google Cloud CLI を使用するには、事前に Google Cloud CLI をインストールして構成する必要があります。
デプロイに必要な権限
apiGroup serving.knative.dev
と種類 Service
での作成、更新、削除の権限に加えて、次のいずれかのロールが必要です。
- オーナー
- 編集者
- GKE 管理者
- GKE デベロッパー
デプロイできるイメージ
デプロイできるコンテナ イメージにはサイズ上限はありません。
Docker Hub など、任意のコンテナ レジストリのコンテナを使用できます。Container Registry や Artifact Registry とは異なるレジストリから非公開イメージをデプロイする方法については、他のコンテナ レジストリから非公開コンテナ イメージをデプロイするをご覧ください。
新しいサービスをデプロイする
タグ(たとえば、gcr.io/my-project/my-image:latest
)または正確なダイジェスト(たとえば、gcr.io/my-project/my-image@sha256:41f34ab970ee...
)でコンテナ イメージを指定できます。
サービスに初めてデプロイすると、最初のリビジョンが作成されます。リビジョンは変更されません。コンテナ イメージタグからデプロイすると、ダイジェストに解決され、リビジョンは常にこの特定のダイジェストを処理します。
コンテナをデプロイするには、Google Cloud コンソール、Google Cloud CLI、または YAML 構成ファイルを使用します。
任意のツールを使用して、手順のタブでクリックします。
デフォルトの gcloud
のロケーション構成
以前に Google Cloud CLI の default
構成でロケーションを構成した場合、gcloud
コマンドはデフォルトで次の値を使用します。
compute/region
compute/zone
run/cluster
run/cluster_location
run/platform
run/region
次の gcloud
config コマンドを実行して、default
構成の設定を表示します。
gcloud config configurations describe default
Console
コンテナ イメージをデプロイするには:
Google Cloud コンソールで Cloud Run for Anthos に移動します。
[サービスを作成] をクリックして、[サービスの作成] ページを表示します。
フォームで次の操作を行います。
デプロイ先の Cloud Run for Anthos プラットフォームを選択します。
- Cloud Run for Anthos(Cloud Run for Anthos を有効にした GKE または Anthos clusters on VMware クラスタにデプロイする場合)。
プルダウン メニューから、サービスで使用可能な GKE クラスタのいずれかを選択します。
任意のサービス名を入力します。サービス名がリージョンとプロジェクトごと、またはクラスタごとに一意である必要があります。サービス名を後で変更することはできません。
[接続] で次の操作を行います。
- 他の Cloud Run for Anthos サービスまたは Istio を使用するクラスタ内のサービスへのアクセスのみを制限する場合は、[内部] を選択します。
- サービスへの外部アクセスを許可するには、[外部] を選択します。
サービスの接続設定の変更で説明されているように、接続オプションはいつでも変更できます。
[次へ] をクリックして、サービス作成フォームの 2 ページ目に進みます。
フォームで次の操作を行います。
[コンテナ イメージの URL] テキスト ボックスで、サポートされているレジストリにあるイメージの URL を指定します。例:
gcr.io/myproject/my-image:latest
非公開のコンテナ イメージで Artifact Registry を使用するには、イメージ ダイジェストを使用する必要があります。非公開のコンテナ イメージのイメージタグを使用するには、既知の問題が解決されるまで、
imagePullSecret
を作成して使用する必要があります。必要に応じて、[詳細設定を表示] をクリックし、次のタブを設定します。
[作成] をクリックしてイメージを Cloud Run for Anthos にデプロイし、デプロイの完了を待ちます。
Cloud Run for Anthos を有効にしたクラスタにサービスがデプロイされました。
コマンドライン
コンテナ イメージをデプロイするには:
gcloud run deploy
コマンドを実行します。gcloud run deploy SERVICE --image IMAGE_URL
SERVICE は、デプロイするサービスの名前に置き換えます。指定されたサービスが存在しない場合、新しいサービスが作成されます。
IMAGE_URL は、コンテナ イメージへの参照(
gcr.io/myproject/my-image:latest
など)に置き換えます。非公開のコンテナ イメージで Artifact Registry を使用するには、イメージ ダイジェストを使用する必要があります。
非公開のコンテナ イメージのイメージタグを使用するには、既知の問題が解決されるまで、
imagePullSecret
を作成して使用する必要があります。
その他のデプロイ オプション:
デフォルト以外の名前空間にデプロイする場合は、
--namespace
パラメータを使用して、その名前空間を指定する必要があります。デフォルト構成以外のロケーションにデプロイする場合は、
--cluster
と--cluster-location
パラメータを使用して、クラスタのname
とlocation
を指定する必要があります。gcloud run deploy SERVICE --cluster CLUSTER-NAME --cluster-location CLUSTER-LOCATION
内部アクセスまたは外部アクセスを指定するには、サービスの接続設定を変更するの説明に沿って、
--connectivity
フラグに接続オプションを設定します。Cloud Run for Anthos オンプレミスの場合は、
--kubeconfig
パラメータに構成ファイルを指定する必要があります。gcloud run deploy SERVICE --image IMAGE_URL --kubeconfig KUBECONFIG-FILE
デプロイが完了するまで待ちます。正常に完了すると、デプロイされたサービスの URL が成功のメッセージと一緒に表示されます。
YAML
サービス仕様を YAML
ファイルに保管してから、Google Cloud CLI を使用してデプロイできます。
新しい
service.yaml
ファイルをこの内容で作成します。apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: containers: - image: IMAGE
次のように置き換えます。
- SERVICE は、Cloud Run for Anthos サービスの名前に置き換えます。
- IMAGE は、コンテナ イメージの URL に置き換えます。非公開のコンテナ イメージで Artifact Registry を使用するには、イメージ ダイジェストを使用する必要があります。非公開のコンテナ イメージのイメージタグを使用するには、既知の問題が解決されるまで、
imagePullSecret
を作成して使用する必要があります。
環境変数やメモリ制限など他の構成を指定することもできます。
次のコマンドを使用して新しいサービスをデプロイします。
gcloud beta run services replace service.yaml
Cloud Code
Cloud Code を使用してデプロイする方法については、IntelliJ と Visual Studio Code のガイドをご覧ください。
既存のサービスの新しいリビジョンをデプロイする
新しいリビジョンをデプロイするには、Google Cloud コンソール、gcloud
コマンドライン、または YAML 構成ファイルを使用します。
構成設定を変更すると、コンテナ イメージに変更がない場合でも、新しいリビジョンが作成されます。作成されたリビジョンは変更できません。
タブをクリックして、使用するツールでの手順を確認してください。
Console
既存のサービスの新しいリビジョンをデプロイするには:
Google Cloud コンソールで Cloud Run for Anthos に移動します。
サービスリストで更新したいサービスをクリックして、サービスの詳細を表示します。
[新しいリビジョンを編集してデプロイ] をクリックします。これにより、リビジョンのデプロイ フォームが表示されます。
必要に応じて、デプロイする新しいコンテナ イメージの URL を入力します。
必要に応じて、次のように設定します。
すべてのトラフィックを新しいリビジョンに送信するには、[このリビジョンをすぐに利用する] のチェックボックスをオンにします。新しいリビジョンを段階的に展開するには、チェックボックスをオフにします。これにより新しいリビジョンにトラフィックが送信されないデプロイになります。デプロイ後に段階的な展開の手順に従ってください。
[デプロイ] をクリックして、デプロイが完了するまで待ちます。
コマンドライン
コンテナ イメージをデプロイするには:
gcloud run services update
コマンドを実行します。gcloud run services update SERVICE --image IMAGE_URL
- リビジョンごとにリビジョンのサフィックスが自動的に割り当てられます。独自のリビジョン サフィックスを指定するには、--revision-suffix パラメータを追加します。
SERVICE は、デプロイするサービスの名前に置き換えます。指定されたサービスが存在しない場合、新しいサービスが作成されます。
IMAGE_URL は、コンテナ イメージへの参照(
gcr.io/myproject/my-image:latest
など)に置き換えます。非公開のコンテナ イメージで Artifact Registry を使用するには、イメージ ダイジェストを使用する必要があります。
非公開のコンテナ イメージのイメージタグを使用するには、既知の問題が解決されるまで、
imagePullSecret
を作成して使用する必要があります。
その他のデプロイ オプション:
デフォルト以外の名前空間にデプロイする場合は、
--namespace
パラメータを使用して、その名前空間を指定する必要があります。デフォルト構成以外のロケーションにデプロイする場合は、
--cluster
と--cluster-location
パラメータを使用して、クラスタのname
とlocation
を指定する必要があります。gcloud run deploy SERVICE --cluster CLUSTER-NAME --cluster-location CLUSTER-LOCATION
内部アクセスまたは外部アクセスを指定するには、サービスの接続設定を変更するの説明に沿って、
--connectivity
フラグに接続オプションを設定します。Cloud Run for Anthos オンプレミスの場合は、
--kubeconfig
パラメータに構成ファイルを指定する必要があります。gcloud run deploy SERVICE --image IMAGE_URL --kubeconfig KUBECONFIG-FILE
デプロイが完了するまで待ちます。正常に完了すると、デプロイされたサービスの URL が成功のメッセージと一緒に表示されます。
YAML
--format=export
フラグを使用して、gcloud run services describe
コマンドで既存のサービスの構成を YAML ファイルにダウンロードできます。次に YAML ファイルを変更し、gcloud beta run services replace
コマンドを使用してこれらの変更をデプロイします。指定した属性のみを変更する必要があります。
ローカル ワークスペースの
service.yaml
という名前のファイルにサービスの構成をダウンロードします。gcloud run services describe SERVICE --format export > service.yaml
SERVICE は、Cloud Run for Anthos サービスの名前に置き換えます。
ローカル ファイルの
spec.template
の子属性でリビジョン設定を更新します。新しいリビジョンをデプロイします。
gcloud beta run services replace service.yaml
Cloud Code
Cloud Code を使用して既存のサービスの新しいリビジョンをデプロイする方法については、IntelliJ と Visual Studio Code のガイドをご覧ください。
他の Google Cloud プロジェクトからイメージをデプロイする
正しい IAM 権限を設定されている場合は、他の Google Cloud プロジェクトのコンテナ イメージをデプロイできます。
Google Cloud コンソールのコンソールで、Cloud Run for Anthos サービスのプロジェクトを開きます。
デプロイ先に応じて、次の操作を行います。
Cloud Run for Anthos の場合は、Compute Engine のデフォルトのサービス アカウントのメールアドレスをコピーします。このアドレスには、@developer.gserviceaccount.com という接尾辞が付いています。
Cloud Run for Anthos on VMware の場合は、Google Cloud サービス アカウントを作成し、認証情報をダウンロードします。これらの認証情報を Kubernetes サービス アカウントのデフォルト
imagePullSecrets
として追加します。
使用するコンテナ レジストリを所有するプロジェクトを開きます。
[追加] をクリックして、新しいプリンシパルを追加します。
[新しいプリンシパル] テキスト ボックスに、先ほどコピーしたサービス アカウントのメールアドレスを貼り付けます。
[ロールを選択] プルダウン リストで、ストレージ -> ストレージ オブジェクト閲覧者を選択します。
Cloud Run for Anthos サービスを含むプロジェクトにコンテナ イメージをデプロイします。
他のコンテナ レジストリから非公開コンテナ イメージをデプロイする
このセクションでは、任意の非公開レジストリから Cloud Run for Anthos へのコンテナ イメージをデプロイするための適切な権限の設定について説明します。非公開コンテナ レジストリには、コンテナ イメージにアクセスするための認証情報が必要です。なお、クラスタと同じプロジェクト内の Container Registry または Artifact Registry から非公開コンテナ イメージをデプロイする場合は、この手順を行う必要はありません。
非公開コンテナ イメージをデプロイするには、imagePullSecret
タイプの Kubernetes シークレットを作成し、それをサービス アカウントに関連付ける必要があります。
container-registry
と呼ばれるimagePullSecret
Secret を作成します。kubectl create secret docker-registry container-registry \ --docker-server=DOCKER_REGISTRY_SERVER \ --docker-email=REGISTRY_EMAIL \ --docker-username=REGISTRY_USER \ --docker-password=REGISTRY_PASSWORD
- DOCKER_REGISTRY_SERVER は非公開レジストリ FQDN に置き換えます(例: Container Registry の場合は https://gcr.io/、DockerHub の場合は https://hub.docker.com)。
- REGISTRY_EMAIL はメールアドレスに置き換えます。
REGISTRY_USER はコンテナ レジストリのユーザー名に置き換えます。
Container Registry または Artifact Registry を使用していて、有効期間が短いアクセス トークンではなく、有効期間が長い認証情報を格納および pull する場合は、認証方法: JSON キーファイルをご覧ください。
REGISTRY_PASSWORD をコンテナ レジストリのパスワードに置き換えます。
デフォルトのサービス アカウントを開きます。
kubectl edit serviceaccount default --namespace default
Kubernetes クラスタ内のすべての名前空間には、
default
というデフォルトのサービス アカウントがあります。このデフォルトのサービス アカウントは、Cloud Run for Anthos サービスのデプロイ時に指定された場合を除き、コンテナ イメージを pull するために使用されます。新しく作成した
imagePullSecret
シークレットをデフォルトのサービス アカウントに追加します。imagePullSecrets: - name: container-registry
サービス アカウントは次のようになります。
apiVersion: v1 kind: ServiceAccount metadata: name: default namespace: default ... secrets: - name: default-token-zd84v # The secret we just created: imagePullSecrets: - name: container-registry
これで、現在の default
名前空間に作成された新しい Pod には、imagePullSecret
Secret が定義されます。
自動 Istio サイドカー インジェクションを有効にしてデプロイする
自動 Istio サイドカー インジェクションを有効にして名前空間でサービスをデプロイするには、個別の Istio インストールを使用する必要があります。
内部ネットワークにサービスをデプロイする
内部ネットワークでのサービスのデプロイは、社内用アプリをスタッフに提供する企業や、Cloud Run for Anthos クラスタの外部で実行されるクライアントが使用するサービスにおいて便利です。
内部ネットワークにサービスをデプロイする方法については、プライベートな内部ネットワークの設定をご覧ください。
次のステップ
新しいサービスをデプロイしたら、次のことを行うことができます。
- 段階的なロールアウト、ロールバックの修正、トラフィックの移行
- サービスログを表示する
- サービスのパフォーマンスをモニタリングする
- メモリ制限を設定する
- 環境変数を設定する
- サービスの同時実行を変更する
- サービスを管理する
- サービスのリビジョンを管理する
Cloud Build トリガーを使用して Cloud Run for Anthos サービスのビルドとデプロイを自動化できます。