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 # ...
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 # ...
5.10.4. OpenShift Ingress 샤딩 구성으로 Serving 확인
Ingress 샤딩, Knative Serving 및 서비스를 구성한 후 서비스가 올바른 경로와 선택한 Ingress shard를 사용하는지 확인할 수 있습니다.
프로세스
다음 명령을 실행하여 클러스터의 서비스에 대한 정보를 출력합니다.
$ 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
다음 명령을 실행하여 서비스에서 올바른 경로와 선택한 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