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

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

最終更新日:Nov 09, 2025

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

前提条件

クラスターに Knative がデプロイされていること。 詳細については、「Knative のデプロイと管理」をご参照ください。

ステップ 1: Kourier ゲートウェイのデプロイ

Knative を最初にデプロイするとき、またはデプロイ完了後に構成を変更することによって、Knative が Kourier ゲートウェイを使用するように構成できます。

新規 Knative インストールの場合

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

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

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

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

既存の Knative インストールの場合

  1. 次のコマンドを実行して、デフォルトのエディターで config-network ConfigMap を開きます。

    kubectl -n knative-serving edit configmap config-network
  2. エディターで、data セクションの下にある ingress.class キーを見つけ、その値を以下のように kourier.ingress.networking.knative.dev に変更します。

    apiVersion: v1
    data:
      ...
      ingress.class: kourier.ingress.networking.knative.dev # Kourier サービスゲートウェイを使用
      ...
    kind: ConfigMap
    metadata:
      name: config-network
      namespace: knative-serving
  3. ファイルを保存して閉じます。変更は Kubernetes によって自動的に適用されます。

また、次の例を参照して、Kourier Service にアノテーション 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"   # このパラメーターを intranet に設定して、内部向け CLB を作成します。
  ...
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 ゲートウェイを使用して Service にアクセスする

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

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

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

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

  3. [Knative] ページの [サービス] タブで、[名前空間]default に設定し、[テンプレートから作成] をクリックし、次の YAML コンテンツをテンプレートエディターにコピーしてから、[作成] をクリックします。

    このテンプレートは helloworld-go という名前の Service を作成します。

    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"

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

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

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

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

    期待される出力:

    Hello Knative!

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

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

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

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

  3. [Knative] ページの [サービス] タブで、[名前空間]default に設定し、[テンプレートから作成] をクリックし、次の YAML コンテンツをテンプレートエディターにコピーしてから、[作成] をクリックします。

    このテンプレートは helloworld-go という名前の Service を作成します。

    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"

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

  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 証明書に基づいてクラスターに Secret を作成します。

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

    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: 値を作成した Secret の名前に設定します。

    ...
       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 Service にアクセスします。

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

    期待される出力:

    Hello Knative!

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

(オプション) ステップ 3: Knative モニタリングダッシュボードの表示

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

関連ドキュメント