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

Container Service for Kubernetes:Knative における Kourier ゲートウェイの使用

最終更新日:Mar 26, 2026

Kourier は、Envoy を基盤とする軽量・オープンソースの Knative ネイティブイングレスゲートウェイであり、Knative コミュニティが提供しています。このゲートウェイをデプロイすることで、Knative のリビジョン間での HTTP/HTTPS トラフィックのルーティング、gRPC サービスの設定、タイムアウトおよび再試行の設定、トランスポート層セキュリティ (TLS) 証明書の管理、および外部権限付与サービスとの統合が可能になります。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

Kourier ゲートウェイのデプロイ

Kourier ゲートウェイは、初期の Knative 設定時(ACK コンソールを使用)または既存の Knative 環境への追加デプロイ時(kubectl を使用)のいずれかでデプロイできます。

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

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

  2. クラスター」ページで、クラスターの名前をクリックします。左側のナビゲーションウィンドウで、「アプリケーション」>「Knative」を選択します。

  3. [コンポーネント] タブで、[Kourier][アドオンコンポーネント] セクション内より見つけ、[デプロイ][操作] 列からクリックします。表示されたダイアログで、[確認] をクリックします。[ステータス] 列の Kourier の状態が デプロイ済み に変更されます。

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

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

    kubectl -n knative-serving edit configmap config-network
  2. エディターで、ingress.class キーを data セクション内より検索し、その値を以下のように 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 により変更が自動的に適用されます。

(任意)内部向けクラシックロードバランサー (CLB) の設定

デフォルトでは、Kourier はインターネット向けのクラシックロードバランサー (CLB) を作成します。代わりに内部向け CLB を使用するには、Kourier サービスマニフェストにアノテーション service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet" を追加します:

apiVersion: v1
kind: Service
metadata:
  name: kourier
  namespace: knative-serving
  annotations:
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "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
アノテーションのデフォルト値は internet です。内部向け CLB を使用するには、これを intranet に設定してください。

Kourier ゲートウェイ経由での Knative サービスへのアクセス

以下の手順では、サンプル Knative サービス helloworld-go を用いて、HTTP および HTTPS によるアクセス方法を説明します。まずサービスをデプロイした後、必要に応じてプロトコルを選択してください。

以下の curl コマンドでは、DNS がデフォルトで設定されていないため、Host ヘッダーにドメイン名を指定しています。ゲートウェイに対して DNS を設定した場合は、-H "Host:" フラグを省略できます。

サンプルサービスのデプロイ

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

  2. [クラスター] ページで、ご利用のクラスター名をクリックします。左側ナビゲーションウィンドウから、[アプリケーション] > [Knative] を選択します。

  3. [サービス] タブで、[名前空間]default に設定し、[テンプレートからの作成] をクリックします。エディターに以下の YAML を貼り付け、[作成] をクリックします。

    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 アドレスをメモしてください。次の手順でこれらの値を使用します。

HTTP によるアクセス

以下のコマンドを実行し、先ほどメモしたゲートウェイの IP アドレスおよびドメイン名に置き換えてください。

curl -H "Host: helloworld-go.default.example.com" http://8.141.XX.XX

期待される出力:

Hello Knative!

HTTPS によるアクセス

ステップ 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

この手順では、4096 ビットの RSA 鍵と、有効期間が 3650 日の証明書が生成され、helloworld-go.default.example.com および helloworld-go.default.example.cn の Subject Alternative Names (SAN) が設定されます。

ステップ 2:証明書からシークレットの作成

kubectl -n knative-serving create secret tls kourier-cert --key tls.key --cert tls.crt

ステップ 3:net-kourier-controller Deployment の存在確認

kubectl get deployments -n knative-serving

ステップ 4:コントローラーへの証明書設定

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

spec.containers[].env 下に、以下の 2 つの環境変数を追加します。

...
spec:
  containers:
  - env:
    - name: CERTS_SECRET_NAMESPACE
      value: knative-serving
    - name: CERTS_SECRET_NAME
      value: kourier-cert
...
パラメーター説明
CERTS_SECRET_NAMESPACEシークレットが作成された名前空間 (knative-serving)
CERTS_SECRET_NAMEシークレットの名前 (kourier-cert)

ステップ 5:コントローラー Pod の実行状態の確認

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

期待される出力:

Hello Knative!

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

Knative には組み込みモニタリングが含まれています。[Knative] ページで、[モニタリングダッシュボード] タブをクリックして、サービスのメトリックを表示します。設定手順については、「Knative モニタリングダッシュボードの表示」をご参照ください。

次のステップ