Kourierゲートウェイは、Envoyプロジェクトに基づく軽量ゲートウェイであり、Knativeコミュニティが提供するオープンソースのゲートウェイです。 Kourierゲートウェイを使用して、Knativeリビジョン間でトラフィックを分散し、gRPCサービス、タイムアウトと再試行、Transport Layer Security (TLS) 証明書、および外部認証サービスを設定できます。
前提条件
Knativeはクラスターにデプロイされています。 詳細については、「」「Knativeのデプロイ」をご参照ください。
手順1: Kourierゲートウェイのデプロイ
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[コンポーネント] タブの [アドオンコンポーネント] セクションで、[クーリエ] を見つけ、[操作] 列の [デプロイ] をクリックします。 表示されるメッセージで、[確認] をクリックします。
Kourierコンポーネントの [ステータス] 列に [デプロイ済み] が表示されている場合、コンポーネントがデプロイされます。
手順2: Kourierゲートウェイを使用してサービスにアクセスする
このセクションでは、Kourierゲートウェイを使用してHTTPまたはHTTPS経由でKnativeサービスにアクセスする方法を示すhelloworld-goという名前のKnativeサービスを作成します。
Kourierゲートウェイを使用してHTTP経由でKnativeサービスにアクセスする
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
Knativeページの [サービス] タブで、名前空間を既定に設定し、[テンプレートから作成] をクリックして、次の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 # Specify the actual gateway IP address and domain name that you obtained.
期待される出力:
Hello Knative!
出力は、HTTP経由でKnativeサービスにアクセスできることを示します。
Kourierゲートウェイを使用してHTTPS経由でKnativeサービスにアクセスする
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
Knativeページの [サービス] タブで、名前空間を既定に設定し、[テンプレートから作成] をクリックして、次の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
という名前のDeploymentがknative-serving
名前空間に存在するかどうかを確認します。kubectl get deployments -n knative-serving
次のコマンドを実行して証明書を設定します。
kubectl -n knative-serving edit deployment net-kourier-controller
net-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 # Specify the actual gateway IP address and domain name that you obtained.
期待される出力:
Hello Knative!
出力は、HTTPS経由で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コンテナーインスタンスへの関連付け」をご参照ください。