4.8. Kourier の設定


Kourier は、Knative Serving 用の軽量の Kubernetes ネイティブ Ingress です。Kourier は Knative のゲートウェイとして機能し、HTTP トラフィックを Knative サービスにルーティングします。

4.8.1. 現在の Envoy ブートストラップ設定のアクセス

Kourier の Envoy プロキシーコンポーネントは、Knative サービスの受信および送信 HTTP トラフィックを処理します。デフォルトでは、Kourier には、knative-serving-ingress namespace の kourier-bootstrap 設定マップに Envoy ブートストラップ設定が含まれています。

手順

  • 現在の Envoy ブートストラップ設定を取得するには、次のコマンドを実行します。

    コマンドの例

    $ oc get cm kourier-bootstrap -n knative-serving-ingress -o yaml

    たとえば、デフォルト設定では、例のコマンドは次の抜粋を含む出力を生成します。

    出力例

    Name:         kourier-bootstrap
    Namespace:    knative-serving-ingress
    Labels:       app.kubernetes.io/component=net-kourier
                  app.kubernetes.io/name=knative-serving
                  app.kubernetes.io/version=release-v1.10
                  networking.knative.dev/ingress-provider=kourier
                  serving.knative.openshift.io/ownerName=knative-serving
                  serving.knative.openshift.io/ownerNamespace=knative-serving
    Annotations:  manifestival: new

    Data 出力例

    dynamic_resources:
      ads_config:
        transport_api_version: V3
        api_type: GRPC
        rate_limit_settings: {}
        grpc_services:
        - envoy_grpc: {cluster_name: xds_cluster}
      cds_config:
        resource_api_version: V3
        ads: {}
      lds_config:
        resource_api_version: V3
        ads: {}
    node:
      cluster: kourier-knative
      id: 3scale-kourier-gateway
    static_resources:
      listeners:
        - name: stats_listener
          address:
            socket_address:
              address: 0.0.0.0
              port_value: 9000
          filter_chains:
            - filters:
                - name: envoy.filters.network.http_connection_manager
                  typed_config:
                    "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
                    stat_prefix: stats_server
                    http_filters:
                      - name: envoy.filters.http.router
                        typed_config:
                          "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
                    route_config:
                      virtual_hosts:
                        - name: admin_interface
                          domains:
                            - "*"
                          routes:
                            - match:
                                safe_regex:
                                  regex: '/(certs|stats(/prometheus)?|server_info|clusters|listeners|ready)?'
                                headers:
                                  - name: ':method'
                                    string_match:
                                      exact: GET
                              route:
                                cluster: service_stats
      clusters:
        - name: service_stats
          connect_timeout: 0.250s
          type: static
          load_assignment:
            cluster_name: service_stats
            endpoints:
              lb_endpoints:
                endpoint:
                  address:
                    pipe:
                      path: /tmp/envoy.admin
        - name: xds_cluster
          # This keepalive is recommended by envoy docs.
          # https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol
          typed_extension_protocol_options:
            envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
              "@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
              explicit_http_config:
                http2_protocol_options:
                  connection_keepalive:
                    interval: 30s
                    timeout: 5s
          connect_timeout: 1s
          load_assignment:
            cluster_name: xds_cluster
            endpoints:
              lb_endpoints:
                endpoint:
                  address:
                    socket_address:
                      address: "net-kourier-controller.knative-serving-ingress.svc.cluster.local."
                      port_value: 18000
          type: STRICT_DNS
    admin:
      access_log:
      - name: envoy.access_loggers.stdout
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog
      address:
        pipe:
          path: /tmp/envoy.admin
    layered_runtime:
      layers:
        - name: static-layer
          static_layer:
            envoy.reloadable_features.override_request_timeout_by_gateway_timeout: false

    BinaryData 出力の例

    Events:  <none>

4.8.2. Kourier ゲートウェイ用の kourier-bootstrap のカスタマイズ

Kourier の Envoy プロキシーコンポーネントは、Knative サービスの受信および送信 HTTP トラフィックを処理します。デフォルトでは、Kourier には、knative-serving-ingress namespace の kourier-bootstrap 設定マップに Envoy ブートストラップ設定が含まれています。この設定マップをカスタムマップに変更できます。

前提条件

  • OpenShift Serverless Operator および Knative Serving がインストールされている。
  • OpenShift Container Platform に対するクラスター管理者権限があるか、Red Hat OpenShift Service on AWS または OpenShift Dedicated に対するクラスターまたは専用管理者権限がある。

手順

  • KnativeServing カスタムリソース (CR) の spec.ingress.kourier.bootstrap-configmap フィールドを変更して、カスタムブートストラップ設定マップを指定します。

    KnativeServing CR の例

    apiVersion: operator.knative.dev/v1beta1
    kind: KnativeServing
    metadata:
      name: knative-serving
      namespace: knative-serving
    spec:
      config:
        network:
          ingress-class: kourier.ingress.networking.knative.dev
      ingress:
        kourier:
          bootstrap-configmap: my-configmap
          enabled: true
    # ...

4.8.3. 管理者インターフェイスへのアクセスの有効化

管理者インターフェイスへのアクセスを有効にするには、envoy ブートストラップ設定を変更します。

重要

この手順では、envoy ブートストラップ設定を変更すると Knative が失敗する可能性があるため、Knative に関する十分な知識があることを前提としています。Red Hat は、製品でテストされていない、または製品に同梱されていないカスタム設定をサポートしません。

前提条件

  • OpenShift Serverless Operator および Knative Serving がインストールされている。
  • OpenShift Container Platform に対するクラスター管理者権限があるか、Red Hat OpenShift Service on AWS または OpenShift Dedicated に対するクラスターまたは専用管理者権限がある。

手順

  1. 管理者インターフェイスへのアクセスを有効にするには、ブートストラップ設定マップ内で次の設定を見つけます。

    pipe:
      path: /tmp/envoy.admin

    次の設定に置き換えます。

    socket_address: 1
      address: 127.0.0.1
      port_value: 9901
    1
    この設定により、ループバックアドレス (127.0.0.1) とポート 9901 上の Envoy 管理インターフェイスにアクセスできるようになります。
  2. service_stats クラスター設定と admin 設定に socket_address 設定を適用します。

    1. 1 つ目は、service_stats クラスター設定です。

      clusters:
        - name: service_stats
          connect_timeout: 0.250s
          type: static
          load_assignment:
            cluster_name: service_stats
            endpoints:
              lb_endpoints:
                endpoint:
                  address:
                    socket_address:
                      address: 127.0.0.1
                      port_value: 9901
    2. 2 つ目は admin 設定です。

      admin:
        access_log:
          - name: envoy.access_loggers.stdout
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog
        address:
          socket_address:
            address: 127.0.0.1
            port_value: 9901
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.