すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:KnativeでKourierゲートウェイを使用する

最終更新日:Dec 14, 2024

Kourierゲートウェイは、Envoyプロジェクトに基づく軽量ゲートウェイであり、Knativeコミュニティが提供するオープンソースのゲートウェイです。 Kourierゲートウェイを使用して、Knativeリビジョン間でトラフィックを分散し、gRPCサービス、タイムアウトと再試行、Transport Layer Security (TLS) 証明書、および外部認証サービスを設定できます。

前提条件

Knativeはクラスターにデプロイされています。 詳細については、「」「Knativeのデプロイ」をご参照ください。

手順1: Kourierゲートウェイのデプロイ

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[アプリケーション] > [ネイティブ] を選択します。

  3. [コンポーネント] タブの [アドオンコンポーネント] セクションで、[クーリエ] を見つけ、[操作] 列の [デプロイ] をクリックします。 表示されるメッセージで、[確認] をクリックします。

    Kourierコンポーネントの [ステータス] 列に [デプロイ済み] が表示されている場合、コンポーネントがデプロイされます。

手順2: Kourierゲートウェイを使用してサービスにアクセスする

このセクションでは、Kourierゲートウェイを使用してHTTPまたはHTTPS経由でKnativeサービスにアクセスする方法を示すhelloworld-goという名前のKnativeサービスを作成します。

Kourierゲートウェイを使用してHTTP経由でKnativeサービスにアクセスする

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[アプリケーション] > [ネイティブ] を選択します。

  3. 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"

    サービスの [ステータス] 列に [作成済み] が表示された場合、サービスがデプロイされます。

  4. [サービス] ページで、helloworld-goサービスのドメイン名とゲートウェイIPアドレスをそれぞれ [デフォルトドメイン] 列と [ゲートウェイ] 列に記録します。

  5. 次のコマンドを実行して、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サービスにアクセスする

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[アプリケーション] > [ネイティブ] を選択します。

  3. 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"

    サービスの [ステータス] 列に [作成済み] が表示された場合、サービスがデプロイされます。

  4. 証明書を作成します。

    1. 次のコマンドを実行して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
    2. 次のコマンドを実行して、生成したTLS証明書に基づいてクラスターにシークレットを作成します。

      kubectl -n knative-serving create secret tls kourier-cert --key tls.key --cert tls.crt
  5. 次のコマンドを実行して、net-kourier-controllerという名前のDeploymentがknative-serving名前空間に存在するかどうかを確認します。

    kubectl get deployments -n knative-serving
  6. 次のコマンドを実行して証明書を設定します。

    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
  7. 次のコマンドを実行して、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モニタリングダッシュボードの表示をご参照ください。

関連ドキュメント