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

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

最終更新日:Dec 26, 2025

Kourier は、Envoy アーキテクチャをベースにした軽量なゲートウェイです。これは Knative コミュニティによって提供されるオープンソースのゲートウェイです。Kourier は Knative のリビジョンに対してトラフィックを分散し、gRPC サービス、タイムアウト、リトライ、TLS 証明書、外部認証と権限付与などの機能をサポートします。

前提条件

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

Knative の初期デプロイ時に Kourier ゲートウェイを選択するか、デプロイ後に設定ファイルを変更することができます。

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

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

  2. [コンポーネント管理] タブの [アドオンコンポーネント] セクションで、[Kourier][操作] 列にある [デプロイ] をクリックします。表示されたダイアログボックスで [OK] をクリックします。

    [Kourier][ステータス][デプロイ済み] に変更されると、デプロイメントは成功です。

インストール済みの Knative

  1. config-network ファイルを編集できます。

    kubectl -n knative-serving edit configmap config-network
  2. ingress.class の値を kourier.ingress.networking.knative.dev に変更し、config-network ファイルを保存します。

    apiVersion: v1
    data:
      ...
      ingress.class: kourier.ingress.networking.knative.dev # Kourier サービスゲートウェイを使用します。
      ...
    kind: ConfigMap
    metadata:
      name: config-network
      namespace: knative-serving

Kourier ゲートウェイ用にプライベートネットワークの Classic Load Balancer (CLB) を設定することもできます。そのためには、次の例に示すように、Kourier サービスに service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type アノテーションを追加します。

デフォルトでは、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 ゲートウェイ経由でのサービスへのアクセス

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

HTTP サービスへのアクセス

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

  2. [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"

    サービスの [ステータス] 列に [成功] と表示された場合、サービスは正常にデプロイされています。

  3. [サービス管理] ページで、helloworld-go サービスのドメイン名とゲートウェイアドレスを [デフォルトドメイン名] 列と [アクセスゲートウェイ] 列から取得します。

  4. 次のコマンドを実行して、helloworld-go サービスにアクセスします。

    curl -H "Host: helloworld-go.default.example.com" http://8.141.XX.XX # ゲートウェイ IP アドレスとドメイン名を実際の情報に置き換えてください。

    想定される出力:

    Hello Knative!

    想定される出力は、HTTP サービスへのアクセスが成功したことを示します。

HTTPS サービスへのアクセス

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

  2. [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"

    サービスの [ステータス] 列に [成功] と表示された場合、サービスは正常にデプロイされています。

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

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

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

    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
  6. 次のコマンドを実行して、証明書を使用して HTTPS サービスにアクセスします。

    curl -H "Host: helloworld-go.default.example.com" -k --cert tls.crt --key tls.key https://8.141.XX.XX # ゲートウェイ IP アドレスとドメイン名を実際の情報に置き換えてください。

    想定される出力:

    Hello Knative!

    想定される出力は、HTTPS サービスへのアクセスが成功したことを示します。

(任意) 手順3:Knative モニタリングダッシュボードの表示

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

関連ドキュメント