Cloud Run for Anthos on Google Cloud の設定

このガイドでは、Google Kubernetes Engine クラスタを設定し、Cloud Run for Anthos on Google Cloud を有効にする方法について説明します。Cloud Console または gcloud コマンドライン ツールを使用して、標準 GKE クラスタと限定公開 GKE クラスタで Cloud Run for Anthos を有効にできます。

Cloud Run for Anthos を有効にすると、IstioKnative Serving がクラスタにインストールされ、ステートレス ワークロードが接続および管理されます。詳細については、Cloud Run for Anthos のアーキテクチャの概要をご覧ください。

始める前に

  1. Cloud Run for Anthos は Google Kubernetes Engine のアドオンです。無料トライアルは 2021 年 9 月 30 日まで有効です
  2. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  3. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  4. Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

コマンドライン環境の設定

Cloud Run for Anthos の管理には Cloud Console または gcloud ツールのいずれかを使用できますが、gcloud ツールを必要とする一部のタスクもあります。

Cloud Run for Anthos の gcloud および kubectl コマンドライン ツールを設定するには:

  1. Cloud SDK をインストールして初期化します

  2. gcloud ツールのデフォルトのプロジェクト設定を、先ほど作成したプロジェクトか、使用する既存のプロジェクトに設定します。

    gcloud config set project PROJECT-ID

    PROJECT-ID は、作成したプロジェクトのプロジェクト ID に置き換えます。

  3. zone をクラスタに必要なゾーンに設定します。GKE がサポートされている任意のゾーンを使用できます。次に例を示します。

    gcloud config set compute/zone ZONE

    ZONE は、実際のゾーンに置き換えます。

  4. プロジェクトで次の API を有効にします。これは、クラスタの作成、コンテナの構築、Google Kubernetes Engine レジストリへのコンテナの公開に必要です。

    gcloud services enable container.googleapis.com containerregistry.googleapis.com cloudbuild.googleapis.com
  5. kubectl コマンドライン ツールをインストールします。

    gcloud components install kubectl
  6. インストール済みの gcloud ツール コンポーネントを更新します。

    gcloud components update

Cloud Run for Anthos の有効化

Cloud Run for Anthos は GKE クラスタ上で動作します。既存のクラスタで Cloud Run for Anthos を有効にすることも、Cloud Run for Anthos を有効にした新しいクラスタを作成することもできます。

Cloud Run for Anthos の設定方法を選択するには:

Cloud Run for Anthos は、限定公開 GKE クラスタで有効にすることもできます。限定公開 GKE クラスタの作成方法については、GKE ドキュメントの限定公開クラスタの作成をご覧ください。

Cloud Run for Anthos を有効にした新しい GKE クラスタの作成

以下の手順では、次の構成でクラスタを作成します。

Cloud Run for Anthos のテストには、これらのクラスタ構成が推奨されます。本番環境のワークロードでは、特定のニーズに合わせて GKE クラスタを構成する必要があります。さまざまな GKE クラスタとその構成オプションについては、GKE ドキュメントのクラスタのタイプをご覧ください。

Console

Cloud Run for Anthos を有効にしたクラスタを作成するには:

  1. Cloud Console で Cloud Run for Anthos ページに移動します。

    Cloud Run に移動

  2. [サービスを作成] をクリックします。

  3. 利用可能なクラスタメニューで [新しいクラスタの作成] をクリックします。

  4. [Create new Cloud Run for Anthos-enabled default cluster] ペインで、次の操作を行います。

    • クラスタのゾーンを選択します。近くのロケーションを選択します。たとえば、米国西海岸にいる場合は us-west1-a を選択します。

    • 新しいクラスタの [名前] を選択します。

    • [クイック作成] をクリックすると、Cloud Run for Anthos が有効であり、その最小要件を持つクラスタが作成されます。

  5. 新しい Cloud Run for Anthos サービスの [名前] を選択し、[次へ] をクリックします。

  6. [サービスの最初のリビジョンの構成] セクションで、次の操作を行います。

    • [既存のコンテナ イメージから 1 つのリビジョンをデプロイする] を選択します。

    • [コンテナ イメージの URL] フィールドに独自のコンテナ イメージの URL を入力するか、[選択] をクリックして使用可能な Container Registry コンテナと一連のデモコンテナから選択します。

    • [次へ] をクリックします。

  7. [接続] セクションで、内部サービスと外部サービスのどちらを作成するかを選択します。内部サービスにはクラスタ ネットワーク経由でのみアクセスできますが、外部サービスには公共のインターネットからアクセスできます。この設定は後からでも変更可能です。

  8. [作成] をクリックします。クラスタとサービスが作成されるまでに数分かかります。

コマンドライン

クラスタを作成して Cloud Run for Anthos を有効にするには:

  1. クラスタを作成します。

    gcloud container clusters create CLUSTER-NAME \
    --zone=ZONE \
    --addons=HttpLoadBalancing,CloudRun \
    --machine-type=n1-standard-2 \
    --num-nodes=3 \
    --cluster-version=GKE-VERSION \
    --enable-stackdriver-kubernetes

    クラスタの自動スケーリングはデフォルトでは有効になっていませんが、Cloud Run for Anthos はクラスタ内の使用可能な容量に基づいてインスタンス数を自動的に調整します。

  2. クラスタの作成が完了するまで待機します。

