既存の GKE クラスタで Cloud Run を有効にする

このガイドでは、既存の GKE クラスタで Cloud Run を有効にする方法について説明します。

Cloud Run for Anthos on Google Cloud を有効にすると、クラスタに Knative Serving がインストールされ、ステートレス ワークロードを管理できます。

要件

このページでは、環境を設定済みで、次の最小構成のクラスタがあることを前提としています。

  • 2 vCPU のノード
  • スコープ: https://www.googleapis.com/auth/logging.writehttps://www.googleapis.com/auth/monitoring.write

Cloud Run 用に既存のクラスタを有効にする

gcloud コマンドラインまたはコンソールを使用して、クラスタの Cloud Run を有効にできます。

コンソール

既存のクラスタで Cloud Run を有効にするには、次の手順を行います。

  1. Cloud Console で Google Kubernetes Engine のページに移動します。

    Google Kubernetes Engine に移動

  2. Cloud Run を有効にするクラスタをクリックします。

  3. [編集] をクリックします。

  4. [Cloud Run for Anthos on Google Cloud を有効にする] を選択します。

  5. [保存] をクリックします。更新が完了すると、クラスタは Cloud Run をサポートします。

コマンドライン

既存のクラスタで Cloud Run を有効にするには、次の手順を行います。

  1. 次のコマンドを使用してクラスタを有効にします。

    gcloud container clusters update \
        CLUSTER_NAME \
        --update-addons=CloudRun=ENABLED,HttpLoadBalancing=ENABLED \
        --zone=ZONE

    置換

    • CLUSTER_NAME をクラスタの名前に置き換えます。
    • ZONE をクラスタに使用しているゾーンに置き換えます(例: us-central1-a)。
  2. 有効化が完了するまで待ちます。成功すると、Updating your-cluster-name...done. のようなメッセージが表示されます。

限定公開クラスタでのデプロイの有効化

限定公開 GKE クラスタで Cloud Run for Anthos にサービスをデプロイするには、マスターサーバーからポート 8443 上のノードへの TCP 接続を許可し、プロジェクトのファイアウォール ルールを編集して、許可する TCP 接続のリストにポート 8443 を手動で指定する必要があります。

  1. クラスタ マスターの CIDR ブロックを表示し、masterIpv4CidrBlock フィールドの値を記録します。

    gcloud container clusters describe CLUSTER-NAME
  2. TARGET_TAGS フィールドの値を表示し記録します。

    gcloud compute firewall-rules list \
            --filter 'name~^gke-CLUSTER-NAME' \
                --format 'table(
                        name,
                        network,
                        direction,
                        sourceRanges.list():label=SRC_RANGES,
                        allowed[].map().firewall_rule().list():label=ALLOW,
                        targetTags.list():label=TARGET_TAGS
                )'
  3. 上記で記録した値を使用して、ファイアウォール ルールを追加します。

    gcloud compute firewall-rules create FIREWALL-RULE-NAME \
          --action ALLOW \
          --direction INGRESS \
          --source-ranges MASTER-CIDR-BLOCK \
          --rules tcp:8443 \
          --target-tags TARGET

    詳細については、ファイアウォール ルールの作成をご覧ください。

Workload Identity を持つクラスタでの指標の有効化

Workload Identity を持つ GKE クラスタで Cloud Run for Anthos を使用する場合、サービスで使用される Workload Identity には、Cloud Monitoring に指標を書き込む権限が必要です。これには、Kubernetes サービスアカウント(KSA)と Google サービスアカウント(GSA)の間に関係を設定する必要があります。

指標 logging.logMetrics.create の書き込みに必要な権限を含めるため、GSA の Cloud Identity and Access Management 権限を設定する必要があります。この権限はデフォルトで Logs Configuration Writer 役割に含まれています。

マルチテナント環境での開発

マルチテナントのユースケースでは、現在のプロジェクトの外部にある Google Kubernetes Engine クラスタへの Cloud Run for Anthos サービスを管理してデプロイする必要があります。このセクションでは、マルチテナント クラスタ設定で Cloud Run for Anthos on Google Cloud サービスを開発する方法について説明します。

現在のプロジェクト外の Google Kubernetes Engine クラスタへの Cloud Run for Anthos サービスを管理してデプロイするには、次の手順を行います。

  1. デプロイするクラスタの Google Cloud プロジェクト ID に対する読み取りアクセス権があることを確認します。

  2. ターゲット GKE クラスタの認証情報でローカルの kubeconfig ファイルを更新します。

    gcloud container clusters get-credentials NAME \
        --region=REGION \
        --project=PROJECT-ID
    • REGION は、ターゲット クラスタの Compute Engine リージョンです。
    • PROJECT-ID は、読み取りアクセス権を持つプロジェクトです。

    詳細については、gcloud container clusters get-credentials コマンドのリファレンス ドキュメントをご覧ください。

  3. gcloud コマンドラインを使用して、デフォルトのプラットフォームを kubernetes に設定した GKE クラスタと通信します。

    gcloud config set run/platform kubernetes
        

これで kubeconfig ファイルで指定されたターゲット GKE クラスタでコマンドを実行できるようになりました。

たとえば、次のコマンドは、認証情報が kubeconfig ファイルに保存されている GKE クラスタへ指定されたコンテナ イメージを使用して、Cloud Run for Anthos サービスをデプロイします。

gcloud run deploy SERVICE-NAME --image IMAGE-NAME

クラスタの Cloud Run を無効にする

クラスタの Cloud Run は、コンソールまたはコマンドラインを使用していつでも無効にできます。

コンソール

クラスタの Cloud Run を無効にするには、次の手順を行います。

  1. Cloud Console で Google Kubernetes Engine のページに移動します。

    Google Kubernetes Engine に移動

  2. Cloud Run を無効にするクラスタをクリックします。

  3. [Cloud Run for Anthos on Google Cloud を無効にする] を選択します。

  4. 必要に応じて、Cloud Run を使用しなければクラスタでも使用しないアドオンを無効にします。これには Istio も含まれます。

  5. [保存] をクリックします。

コマンドライン

クラスタを削除するには:

  1. 次のコマンドを実行します。

    gcloud container clusters update \
        CLUSTER_NAME \
        --update-addons=CloudRun=DISABLED \
        --zone=ZONE

    置換

    • CLUSTER_NAME をクラスタの名前に置き換えます。
    • ZONE をクラスタに使用しているゾーンに置き換えます(例: us-central1-a)。
  2. 有効化が完了するまで待ちます。成功すると、Updating your-cluster-name...done. のようなメッセージが表示されます。