Cloud Run for Anthos on Google Cloud の設定

このガイドでは、Cloud Run for Anthos on Google Cloud を有効にして、新しい Google Kubernetes Engine クラスタを設定する方法について説明します。Cloud Console または gcloud コマンドラインのいずれかを使用できるため、両方の手順を説明します。既存のクラスタで Cloud Run を有効にする場合は、既存のクラスタで Cloud Run for Anthos on Google Cloud を有効にするをご覧ください。

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

前提条件

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Cloud Console のプロジェクト セレクタページで、Cloud プロジェクトを選択または作成します。

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

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

gcloud を設定する

Cloud Console または gcloud コマンドラインのどちらでも Cloud Run for Anthos on Google Cloud を使用できますが、タスクによっては gcloud コマンドラインを使用する必要があります。

Cloud Run for Anthos on Google Cloud の gcloud コマンドラインを設定するには:

  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 Container レジストリへのパブリッシュで必要になります。

    gcloud services enable container.googleapis.com containerregistry.googleapis.com cloudbuild.googleapis.com
  5. インストールされている gcloud コンポーネントを更新します。

    gcloud components update
  6. kubectl コマンドライン ツールをインストールします。

    gcloud components install kubectl

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

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

  • Cloud Run for Anthos on Google Cloud が有効になりました。
  • Kubernetes バージョンについては、使用可能な GKE バージョンをご覧ください。
  • 2 vCPU のノード

これらは新しいクラスタの推奨設定です。

クラスタは、gcloud コマンドラインまたはコンソールで作成できます。該当するタブをクリックして、必要な手順を確認してください。

Console

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

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

    Google Kubernetes Engine に移動

  2. [クラスタを作成] をクリックして、[Kubernetes クラスタの作成] ページを開きます。

  3. [標準クラスタ] を選択して、テンプレートに次の値を設定します。

    • クラスタの名前を入力します。
    • ロケーション タイプとして [ゾーン] または [リージョン] を選択します。いずれかが Cloud Run for Anthos on Google Cloud で使用できます。ゾーンクラスタは低コストですが、マスター アップグレード中にダウンタイムが発生します。
    • 前のステップの選択に応じて、クラスタのゾーンまたはリージョンを選択します。近くのゾーンまたはリージョンを選択します(例: us-central1-a)。
    • プルダウン リストから、いずれかの利用可能なバージョンをマスター クラスタ バージョンとして設定します。

    • [Cloud Run for Anthos を有効化にする] のチェックボックスをオンにします。

  4. [作成] をクリックして、この構成でクラスタを作成し、プロビジョニングします。プロセスが完了するまでに少し時間がかかることがあります。

コマンドライン

Cloud Run for Anthos on Google Cloud を有効にする新しいクラスタを作成するには:

  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 on Google Cloud はクラスタ内のインスタンスを自動的にスケーリングします。

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

Cloud Run が有効化された限定公開クラスタを作成する

デフォルトでは、上記で作成したクラスタはパブリック ネットワークからのアクセスを構成できます。Pod、ノード、ワークロードをパブリック ネットワークに接続しないようにする Cloud Run 対応の限定公開クラスタを作成する場合は、次の手順をご覧ください。それ以外の場合は、次のセクションに進みます。

  1. 4 基以上の vCPU を持つ限定公開クラスタを作成します。

    限定公開クラスタを作成する

  2. 限定公開 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 masterIpv4CidrBlock \
           --rules tcp:8443 \
           --target-tags TARGET_TAGS

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

クラスタとプラットフォーム用の gcloud を構成する

クラスタの作成後に、次を行います。

  • デフォルト プラットフォームを gke に設定します。
  • 必要に応じて、クラスタ名とクラスタのロケーションのデフォルトを設定し、コマンドラインの使用時にプロンプトを表示しないようにします。
  • gcloud コマンドラインがクラスタにアクセスできるように、認証情報を取得します。

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

  1. デフォルトのプラットフォームを gke に設定し、デフォルトのクラスタとクラスタのロケーションを設定して、次のように認証情報を取得します。

    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. Kubernetes クラスタには default という Namespace が用意されています。Namespace の詳細と、default 以外の Namespace を作成して使用する理由については、Kubernetes ドキュメントの Namespace を参照してください。新しい Namespace を作成するには:

    kubectl create namespace NAMESPACE

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

  3. 前のステップで新しい Namespace を作成し、default Namespace の代わりに使用する場合は、gcloud コマンドラインの呼び出し時に、デフォルトで使用する新しい Namespace に設定します。

    gcloud config set run/namespace NAMESPACE

Workload Identity を持つクラスタで指標を有効にする

Workload Identity を持つ GKE クラスタで Cloud Run for Anthos を使用する場合、Service で使用される 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

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

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

デフォルトの Cloud Run for Anthos on Google Cloud インストールに含まれる 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 on Google Cloud インストールで設定されたクラスタ ローカル ドメイン istio-ingress.gke-system.svc.cluster.local を持ちます。

追加の 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 on Google Cloud を無効にする

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

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

    Google Kubernetes Engine に移動

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

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

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

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

次のステップ