大規模な Web アプリケーション、きめ細かいトラフィックルーティングや自動スケーリングが必要なアプリケーション、HTTP/HTTPS リクエストの複雑なルーティング要件を持つアプリケーションの場合、Knative サービスのトラフィックをルーティングするために Application Load Balancer (ALB) Ingress を使用することをお勧めします。ALB はアプリケーション層で動作し、HTTP、HTTPS、Quick UDP Internet Connections (QUIC) などのプロトコルをサポートしています。ALB は高い弾力性を備えており、レイヤー 7 で大量のネットワークトラフィックを処理できます。ALB Ingress は、自動スケーリングと複数のカナリアリリースルールをサポートする、フルマネージドで O&M 不要のゲートウェイです。
前提条件
Knative が ACS クラスタにデプロイされていること。詳細については、Knative をデプロイする を参照してください。
ステップ 1: ALB Ingress をデプロイする
Knative に ALB Ingress をデプロイする際に、Knative によって自動的に作成された ALB インスタンスを使用するか、既存の ALB インスタンスを指定することができます。
ALB Ingress のデプロイ時に ALB インスタンスが自動的に作成される
Knative のデプロイ時に ALB Ingress を構成できます。Knative がデプロイされている場合は、Knative の構成ファイルを変更して ALB Ingress を構成できます。
Knative のデプロイ時に ALB Ingress を構成する
ACS コンソール にログインします。左側のナビゲーションペインで、クラスタ をクリックします。
クラスタ ページで、管理するクラスタを見つけて、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションペインで、
を選択します。コンポーネント タブで、Knative をデプロイ をクリックします。「Knative をデプロイ」ページで、ALB を選択し、少なくとも 2 つの vSwitch を選択します。ページの指示に従って Knative をデプロイします。
vSwitch の作成方法の詳細については、vSwitch を作成および管理する を参照してください。
Knative の構成ファイルを変更して ALB Ingress を構成する
Knative がデプロイされている場合は、Knative の構成ファイルを変更して ALB Ingress を指定できます。Knative の使用方法の詳細については、Knative をデプロイする を参照してください。
config-network.yaml ファイルを変更するには、次のコマンドを実行します。
kubectl -n knative-serving edit configmap config-network
次のテンプレートを使用して、config-network.yaml ファイルを変更して保存します。
ingress.class: alb.ingress.networking.knative.dev
を変更し、vswitch-ids
を指定します。config-network
ファイルを保存して終了し、ALB Ingress 構成を適用します。 ALB でサポートされているリージョンとゾーンについては、ALB でサポートされているリージョンとゾーンを参照してください。apiVersion: v1 data: ... ingress.class: alb.ingress.networking.knative.dev # ALB Ingress コントローラーを指定します。 vswitch-ids: vsw-uf6kbvc7mccqia2pi****,vsw-uf66scyuw2fncpn38**** # 異なるゾーンに作成した 2 つの vSwitch の ID に置き換えます。ALB インスタンスを作成すると、システムは自動的に vSwitch をバインドします。 ... 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.dev
を変更し、albconfig
を既存の ALB に設定します。この場合、vswitch-ids
を構成する必要はありません。apiVersion: v1 data: ... ingress.class: alb.ingress.networking.knative.dev # ALB Ingress コントローラーを指定します。 albconfig: alb-dev-albconfig # 既存の AlbConfig の名前を指定します。既存の ALB Ingress を使用する場合は、このパラメーターを指定する必要があります。 ... kind: ConfigMap metadata: name: config-network namespace: knative-serving ...
ステップ 2: ALB Ingress を使用してサービスにアクセスする
ACS コンソール にログインします。左側のナビゲーションペインで、クラスタ をクリックします。
クラスタ ページで、管理するクラスタを見つけ、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションペインで、
を選択します。Knative ページで、サービス管理 タブをクリックします。名前空間 を default として選択し、テンプレートを使用して作成 をクリックし、提供された YAML の例をテンプレートに貼り付けて、作成 をクリックします。
以下の YAML の例では、
helloworld-go
という名前の Knative サービスを作成します。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
サービスのドメイン名とゲートウェイアドレスを デフォルトドメイン名 列と アクセスゲートウェイ 列から取得します。次のコマンドを使用して、
helloworld-go
サービスにアクセスします。curl -H "host: helloworld-go.default.example.com" http://alb-******.cn-beijing.alb.aliyuncs.com # 実際のゲートウェイ IP アドレスとドメイン名に置き換えます。
期待される結果:
Hello Knative!
(オプション) 手順 3: Knative モニタリングダッシュボードを表示する
Knative は、すぐに使用できるモニタリング機能を提供します。 Knative ページで、モニタリングダッシュボード タブをクリックして、指定されたサービスのモニタリングデータを表示します。Knative ダッシュボードの詳細については、Knative ダッシュボードの表示を参照してください。
参照資料
Knative サービスのカスタムドメイン名を指定できます。詳細については、カスタムドメイン名の構成を参照してください。
HTTPS 経由で Knative サービスにアクセスするための証明書を構成できます。詳細については、HTTPS 経由でサービスにアクセスするための証明書の構成を参照してください。
ネットワーク効率を向上させるために、Knative に gRPC サービスをデプロイできます。詳細については、Knative への gRPC サービスのデプロイを参照してください。
Knative サービスのヘルスステータスと可用性を監視するためのプローブを構成できます。詳細については、Knative でのポートプロービングの構成を参照してください。