Kourier Ingress は、Envoy プロジェクトに基づいて開発された軽量ゲートウェイです。オープンソースの Knative によって提供されるオープンソースの Ingress です。Kourier Ingress を使用すると、Knative リビジョン間でトラフィックを分散し、gRPC サービス、タイムアウトと再試行、Transport Layer Security (TLS) 証明書、および外部認証サービスを構成できます。
前提条件
Knative が ACS クラスタにデプロイされていること。詳細については、Knative のデプロイを参照してください。
ACS クラスタで DNS ベースのサービスディスカバリが有効になっていること。詳細については、DNS の概要およびCoreDNSを参照してください。
手順 1: Kourier Ingress をデプロイする
ACS コンソールにログインします。左側のナビゲーションペインで、クラスタをクリックします。
クラスタページで、管理するクラスタを見つけ、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションペインで、 を選択します。
コンポーネントタブで、Knative のデプロイをクリックし、Kourier を選択して、画面の指示に従ってデプロイを完了します。
手順 2: Kourier Ingress を使用してサービスにアクセスする
このセクションでは、helloworld-go という名前の Knative サービスを作成し、Kourier Ingress を使用して HTTP または HTTPS 経由で Knative サービスにアクセスする方法を示します。
Kourier Ingress を使用して HTTP 経由で Knative サービスにアクセスする
ACS コンソールにログインします。左側のナビゲーションペインで、クラスタをクリックします。
クラスタページで、管理するクラスタを見つけ、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションペインで、 を選択します。
サービスタブのKnativeページで、名前空間をdefaultに設定し、テンプレートから作成をクリックし、次の YAML コンテンツをテンプレートエディターにコピーして、作成をクリックします。
このテンプレートは、
helloworld-goという名前のサービスを作成します。apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go spec: template: spec: containers: - image: registry.cn-hangzhou.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://8.141.XX.XX # 取得した実際のゲートウェイ IP アドレスとドメイン名を指定します。予期される出力:
Hello Knative!この出力は、Knative サービスに HTTP 経由でアクセスできることを示しています。
Kourier Ingress を使用して HTTPS 経由で Knative サービスにアクセスする
ACS コンソールにログインします。左側のナビゲーションペインで、クラスタをクリックします。
クラスタページで、管理するクラスタを見つけ、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションペインで、 を選択します。
サービスタブの Knative ページで、名前空間を default に設定し、テンプレートから作成をクリックし、次の YAML コンテンツをテンプレートエディターにコピーして、作成をクリックします。
このテンプレートは
helloworld-goという名前のサービスを作成します。apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go spec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 env: - name: TARGET value: "Knative"ステータス列のサービスに作成済みと表示されている場合、サービスはデプロイされています。
証明書を作成します。
次のコマンドを実行して、TLS 証明書を生成します。
openssl genrsa -out tls.key 4096 openssl req -subj "/CN=*.example.com/L=*.example.com" -sha256 -new -key tls.key -out tls.csr echo subjectAltName = DNS:helloworld-go.default.example.com,DNS:helloworld-go.default.example.cn > extfile.cnf openssl x509 -req -days 3650 -sha256 -in tls.csr -signkey tls.key -out tls.crt -extfile extfile.cnf次のコマンドを実行して、生成した TLS 証明書に基づいて、クラスタにシークレットを作成します。
kubectl -n knative-serving create secret tls kourier-cert --key tls.key --cert tls.crt
次のコマンドを実行して、
net-kourier-controllerという名前のデプロイメントがknative-serving名前空間に存在するかどうかを確認します。kubectl get deployments -n knative-serving次のコマンドを実行して、証明書を設定します。
kubectl -n knative-serving edit deployment net-kourier-controllernet-kourier-controller設定ページで、次のパラメータを指定します。CERTS_SECRET_NAMESPACE: 作成したシークレットが属する名前空間に値を設定します。CERTS_SECRET_NAME: 作成したシークレットの名前に値を設定します。
... spec: containers: - env: - name: CERTS_SECRET_NAMESPACE value: knative-serving - name: CERTS_SECRET_NAME value: kourier-cert ...設定が完了したら、次のコマンドを実行して net-kourier-controller のステータスを確認します。
kubectl -n knative-serving get po予期される出力:
NAME READY STATUS RESTARTS AGE net-kourier-controller-****** 1/1 Running 0 10s次のコマンドを実行して、HTTPS 経由で Knative サービスにアクセスします。
curl -H "host: helloworld-go.default.example.com" -k --cert tls.crt --key tls.key //8.141.XX.XX # 取得した実際のゲートウェイ IP アドレスとドメイン名を指定します。予期される出力:
Hello Knative!この出力は、Knative サービスに HTTPS 経由でアクセスできることを示しています。
(オプション) 手順 3: Knative モニタリングダッシュボードを表示する
Knative は、すぐに使用できるモニタリング機能を提供します。Knative ページで、モニタリングダッシュボードタブをクリックして、指定されたサービスのモニタリングデータを表示します。Knative ダッシュボードの詳細については、Knative ダッシュボードの表示を参照してください。

参考資料
Knative サービスのカスタムドメイン名を指定できます。詳細については、カスタムドメイン名の構成を参照してください。
HTTPS 経由で Knative サービスにアクセスするための証明書を構成できます。詳細については、HTTPS 経由でサービスにアクセスするための証明書の構成を参照してください。
ネットワーク効率を向上させるために、Knative に gRPC サービスをデプロイできます。詳細については、Knative への gRPC サービスのデプロイを参照してください。
Knative サービスのヘルスステータスと可用性を監視するためのプローブを構成できます。詳細については、Knative でのポートプロービングの構成を参照してください。