このガイドでは、Google Kubernetes Engine(GKE)クラスタを設定し、Cloud Run for Anthos を有効にする方法について説明します。Google Cloud コンソールまたは Google Cloud CLI のいずれかを使用して、標準および限定公開の GKE クラスタで Cloud Run for Anthos を有効にできます。
Cloud Run for Anthos を有効にすると、Istio と Knative Serving がクラスタにインストールされ、ステートレス ワークロードが接続および管理されます。詳細については、Cloud Run for Anthos のアーキテクチャの概要をご覧ください。
始める前に
- Cloud Run for Anthos は Google Kubernetes Engine のアドオンです。無料トライアルは 2021 年 9 月 30 日まで利用できます。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
コマンドライン環境の設定
Cloud Run for Anthos の管理には Google Cloud コンソールまたは gcloud CLI のいずれかを使用できますが、gcloud CLI を必要とする一部のタスクもあります。
Cloud Run for Anthos の gcloud
および kubectl
コマンドライン ツールを設定するには:
gcloud CLI のデフォルトのプロジェクト設定を、先ほど作成したプロジェクトか、使用する既存のプロジェクトに設定します。
gcloud config set project PROJECT-ID
PROJECT-ID は、作成したプロジェクトのプロジェクト ID に置き換えます。
zone
をクラスタに必要なゾーンに設定します。GKE がサポートされている任意のゾーンを使用できます。次に例を示します。gcloud config set compute/zone ZONE
ZONE は、実際のゾーンに置き換えます。
プロジェクトで次の API を有効にします。これは、クラスタの作成、コンテナの構築、Google Kubernetes Engine レジストリへのコンテナの公開に必要です。
gcloud services enable container.googleapis.com containerregistry.googleapis.com cloudbuild.googleapis.com
kubectl
コマンドライン ツールをインストールします。gcloud components install kubectl
インストール済みの gcloud CLI コンポーネントを更新します。
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 が有効である
- Kubernetes のバージョン: 利用可能な GKE のバージョン
- 4 vCPU の 4 ノード
- デフォルトの Namespace:
default
Cloud Run for Anthos のテストには、これらのクラスタ構成が推奨されます。本番環境ワークロードでは、特定のニーズを満たすように GKE クラスタを構成する必要があります。さまざまな GKE クラスタとその構成オプションについては、GKE ドキュメントのクラスタのタイプをご覧ください。
クラスタを作成して Cloud Run for Anthos を有効にするには:
クラスタを作成します。
gcloud container clusters create CLUSTER-NAME \ --zone=ZONE \ --addons=HttpLoadBalancing,CloudRun \ --machine-type=e2-standard-4 \ --num-nodes=4 \ --cluster-version=GKE-VERSION \ --enable-stackdriver-kubernetes
CLUSTER-NAME は、クラスタの任意の名前です。
ZONE は、クラスタに必要な Compute Engine ゾーンです。
GKE-VERSION は目的の GKE バージョンです。詳しくは、利用可能なバージョンをご覧ください。
クラスタの自動スケーリングはデフォルトでは有効になっていませんが、Cloud Run for Anthos はクラスタ内の使用可能な容量に基づいてインスタンス数を自動的に調整します。
クラスタの作成が完了するまで待機します。
既存のクラスタでの Cloud Run for Anthos の有効化
GKE クラスタには、次の最小構成が必要です。
- 4 vCPU の 4 ノード。クラスタのマシンタイプを変更する必要がある場合は、異なるマシンタイプへのワークロードの移行をご覧ください。
- スコープ:
https://www.googleapis.com/auth/logging.write
https://www.googleapis.com/auth/monitoring.write
gcloud CLI または Google Cloud コンソールを使用して、クラスタで Cloud Run for Anthos を有効にできます。
Console
既存のクラスタで Cloud Run for Anthos を有効にするには:
Google Cloud コンソールで [Google Kubernetes Engine] ページに移動します。
Cloud Run for Anthos を有効にするクラスタの名前をクリックします。
[編集] をクリックします。
[Cloud Run for Anthos を有効にする] をクリックします。
[保存] をクリックします。更新が完了すると、クラスタで Cloud Run for Anthos がサポートされます。
コマンドライン
既存のクラスタで Cloud Run for Anthos を有効にするには:
次のコマンドを使用してクラスタを有効にします。
gcloud container clusters update \ CLUSTER_NAME \ --update-addons=CloudRun=ENABLED,HttpLoadBalancing=ENABLED \ --zone=ZONE
次のように置き換えます。
- CLUSTER_NAME: クラスタの名前に置き換えます。
- ZONE: クラスタのゾーンに置き換えます。例:
us-central1-a
有効化が完了するまで待ちます。成功すると、コマンドラインで次のようなメッセージが返されます。
Updating your-cluster-name...done.
gcloud CLI のデフォルトの設定の構成
クラスタを作成したら、Google Cloud CLI で使用するデフォルト値を設定できます。このコマンドラインを使用すると、クラスタ名やロケーションなどの設定したデフォルト値に関するプロンプトが表示されなくなります。
以下についてデフォルト設定を構成できます。
- クラスタ名
- クラスタのロケーション
- 認証情報
- 名前空間
- プラットフォーム
デフォルトを設定するには:
デフォルトのクラスタとクラスタのロケーションを設定し、次のコマンドを実行して認証情報を取得します。
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 は、クラスタの場所に置き換えます。
デフォルトでは、クラスタは
default
という名前の Namespace で作成されます。Namespace、およびdefault
以外の Namespace を作成して使用する理由については、 Namespace をご覧ください。新しい Namespace を作成するには:
kubectl create namespace NAMESPACE
NAMESPACE は、作成する Namespace の名前に置き換えます。
前の手順で新しい名前空間を作成した場合は、Google Cloud CLI を呼び出すたびに使用されるデフォルトの名前空間として、その名前空間を設定できます。それ以外の場合は、
default
名前空間が使用されます。新しい Namespace を設定するには、次のコマンドを実行します。gcloud config set run/namespace NAMESPACE
NAMESPACE は、gcloud CLI ツールがデフォルトで使用する名前空間の名前に置き換えます。
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 サービスを管理してデプロイする必要があります。GKE マルチテナンシーの詳細については、クラスタ マルチテナンシーをご覧ください。
Cloud Run for Anthos にマルチテナンシーを構成する方法については、プロジェクト間マルチテナンシーをご覧ください。
プライベートな内部ネットワークの設定
内部ネットワークでのサービスのデプロイは、社内用アプリをスタッフに提供する企業や、Cloud Run for Anthos クラスタの外部で実行されるクライアントが使用するサービスにおいて便利です。この構成により、ネットワーク内の他のリソースが、一般からはアクセスできない非公開の内部 IP アドレス(RFC 1918)を使用するサービスと通信できるようになります。
内部ネットワークを作成するには、公開の外部ネットワーク ロードバランサではなく、内部 TCP / UDP 負荷分散を使用するように Istio の Ingress ゲートウェイを構成します。これにより、VPC ネットワークの内部 IP アドレスに Cloud Run for Anthos サービスをデプロイできます。
始める前に
- クラスタで
admin
権限が必要です。 - サポートされているのは、Google Cloud CLI バージョン 310.0 以降のみです。詳細については、gcloud の設定をご覧ください。
内部ロードバランサをセットアップするには:
新しいクラスタを作成するか既存のクラスタを更新して、内部 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
変更が有効になるまで数分かかることがあります。
次のコマンドを実行して、GKE クラスタの更新を確認します。
kubectl -n gke-system get svc istio-ingress --watch
- アノテーション「cloud.google.com/load-balancer-type: Internal」を記録します。
- Ingress ロードバランサで
IP
の値を探して、プライベート IP アドレスに変更します。 IP
フィールドにプライベート IP アドレスが表示されたら、Ctrl+C
を押して更新を停止します。
変更後の内部接続を確認するには:
sample
という Service をdefault
Namespace の Cloud Run for Anthos にデプロイします。gcloud run deploy sample \ --image gcr.io/knative-samples/simple-api \ --namespace default
Compute Engine 仮想マシン(VM)を、GKE クラスタと同じゾーンに作成します。
VM=cloudrun-gke-ilb-tutorial-vm gcloud compute instances create $VM
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)
IP アドレスを含むファイルを VM にコピーします。
gcloud compute scp external-ip.txt $VM:~
SSH を使用して VM に接続します。
gcloud compute ssh $VM
SSH セッション中に、サンプル サービスをテストします。
curl -s -w'\n' -H Host:sample.default.example.com $(cat external-ip.txt)
出力は次のとおりです。
OK
SSH セッションを終了します。
exit
個別の Istio インストールを使用する
次の手順では、すでにデフォルトで Cloud Run for Anthos にインストールされている Istio コンポーネントに加えて、Anthos Service Mesh、Istio 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 の使用を確認するには:
config-istio
ConfigMap を開きます。kubectl get configmap config-istio --namespace knative-serving -oyaml
追加の Istio Ingress Gateway の名前が
istio-ingressgateway
で、istio-system
Namespace にあることを確認します。
HTTPS とカスタム ドメインを有効にする
クラスタに適用する HTTPS とカスタム ドメインを使用する場合は、HTTPS と自動 TLS 証明書の有効化とカスタム ドメインのマッピングをご覧ください。
Cloud Run for Anthos を無効にする
クラスタで Cloud Run for Anthos を無効にするには:
Google Cloud コンソールで [Google Kubernetes Engine] ページに移動します。
Cloud Run for Anthos を無効にするクラスタをクリックします。
[編集] をクリックします。
[Cloud Run for Anthos] プルダウンから [無効] を選択します。
[保存] をクリックします。