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 に対するクラスターまたは専用管理者権限がある。
手順
管理者インターフェイスへのアクセスを有効にするには、ブートストラップ設定マップ内で次の設定を見つけます。
pipe: path: /tmp/envoy.admin
次の設定に置き換えます。
socket_address: 1 address: 127.0.0.1 port_value: 9901
- 1
- この設定により、ループバックアドレス (127.0.0.1) とポート 9901 上の Envoy 管理インターフェイスにアクセスできるようになります。
service_stats
クラスター設定とadmin
設定にsocket_address
設定を適用します。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 つ目は
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