既存のクラスタでの Cloud Run for Anthos の有効化

GKE クラスタには、次の最小構成が必要です。

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

gcloud ツールまたは Cloud Console を使用して、クラスタで Cloud Run for Anthos を有効にできます。

Console

既存のクラスタで Cloud Run for Anthos を有効にするには:

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

    Google Kubernetes Engine に移動

  2. Cloud Run for Anthos を有効にするクラスタの名前をクリックします。

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

  4. [Cloud Run for Anthos の有効化] を選択します。

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

コマンドライン

既存のクラスタで Cloud Run for Anthos を有効にするには:

  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.

gcloud ツールのデフォルトの設定を構成する

クラスタを作成した後、使用する gcloud コマンドライン ツールのデフォルト値を設定できます。このコマンドラインを使用すると、クラスタ名やロケーションなどの設定したデフォルト値に関するプロンプトが表示されなくなります。

以下についてデフォルト設定を構成できます。

  • クラスタ名
  • クラスタのロケーション
  • 認証情報
  • 名前空間
  • プラットフォーム

デフォルトを設定するには:

  1. デフォルトのクラスタとクラスタのロケーションを設定し、次のコマンドを実行して認証情報を取得します。

    gcloud config set run/platform gke
    gcloud config set run/cluster CLUSTER
    gcloud config set run/cluster_location ZONE
    gcloud container clusters get-credentials CLUSTER

    以下のように置き換えます。

    • CLUSTER は、クラスタの名前に置き換えます。
    • ZONE は、クラスタの場所に置き換えます。
  2. デフォルトでは、クラスタは default という名前の Namespace で作成されます。Namespace、および default 以外の Namespace を作成して使用する理由については、 Namespace をご覧ください。

    新しい Namespace を作成するには:

    kubectl create namespace NAMESPACE

    NAMESPACE は、作成する Namespace の名前に置き換えます。

  3. 前の手順で新しい Namespace を作成した場合は、gcloud コマンドライン ツールを呼び出すたびに使用するデフォルトの Namespace としてその名前空間を設定できます。それ以外の場合は、default Namespace が使用されます。新しい Namespace を設定するには、次のコマンドを実行します。

    gcloud config set run/namespace NAMESPACE

    NAMESPACE は、gcloud ツールがデフォルトで使用する Namespace の名前に置き換えます。

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

Workload Identity を有効にすると、Cloud Run for Anthos はリビジョン リクエスト数やリクエストのレイテンシなどの特定の指標を Google Cloud のオペレーション スイートに報告しませんが、CPU とメモリなどの指標の報告は継続します。

すべての指標を有効にするには、Cloud Monitoring に指標を書き込むための権限を手動で設定する必要があります。そのためには、お使いの Cloud Run for Anthos サービスに関連付けられた Google サービス アカウント(GSA)にモニタリング指標の書き込みのロールを付与します。

サービスの GSA にモニタリング指標書き込みのロールの権限を付与します。

gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:GSA_NAME@GSA_PROJECT.iam.gserviceaccount.com \
--role=roles/monitoring.metricWriter

以下のように置き換えます。

  • PROJECT_ID は、KSA をホストするクラスタ プロジェクトのプロジェクト ID に置き換えます。
  • GSA_PROJECT は、クラスタ内に存在しない GSA のプロジェクト ID に置き換えます。組織内のどの GSA も使用できます。

詳細については、リソースへのアクセス権の付与、変更、取り消しをご覧ください。

GKE クラスタ内から、Compute API、Storage API、Database API、Machine Learning API などの Google Cloud APIs が提供するサービスを設定する方法については、Workload Identity の使用をご覧ください。

マルチテナント設定での開発

マルチテナントのユースケースでは、現在のプロジェクトの外部にある Google Kubernetes Engine クラスタへの Cloud Run for Anthos on Google Cloud サービスを管理してデプロイする必要があります。GKE マルチテナンシーの詳細については、クラスタ マルチテナンシーをご覧ください。

Cloud Run for Anthos のマルチテナンシーを構成する方法については、クロスプロジェクト マルチテナンシーをご覧ください。

プライベートな内部ネットワークの設定

内部ネットワークでのサービスのデプロイは、社内用アプリをスタッフに提供する企業や、Cloud Run for Anthos on Google Cloud クラスタの外部で実行されるクライアントが使用するサービスにおいて便利です。この構成により、ネットワーク内の他のリソースが、一般からはアクセスできない非公開の内部 IP アドレス(RFC 1918)を使用するサービスと通信できるようになります。

内部ネットワークを作成するには、公開の外部ネットワーク ロードバランサではなく、内部 TCP / UDP 負荷分散を使用するように Istio の Ingress ゲートウェイを構成します。これにより、VPC ネットワークの内部 IP アドレスに Cloud Run for Anthos サービスをデプロイできます。

