4.8. Kourier 구성
Kourier는 Knative Serving의 경량 Kubernetes 네이티브 Ingress입니다. Kourier는 Knative의 게이트웨이 역할을 하며 HTTP 트래픽을 Knative 서비스로 라우팅합니다.
4.8.1. 현재 Envoy 부트스트랩 구성에 액세스
Kourier의 Envoy 프록시 구성 요소는 Knative 서비스에 대한 인바운드 및 아웃바운드 HTTP 트래픽을 처리합니다. 기본적으로 Kourier에는 knative-serving-ingress
네임스페이스의 kourier-bootstrap
구성 맵에 Envoy 부트스트랩 구성이 포함되어 있습니다.
프로세스
현재 Envoy 부트스트랩 구성을 가져오려면 다음 명령을 실행합니다.
명령 예
$ oc get cm kourier-bootstrap -n knative-serving-ingress -o yaml
예를 들어 기본 구성을 사용하면 example 명령은 다음 발췌가 포함된 출력을 생성합니다.
출력 예
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
데이터
출력 예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 getaways의 kourier-bootstrap 사용자 정의
Kourier의 Envoy 프록시 구성 요소는 Knative 서비스에 대한 인바운드 및 아웃바운드 HTTP 트래픽을 처리합니다. 기본적으로 Kourier에는 knative-serving-ingress
네임스페이스의 kourier-bootstrap
구성 맵에 Envoy 부트스트랩 구성이 포함되어 있습니다. 이 구성 맵을 사용자 정의 맵으로 변경할 수 있습니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Serving이 설치되어 있습니다.
- OpenShift Container Platform에 대한 클러스터 관리자 권한이 있거나 AWS 또는 OpenShift Dedicated의 Red Hat OpenShift Service에 대한 클러스터 또는 전용 관리자 권한이 있습니다.
프로세스
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에 대한 클러스터 관리자 권한이 있거나 AWS 또는 OpenShift Dedicated의 Red Hat OpenShift Service에 대한 클러스터 또는 전용 관리자 권한이 있습니다.
프로세스
관리자 인터페이스 액세스를 활성화하려면 부트스트랩 구성 맵에서 이 구성을 찾습니다.
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
구성을 적용합니다.첫 번째는
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
두 번째는
관리자
구성에 있습니다.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