Knative serving の設定

Knative serving のインストールおよび構成方法について説明します。

始める前に

GKE クラスタに Knative serving がインストールされている必要があります。GKE クラスタの前提条件と Knative serving のインストール方法の詳細については、インストール ガイドをご覧ください。

Workload Identity による認証の設定

Workload Identity を使用して、Knative serving サービスを Google Cloud APIs とサービスに対して認証できます。サービスをクラスタにデプロイする前に、Workload Identity を設定する必要があります。それ以外の場合は、Workload Identity を有効にする前にクラスタに存在する各サービスを移行する必要があります。Workload Identity の使用について詳細を確認する

Workload Identity での指標の有効化

Google Cloud Observability へのリクエスト数やリクエストのレイテンシなどの指標を有効にするには、Cloud Monitoring の書き込み権限を手動で設定する必要があります。詳細については、Workload Identity での指標の有効化をご覧ください。

HTTPS とカスタム ドメインの構成

HTTPS を有効にしてカスタム ドメインを設定するには、以下のページをご覧ください。

Anthos Service Mesh の設定

Knative serving 用の Anthos Service Mesh オプションを構成するには、プライベートな内部ネットワークの設定方法などの、クラスタ内コントロール プレーンのオプションをご覧ください。

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

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

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

始める前に

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

  1. Anthos Service Mesh で内部ロードバランサ機能を有効にします。

    内部ロードバランサは、Anthos Service Mesh のインストール中に、または既存のインストールを更新することで構成できるオプション機能です。

    クラスタ内コントロール プレーンでオプション機能を有効にするの手順に沿って、--option internal-load-balancer スクリプト オプションが含まれていることを確認してください。

    --option internal-load-balancer オプションを指定すると、スクリプトによって GitHub から内部ロードバランサの有効化カスタム リソースが自動的に取得されます。カスタム リソースを変更する必要がある場合は、代わりに --custom_overlay オプションの使用手順に沿って操作してください。

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

    kubectl -n INGRESS_NAMESPACE get svc istio-ingressgateway --watch
    

    INGRESS_NAMESPACE は、Anthos Service Mesh Ingress サービスの名前空間に置き換えます。Anthos Service Mesh をデフォルトの構成を使用してインストールした場合は、istio-system を指定します。

    1. アノテーション cloud.google.com/load-balancer-type: Internal を確認します。
    2. Ingress ロードバランサで IP の値を探して、プライベート IP アドレスに変更します。
    3. IP フィールドにプライベート IP アドレスが表示されたら、Ctrl+C を押して更新を停止します。
  3. Google Cloud の限定公開クラスタの場合は、ポートを開く必要があります。詳細については、Anthos Service Mesh のドキュメントの限定公開クラスタのポートを開くをご覧ください。

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

  1. sample というサービスを default Namespace の Knative serving にデプロイします。

    gcloud run deploy sample \
    --image gcr.io/knative-samples/helloworld \
    --namespace default
    --platform gke
    
  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 INGRESS_NAMESPACE get svc istio-ingressgateway \
        -o jsonpath='{.status.loadBalancer.ingress[0].ip}' | tee external-ip.txt)
    

    INGRESS_NAMESPACE は、Anthos Service Mesh Ingress サービスの名前空間に置き換えます。Anthos Service Mesh をデフォルトの構成を使用してインストールした場合は、istio-system を指定します。

  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.nip.io $(cat external-ip.txt)
    

    出力は次のとおりです。

    Hello World!
    
  7. SSH セッションを終了します。

    exit
    

マルチテナント環境の設定

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

Knative serving 用にマルチテナンシーを構成する方法については、プロジェクト間マルチテナンシーをご覧ください。

次のステップ