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

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

最終更新日:May 13, 2025

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

前提条件

  • ACK Serverless クラスター で DNS サービスディスカバリが有効になっています。 詳細については、「サービスディスカバリ用の DNS」をご参照ください。

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

手順 1:Kourier ゲートウェイをデプロイする

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

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

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

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

  4. (オプション) 次の例を参照して、Kourier サービスにアノテーション service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type を追加することにより、Kourier ゲートウェイ用に内部向け Classic Load Balancer(CLB)を構成します。

    デフォルトでは、Kourier ゲートウェイはインターネット向け CLB を作成します (アノテーション値のデフォルトは internet です)。 CLB を変更するには、アノテーション値を intranet に変更します。
    apiVersion: v1
    kind: Service
    metadata:
      name: kourier
      namespace: knative-serving
      annotations:
        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"   # 内部向け CLB を作成するには、このパラメーターを intranet に設定します。
      ...
    spec:
      ports:
        - name: http2
          port: 80
          protocol: TCP
          targetPort: 8080
        - name: https
          port: 443
          protocol: TCP
          targetPort: 8443
      selector:
        app: 3scale-kourier-gateway
      type: LoadBalancer

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

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

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

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

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

  3. [サービス] ページの [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"

    [ステータス] 列に [作成済み] と表示されている場合、サービスはデプロイされています。

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

  5. 次のコマンドを実行して、helloworld-go という名前のサービスにアクセスします。

    curl -H "Host: helloworld-go.default.example.com" http://8.141.XX.XX # 取得した実際のゲートウェイ IP アドレスとドメイン名を指定します。

    期待される出力:

    Hello Knative!

    この出力は、Knative サービスに HTTP 経由でアクセスできることを示しています。

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

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

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

  3. [サービス] ページの [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"

    [ステータス] 列に [作成済み] と表示されている場合、サービスはデプロイされています。

  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. 次のコマンドを実行して、knative-serving 名前空間に net-kourier-controller という名前のデプロイメントが存在するかどうかを確認します。

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

    kubectl -n knative-serving edit deployment net-kourier-controller

    net-kourier-controller 構成ページで、次のパラメーターを指定します。

    • CERTS_SECRET_NAMESPACE: この値を、作成した Secret が属する名前空間に設定します。

    • 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 # 取得した実際のゲートウェイ IP アドレスとドメイン名を指定します。

    期待される出力:

    Hello Knative!

    この出力は、Knative サービスに HTTPS 経由でアクセスできることを示しています。

(オプション) 手順 3:Knative モニタリングダッシュボードを表示する

Knative は、すぐに使用できるモニタリング機能を提供します。 [Knative] ページで、[モニタリングダッシュボード] タブをクリックして、指定されたサービスのモニタリングデータを表示します。 Knative モニタリングダッシュボードを有効にする方法の詳細については、「Knative モニタリングダッシュボードを表示する」をご参照ください。

参照