大規模なwebアプリケーション、きめ細かいトラフィックルーティングまたは自動スケーリングを必要とするアプリケーション、およびHTTP/HTTPS要求に対して複雑なルーティング要件を持つアプリケーションのKnativeサービスのトラフィックをルーティングするには、Application Load Balancer (ALB) Ingressを使用することを推奨します。 ALBはアプリケーション層で実行され、HTTP、HTTPS、クイックUDPインターネット接続 (QUIC) などのプロトコルをサポートします。 ALBは高い弾力性を提供し、レイヤー7で大量のネットワークトラフィックを処理できます。 ALB Ingressは、自動スケーリングと複数のカナリアリリースルールをサポートする、完全マネージド型でO&Mフリーのゲートウェイです。
前提条件
Knativeはクラスターにデプロイされています。 詳細については、「」「Knativeのデプロイ」をご参照ください。
ステップ1: ALB Ingressのデプロイ
KnativeでALB Ingressをデプロイする場合、Knativeによって自動的に作成されたALBインスタンスを使用するか、既存のALBインスタンスを指定できます。
ALB Ingressをデプロイすると、ALBインスタンスが自動的に作成されます
Knativeのデプロイ中にALB Ingressを設定できます。 Knativeがデプロイされている場合、ALB Ingressを設定するためにKnativeの設定ファイルを変更できます。
KnativeをデプロイするときのALB Ingressの設定
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[コンポーネント] タブで、[Knativeのデプロイ] をクリックします。 Knativeのデプロイページで、ALBを選択し、少なくとも2つのvSwitchを選択します。 ページの指示に従ってKnativeをデプロイします。
vSwitchの作成方法の詳細については、「vSwitchの作成と管理」をご参照ください。
ALB Ingressを設定するためにKnativeの設定ファイルを変更する
Knativeがデプロイされている場合、ALB Ingressを指定するようにKnativeの構成ファイルを変更できます。 Knativeのデプロイ方法の詳細については、「ACKクラスターにKnativeをデプロイする」および「ACKサーバーレスクラスターにKnativeをデプロイする」をご参照ください。
次のコマンドを実行して、config-network.yamlファイルを変更します。
kubectl -n knative-serving edit configmap config-network
次のテンプレートを参照して、config-network.yamlファイルを作成します。
ingress.class: alb.ingress.networking.knative.de v
を変更し、vswitch-ids
パラメーターを設定し、config-network
ファイルを保存して終了します。 ALB Ingressをサポートするリージョンとゾーンの詳細については、ALBが利用可能なリージョンとゾーン.apiVersion: v1 data: ... ingress.class: alb.ingress.networking.knative.dev # Specify the ALB Ingress controller. vswitch-ids: vsw-uf6kbvc7mccqia2pi****,vsw-uf66scyuw2fncpn38**** # Replace with the IDs of the two vSwitches that you created in different zones. The system automatically binds the vSwitches when you create an ALB instance. ... kind: ConfigMap metadata: name: config-network namespace: knative-serving ...
既存のALBインスタンスを使用してALB Ingressを設定する
Knativeの設定ファイルを変更して、既存のALBインスタンスを使用してALB Ingressを設定できます。
次のコマンドを実行して、config-network.yamlファイルを変更します。
kubectl -n knative-serving edit configmap config-network
次のテンプレートに基づいてconfig-network.yamlファイルを変更して保存します。
設定ファイルで
ingress.class: alb.ingress.networking.knative.de v
を変更し、albconfig
を既存のALB Ingressに設定します。vswitch-ids
パラメーターを設定する必要はありません。apiVersion: v1 data: ... ingress.class: alb.ingress.networking.knative.dev # Specify the ALB Ingress controller. albconfig: alb-dev-albconfig # Specify the name of an existing AlbConfig. You must specify this parameter if you use an existing ALB Ingress. ... kind: ConfigMap metadata: name: config-network namespace: knative-serving ...
手順2: ALB Ingressを使用してサービスにアクセスする
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
Knativeページの [サービス] タブで、[名前空間] ドロップダウンリストから [デフォルト] を選択し、[テンプレートから作成] をクリックし、次のYAMLコンテンツをコードエディターにコピーし、[作成] をクリックします。
テンプレートは、
helloworld-go
という名前のサービスを作成します。apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go spec: template: spec: containers: - image: registry-vpc.cn-beijing.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 env: - name: TARGET value: "Knative"
[サービス] ページで、
helloworld-go
サービスのドメイン名とゲートウェイIPアドレスをそれぞれ [デフォルトドメイン] 列と [ゲートウェイ] 列に記録します。次のコマンドを実行して、
helloworld-go
という名前のサービスにアクセスします。curl -H "host: helloworld-go.default.example.com" http://alb-******.cn-beijing.alb.aliyuncs.com # Replace the IP address and domain name with the actual values.
期待される出力:
Hello Knative!
(オプション) 手順3: Knativeモニタリングダッシュボードの表示
Knativeは、すぐに使えるモニタリング機能を提供します。 [Knative] ページで、[モニタリングダッシュボード] タブをクリックして、指定したサービスのモニタリングデータを表示します。 Knativeモニタリングダッシュボードを有効にする方法の詳細については、「Knativeモニタリングダッシュボードの表示」をご参照ください。
関連ドキュメント
Knative Servicesのカスタムドメイン名を指定できます。 詳細については、「カスタムドメイン名の設定」をご参照ください。
HTTPS経由でKnativeサービスにアクセスするように証明書を設定できます。 詳細については、「HTTPS経由でサービスにアクセスするための証明書の設定」をご参照ください。
KnativeにgRPCサービスをデプロイして、ネットワーク効率を向上させることができます。 詳細については、「KnativeでのgRPCサービスのデプロイ」をご参照ください。
Knative Servicesのヘルスステータスと可用性を監視するためのプローブを設定できます。 詳細については、「Knativeでのポートプロービングの設定」をご参照ください。
elasticコンテナインスタンスをインターネットに接続する場合は、elastic IPアドレス (EIP) をelasticコンテナインスタンスに関連付ける必要があります。 詳細については、「Knative Serviceが実行されているEIPのelasticコンテナーインスタンスへの関連付け」をご参照ください。