5.10. OpenShift Ingress 샤딩으로 Serving 사용


OpenShift Ingress 샤딩과 함께 Knative Serving을 사용하여 도메인에 따라 Ingress 트래픽을 분할할 수 있습니다. 이를 통해 네트워크 트래픽을 클러스터의 다른 부분으로 보다 효율적으로 관리하고 라우팅할 수 있습니다.

참고

OpenShift Ingress 샤딩이 있는 경우에도 OpenShift Serverless 트래픽은 여전히 단일 Knative Ingress Gateway 및 knative-serving 프로젝트의 활성화 구성 요소를 통해 라우팅됩니다.

네트워크 트래픽 격리에 대한 자세한 내용은 Service Mesh를 사용하여 OpenShift Serverless에서 네트워크 트래픽을 격리하는 방법을 참조하십시오.

사전 요구 사항

  • OpenShift Serverless Operator 및 Knative Serving이 설치되어 있습니다.
  • OpenShift Container Platform에 대한 클러스터 관리자 권한이 있거나 AWS 또는 OpenShift Dedicated의 Red Hat OpenShift Service에 대한 클러스터 또는 전용 관리자 권한이 있습니다.

5.10.1. OpenShift ingress shard 구성

Knative Serving을 구성하기 전에 OpenShift Ingress shard를 구성해야 합니다.

프로세스

  • IngressController CR의 라벨 선택기를 사용하여 다른 도메인과 특정 Ingress shard와 일치하도록 OpenShift Serverless를 구성합니다.

    IngressController CR 예

    apiVersion: operator.openshift.io/v1
    kind: IngressController
    metadata:
      name: ingress-dev 1
      namespace: openshift-ingress-operator
    spec:
      routeSelector:
        matchLabels:
          router: dev 2
      domain: "dev.serverless.cluster.example.com" 3
      # ...
    ---
    apiVersion: operator.openshift.io/v1
    kind: IngressController
    metadata:
      name: ingress-prod 4
      namespace: openshift-ingress-operator
    spec:
      routeSelector:
        matchLabels:
          router: prod 5
      domain: "prod.serverless.cluster.example.com" 6
      # ...

    1
    첫 번째 Ingress shard의 이름입니다.
    2
    ingress-dev shard와 일치하는 라벨 선택기입니다.
    3
    ingress-dev shard의 사용자 정의 도메인입니다.
    4
    두 번째 ingress shard의 이름입니다.
    5
    ingress-prod shard와 일치하는 라벨 선택기입니다.
    6
    ingress-prod shard의 사용자 정의 도메인입니다.

5.10.2. KnativeServing CR에서 사용자 정의 도메인 구성

OpenShift Ingress shard를 구성한 후 Knative Serving을 해당 shard와 일치하도록 구성해야 합니다.

프로세스

  • KnativeServing CR에서 spec.config.domain 필드를 추가하여 Ingress shard와 동일한 도메인 및 레이블을 사용하도록 Serving을 구성합니다.

    KnativeServing CR의 예

    spec:
      config:
        domain: 1
          dev.serverless.cluster.example.com: |
            selector:
              router: dev
          prod.serverless.cluster.example.com: |
            selector:
              router: prod
      # ...

    1
    이러한 값은 ingress shard 구성의 값과 일치해야 합니다.

5.10.3. Knative 서비스에서 특정 Ingress shard를 대상으로

Ingress 샤딩 및 Knative Serving을 구성한 후 라벨을 사용하여 Knative 서비스 리소스의 특정 Ingress shard를 대상으로 할 수 있습니다.

프로세스

  • Service CR에서 특정 shard와 일치하는 라벨 선택기를 추가합니다.

    Service CR의 예

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: hello-dev
      labels:
        router: dev 1
    spec:
      template:
        spec:
          containers:
          - image: docker.io/openshift/hello-openshift
    ---
    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: hello-prod
      labels:
        router: prod 2
    spec:
      template:
        spec:
          containers:
          - image: docker.io/openshift/hello-openshift
      # ...

    1 2
    레이블은 KnativeServing CR의 구성과 일치해야 합니다.

5.10.4. OpenShift Ingress 샤딩 구성으로 Serving 확인

Ingress 샤딩, Knative Serving 및 서비스를 구성한 후 서비스가 올바른 경로와 선택한 Ingress shard를 사용하는지 확인할 수 있습니다.

프로세스

  1. 다음 명령을 실행하여 클러스터의 서비스에 대한 정보를 출력합니다.

    $ oc get ksvc

    출력 예

    NAME         URL                                                             LATESTCREATED      LATESTREADY        READY   REASON
    hello-dev    https://hello-dev-default.dev.serverless.cluster.example.com    hello-dev-00001    hello-dev-00001    True
    hello-prod   https://hello-prod-default.prod.serverless.cluster.example.com  hello-prod-00001   hello-prod-00001   True

  2. 다음 명령을 실행하여 서비스에서 올바른 경로와 선택한 Ingress shard를 사용하는지 확인합니다.

    $ oc get route -n knative-serving-ingress -o jsonpath='{range .items[*]}{@.metadata.name}{" "}{@.spec.host}{" "}{@.status.ingress[*].routerName}{"\n"}{end}'

    출력 예

    route-19e6628b-77af-4da0-9b4c-1224934b2250-323461616533 hello-prod-default.prod.serverless.cluster.example.com ingress-prod
    route-cb5085d9-b7da-4741-9a56-96c88c6adaaa-373065343266 hello-dev-default.dev.serverless.cluster.example.com ingress-dev

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

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

© 2024 Red Hat, Inc.