大規模な分散システムやマイクロサービスアプリケーションのトラフィック管理などのシナリオでは、ASM ゲートウェイを使用して Knative サービスのトラフィックを分散およびルーティングできます。これは、Istio をサービスメッシュフレームワークとして既に使用しているか、使用を計画している場合に特に便利です。ASM ゲートウェイは、コミュニティの Istio 仕様と互換性があります。そのコントロールプレーンコンポーネントは ACK によって管理されており、サービス呼び出しのトラフィックルーティングと分割、サービス間通信の認証とセキュリティ、メッシュの可観測性などのサービス管理タスクが簡素化されます。
前提条件
ASM インスタンスが作成されていること。インスタンスのバージョンは 1.21.6.84 以降である必要があります。詳細については、「ASM インスタンスの作成」をご参照ください。
ASM インスタンスを作成する際、[Kubernetes クラスター] セクションで、既存の ACK マネージドクラスター または Serverless Kubernetes クラスター をインスタンスに追加し、[データプレーン上の KubeAPI を有効にして Istio リソースにアクセスする] を選択します。
ステップ 1: ASM ゲートウェイのデプロイ
Knative を初めてデプロイするときに ASM サービスゲートウェイを選択できます。または、Knative のデプロイ後に構成ファイルを変更して ASM ゲートウェイを構成することもできます。
新規 Knative インストール
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、目的のクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
[Knative] ページで、[コンポーネント管理] タブで、Knative のデプロイ をクリックします。ゲートウェイ で [ASM] を選択し、ワンクリックデプロイメント をクリックします。
デプロイが成功すると、Knative で Service Mesh (ASM) を使用できます。
既存の Knative インストール
config-network ファイルを編集します。
kubectl -n knative-serving edit configmap config-networkingress.classをistio.ingress.networking.knative.devに設定し、config-network ファイルを保存します。apiVersion: v1 data: ... ingress.class: istio.ingress.networking.knative.dev # ASM サービスゲートウェイを使用 ... kind: ConfigMap metadata: name: config-network namespace: knative-serving
ステップ 2: ASM イングレスゲートウェイ経由でデプロイされたサービスにアクセスする
このセクションでは、ASM を使用してサービスをデプロイする方法の例を示します。
ACK コンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、目的のクラスターを見つけてその名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[Knative] ページの [サービス管理] タブで、[名前空間] を [default] に設定し、[テンプレートから作成] をクリックします。 次の YAML サンプルをテンプレートに貼り付け、次に [作成] をクリックして helloworld-go サービスを作成します。
重要イメージにアクセスして使用できるように、次のコードの
{REGION-ID}を、お使いのクラスターのリージョン (たとえばcn-beijing) に置き換えます。apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go spec: template: spec: containers: - image: registry.{REGION-ID}.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 # {REGION-ID} をクラスターのリージョンに置き換えます。 env: - name: TARGET value: "Knative"[サービス管理] ページの [アクセスゲートウェイ] 列で、helloworld-go サービスのゲートウェイアドレスを見つけます。
次のコマンドを実行して、helloworld-go サービスにアクセスします。
curl -H "Host: helloworld-go.default.example.com" http://39.XX.XX.XX # ゲートウェイの IP アドレスとドメイン名を実際のデータに置き換えます。予想される出力:
Hello Knative!予想される出力は、サービスに正常にアクセスできたことを示しています。
(任意) ステップ 3: Knative モニタリングダッシュボードの表示
Knative は、すぐに使えるモニタリング機能を提供します。[Knative] ページで、[モニタリングダッシュボード] タブをクリックして、指定されたサービスのモニタリングデータを表示します。Knative モニタリングダッシュボードを有効にする方法の詳細については、「Knative モニタリングダッシュボードの表示」をご参照ください。
参考資料
Knative サービスのドメイン名をカスタマイズできます。 詳細については、「カスタムドメイン名とパスの使用」をご参照ください。
証明書を設定して、HTTPS 経由で Knative サービスにアクセスできます。 詳細については、「HTTPS 経由でサービスにアクセスするための証明書の設定」をご参照ください。
Knative に gRPC サービスをデプロイして、ネットワーク効率を向上させることができます。 詳細については、「Knative での gRPC サービスのデプロイ」をご参照ください。
プローブを設定して、Knative サービスのヘルスステータスと可用性をモニターできます。 詳細については、「Knative でのポートプロービングの設定」をご参照ください。
Elastic Container Instance をインターネットに接続する場合は、Elastic IP アドレス (EIP) を Elastic Container Instance に関連付ける必要があります。 詳細については、「Knative サービスが実行される Elastic Container Instance への EIP の関連付け」をご参照ください。