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

Container Compute Service:Knative での Kourier Ingress の使用

最終更新日:Dec 28, 2024

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

前提条件

  • Knative が ACS クラスタにデプロイされていること。詳細については、Knative のデプロイを参照してください。

  • ACS クラスタで DNS ベースのサービスディスカバリが有効になっていること。詳細については、DNS の概要およびCoreDNSを参照してください。

手順 1: Kourier Ingress をデプロイする

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

  2. クラスタページで、管理するクラスタを見つけ、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションペインで、アプリケーション > Knative を選択します。

  3. コンポーネントタブで、Knative のデプロイをクリックし、Kourier を選択して、画面の指示に従ってデプロイを完了します。

手順 2: Kourier Ingress を使用してサービスにアクセスする

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

Kourier Ingress を使用して HTTP 経由で Knative サービスにアクセスする

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

  2. クラスタページで、管理するクラスタを見つけ、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションペインで、アプリケーション > 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 Ingress を使用して HTTPS 経由で Knative サービスにアクセスする

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

  2. クラスタページで、管理するクラスタを見つけ、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションペインで、アプリケーション > 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. 次のコマンドを実行して、net-kourier-controller という名前のデプロイメントが 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 # 取得した実際のゲートウェイ IP アドレスとドメイン名を指定します。

    予期される出力:

    Hello Knative!

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

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

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

image.png

参考資料