始める前に

  • クラスタで admin 権限が必要です。
  • サポートされているのは、Cloud SDK バージョン 310.0 以降のみです。詳細については、gcloud の設定をご覧ください。

内部ロードバランサをセットアップするには:

  1. 新しいクラスタを作成するか既存のクラスタを更新して、内部 TCP / UDP 負荷分散を使用するように Istio Ingress ゲートウェイを更新します。

    • 内部ロードバランサで新しいクラスタを作成します。

      gcloud container clusters create CLUSTER_NAME \
      --addons=HttpLoadBalancing,CloudRun \
      --machine-type=n1-standard-2  \
      --num-nodes=3  \
      --enable-stackdriver-kubernetes \
      --cloud-run-config=load-balancer-type=INTERNAL
    • 内部ロードバランサを使用するように既存のクラスタを更新します。

      gcloud container clusters update CLUSTER_NAME
      --update-addons=CloudRun=ENABLED \
      --cloud-run-config=load-balancer-type=INTERNAL

    変更が有効になるまで数分かかることがあります。

  2. 次のコマンドを実行して、GKE クラスタの更新を確認します。

    kubectl -n gke-system get svc istio-ingress --watch
    
    1. アノテーション「cloud.google.com/load-balancer-type: Internal」を記録します。
    2. Ingress ロードバランサで IP の値を探して、プライベート IP アドレスに変更します。
    3. IP フィールドにプライベート IP アドレスが表示されたら、Ctrl+C を押して更新を停止します。

変更後の内部接続を確認するには:

  1. sample という Service を default Namespace の Cloud Run for Anthos にデプロイします。

    gcloud run deploy sample \
    --image gcr.io/knative-samples/simple-api \
    --namespace default
    
  2. Compute Engine 仮想マシン(VM)を、GKE クラスタと同じゾーンに作成します。

    VM=cloudrun-gke-ilb-tutorial-vm
    
    gcloud compute instances create $VM
    
  3. Istio Ingress ゲートウェイのプライベート IP アドレスを EXTERNAL_IP 環境変数と external-ip.txt ファイルに保存します。

    export EXTERNAL_IP=$(kubectl -n gke-system get svc istio-ingress \
        -o jsonpath='{.status.loadBalancer.ingress[0].ip}' | tee external-ip.txt)
    
  4. IP アドレスを含むファイルを VM にコピーします。

    gcloud compute scp external-ip.txt $VM:~
    
  5. SSH を使用して VM に接続します。

    gcloud compute ssh $VM
    
  6. SSH セッション中に、サンプル サービスをテストします。

    curl -s -w'\n' -H Host:sample.default.example.com $(cat external-ip.txt)
    

    出力は次のとおりです。

    OK
    
  7. SSH セッションを終了します。

    exit
    

個別の Istio インストールを使用する

次の手順では、すでにデフォルトで Cloud Run for Anthos にインストールされている Istio コンポーネントに加えて、Anthos Service MeshIstio on GKE アドオン、またはカスタム Istio インストールを Cloud Run for Anthos に接続する方法について説明します。

デフォルトの Cloud Run for Anthos のインストールに含まれる Istio コンポーネントは、現在自動サイドカー インジェクションに対応していません。ただし、追加の Istio インストールを使用して、サービスが実行されている Namespace で Istio サイドカー インジェクションを有効にすることができます。

Istio を追加でインストールするには、Istio Ingress Gateway の名前が、istio-system Namespace で istio-ingressgateway であることを確認する必要があります。Cloud Run for Anthos は、次の場所にインストールされた Istio Ingress Gateway からの外部トラフィックをサポートし、処理できます。

  • istio-system Namespace。追加の Istio インストールを使用するときにデフォルトで設定されたクラスタ ローカル ドメイン istio-ingressgateway.istio-system.svc.cluster.local を持ちます。
  • gke-system Namespace。デフォルトの Cloud Run for Anthos インストールで設定されたクラスタ ローカル ドメイン istio-ingress.gke-system.svc.cluster.local を持ちます。

重要: Istio の AuthorizationPolicy を構成および使用する場合は、アクセス制御のためのパスタイプの照合で既知の脆弱性に対処する必要があります。脆弱性への公開を防ぐ方法について詳しくは、セキュリティのベスト プラクティスをご覧ください。

追加の Istio Ingress Gateway Cloud Run for Anthos の使用を確認するには:

  1. config-istio ConfigMap を開きます。

    kubectl get configmap config-istio --namespace knative-serving -oyaml
    
  2. 追加の Istio Ingress Gateway の名前が istio-ingressgateway で、istio-system Namespace にあることを確認します。

HTTPS とカスタム ドメインを有効にする

クラスタに適用する HTTPS とカスタム ドメインを使用する場合は、HTTPS と自動 TLS 証明書の有効化カスタム ドメインのマッピングをご覧ください。

Cloud Run for Anthos を無効にする

クラスタで Cloud Run for Anthos を無効にするには:

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

    Google Kubernetes Engine に移動

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

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

  4. [Cloud Run for Anthos] プルダウンから [無効] を選択します。

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

次のステップ