Knative Serving は、外部トラフィックをサービスにルーティングするためのイングレスレイヤーを使用します。デフォルトでは、このレイヤーには軽量ですがトラフィック管理機能が限定的な Kourier が使用されます。ご利用のクラスターで Alibaba Cloud Service Mesh (ASM) をすでに使用している場合、またはトラフィック分割、相互 TLS (mTLS)、メッシュ全体の可観測性などの Istio ベースの機能が必要な場合は、Knative を構成して ASM をイングレスゲートウェイとして使用できます。
ASM は、オープンソースの Istio 仕様と互換性があります。そのコントロールプレーンは Container Service for Kubernetes (ACK) によって管理されるため、Istio コンポーネントを直接運用する必要はありません。
前提条件
作業を開始する前に、以下の要件を満たしていることを確認してください。
ASM インスタンスのバージョンが 1.21.6.84 以降であること。手順については、「ASM インスタンスの作成」をご参照ください。
ASM インスタンスに追加済みの ACK マネージドクラスターまたは ACK Serverless クラスター(インスタンス作成時に Kubernetes クラスター 領域で設定)。
ASM インスタンスで データプレーンクラスターの KubeAPI による Istio CR アクセスを許可 することを有効化していること。
ステップ 1:ASM ゲートウェイを使用するように Knative を構成する
ASM ゲートウェイの構成方法は、ご利用のクラスターに Knative がすでにインストールされているかどうかによって異なります。
Knative のインストール時
ACK コンソール にログインします。左側のナビゲーションウィンドウで クラスター をクリックします。
クラスター ページで、ご利用のクラスター名をクリックします。左側のナビゲーションウィンドウで アプリケーション > Knative を選択します。
Knative ページで、コンポーネント タブをクリックし、Knative のデプロイ をクリックします。
ゲートウェイ セクションで、ASM を選択し、デプロイ をクリックします。
Knative のインストール後
knative-serving名前空間内のconfig-networkConfigMap を編集します。kubectl -n knative-serving edit configmap config-networkingress.classをistio.ingress.networking.knative.devに設定し、変更を適用するために保存して終了します。apiVersion: v1 data: ... ingress.class: istio.ingress.networking.knative.dev ... kind: ConfigMap metadata: name: config-network namespace: knative-serving
ステップ 2:ASM 経由で Knative サービスをデプロイおよびアクセスする
このステップでは、helloworld-go という名前の Knative サービスのサンプルをデプロイし、ASM ゲートウェイ経由でアクセスできることを確認します。
ACK コンソール にログインします。左側のナビゲーションウィンドウで クラスター をクリックします。
クラスター ページで、ご利用のクラスター名をクリックします。左側のナビゲーションウィンドウで アプリケーション > Knative を選択します。
Knative ページで、サービス タブをクリックします。名前空間 を default に設定し、テンプレートから作成 をクリックします。
次の YAML をテンプレートエディターに貼り付け、作成 をクリックします。
重要{REGION-ID}は、ご利用のクラスターのリージョン 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 env: - name: TARGET value: "Knative"サービスの作成後、サービス タブで
helloworld-goを探します。ゲートウェイ 列に、サービスに割り当てられた IP アドレスが表示されます。次のコマンドを実行して、サービスにアクセスできることを確認します。
39.XX.XX.XXは、前のステップで取得したゲートウェイの IP アドレスに置き換えてください。curl -H "Host: helloworld-go.default.example.com" http://39.XX.XX.XX期待される出力:
Hello Knative!
(オプション)ステップ 3:サービス監視データを表示する
[Knative] ページで、[モニタリングダッシュボード] タブをクリックして helloworld-go のメトリックを表示します。 Knative モニタリングダッシュボードをセットアップするには、「Alibaba Cloud Prometheus モニタリングを介して Knative ダッシュボードを表示する」をご参照ください。
次のステップ
カスタムドメイン名とパスの使用 — Knative サービス用のカスタムドメイン名を設定します。
HTTPS を使用したサービスへのアクセスのための証明書の設定 — ご自分の Knative サービスで HTTPS を有効化します。
Knative での gRPC サービスのデプロイ—— gRPC を使用してネットワーク効率を向上させます。
Knative でのポートプロービングの設定 — Knative サービスの正常性ステータスをモニターする。
Knative サービスが実行される弾性コンテナインスタンスに EIP(弾性 IP アドレス)を関連付ける — 弾性コンテナインスタンスをインターネットに接続します。