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에 대한 클러스터 또는 전용 관리자 권한이 있습니다.

프로세스

  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. 첫 번째는 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:
        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은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.