1.4. OpenShift Serverless와 Service Mesh 통합
1.4.1. 설치 사전 요구 사항 확인 링크 복사링크가 클립보드에 복사되었습니다!
Serverless와 Service Mesh 통합을 설치하고 구성하기 전에 사전 요구 사항이 충족되었는지 확인합니다.
프로세스
충돌하는 게이트웨이를 확인합니다.
명령 예
oc get gateway -A -o jsonpath='{range .items[*]}{@.metadata.namespace}{"/"}{@.metadata.name}{" "}{@.spec.servers}{"\n"}{end}' | column -t
$ oc get gateway -A -o jsonpath='{range .items[*]}{@.metadata.namespace}{"/"}{@.metadata.name}{" "}{@.spec.servers}{"\n"}{end}' | column -t
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
knative-serving/knative-ingress-gateway [{"hosts":["*"],"port":{"name":"https","number":443,"protocol":"HTTPS"},"tls":{"credentialName":"wildcard-certs","mode":"SIMPLE"}}] knative-serving/knative-local-gateway [{"hosts":["*"],"port":{"name":"http","number":8081,"protocol":"HTTP"}}]
knative-serving/knative-ingress-gateway [{"hosts":["*"],"port":{"name":"https","number":443,"protocol":"HTTPS"},"tls":{"credentialName":"wildcard-certs","mode":"SIMPLE"}}] knative-serving/knative-local-gateway [{"hosts":["*"],"port":{"name":"http","number":8081,"protocol":"HTTP"}}]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 다른 Service Mesh 인스턴스의 일부인
knative-serving
및Gateway
의게이트웨이
를 제외하고포트 443
및호스트: ["*"]
를 바인딩하는게이트웨이
를 반환해서는 안 됩니다.참고Serverless에서 속하는 메시는 Serverless 워크로드에만 예약되어 있어야 합니다. 이는 게이트웨이와 같은 추가 구성이 Serverless 게이트웨이
knative-local-gateway
및knative-ingress-gateway
를 방해할 수 있기 때문입니다.Red Hat OpenShift Service Mesh는 하나의 게이트웨이가 동일한 포트(포트:
443
)에서 와일드카드호스트 바인딩(호스트: ["*"]
)을 요청할 수 있도록 허용합니다. 다른 게이트웨이가 이미 이 구성을 바인딩하고 있는 경우 Serverless 워크로드에 대해 별도의 메시를 생성해야 합니다.Red Hat OpenShift Service Mesh
istio-ingressgateway
가NodePort
또는LoadBalancer
유형으로 노출되는지 확인합니다.명령 예
oc get svc -A | grep istio-ingressgateway
$ oc get svc -A | grep istio-ingressgateway
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
istio-system istio-ingressgateway ClusterIP 172.30.46.146 none> 15021/TCP,80/TCP,443/TCP 9m50s
istio-system istio-ingressgateway ClusterIP 172.30.46.146 none> 15021/TCP,80/TCP,443/TCP 9m50s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은
NodePort
또는LoadBalancer
유형의Service
오브젝트를 반환하지 않아야 합니다.참고클러스터 외부 Knative 서비스는 OpenShift 경로를 사용하여 OpenShift Ingress를 통해 호출해야 합니다.
NodePort
또는LoadBalancer
유형의Service
오브젝트를 사용하여istio-ingressgateway
를 노출하는 것과 같이 서비스 메시에 직접 액세스하는 것은 지원되지 않습니다.
1.4.2. 서비스 메시 설치 및 구성 링크 복사링크가 클립보드에 복사되었습니다!
Serverless를 Service Mesh와 통합하려면 특정 구성으로 서비스 메시를 설치해야 합니다.
프로세스
다음 구성을 사용하여
istio-system
네임스페이스에서ServiceMeshControlPlane
리소스를 생성합니다.중요기존
ServiceMeshControlPlane
오브젝트가 있는 경우 동일한 구성이 적용되었는지 확인합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 메시에서 엄격한 mTLS를 적용합니다. 유효한 클라이언트 인증서를 사용하는 호출만 허용됩니다.
- 2
- Serverless에서 Knative 서비스에 대한 정상 종료 시간은 30초입니다.
Istio-proxy
에는 요청이 삭제되지 않도록 하려면 더 긴 종료 기간이 있어야 합니다. - 3
- Knative 게이트웨이만 대상으로 할 수신 게이트웨이의 특정 선택기를 정의합니다.
- 4
- 이러한 포트는 Kubernetes 및 클러스터 모니터링에 의해 호출되며 메시의 일부가 아니며 mTLS를 사용하여 호출할 수 없습니다. 따라서 이러한 포트는 메시에서 제외됩니다.
Service Mesh와 통합할 네임스페이스를
ServiceMeshMemberRoll
오브젝트에 멤버로 추가합니다.servicemesh-member-roll.yaml
구성 파일 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Service Mesh와 통합할 네임스페이스 목록입니다.
중요이 네임스페이스 목록에
knative-serving
및knative-eventing
네임스페이스가 포함되어야 합니다.ServiceMeshMemberRoll
리소스를 적용합니다.oc apply -f servicemesh-member-roll.yaml
$ oc apply -f servicemesh-member-roll.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 서비스 메시가 트래픽을 수락할 수 있도록 필요한 게이트웨이를 생성합니다. 다음 예제에서는
ISTIO_MUTUAL
모드(mTLS)와 함께knative-local-gateway
오브젝트를 사용합니다.istio-knative-gateways.yaml
구성 파일의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow Gateway
리소스를 적용합니다.oc apply -f istio-knative-gateways.yaml
$ oc apply -f istio-knative-gateways.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.3. Serverless 설치 및 구성 링크 복사링크가 클립보드에 복사되었습니다!
Service Mesh를 설치한 후 특정 구성으로 Serverless를 설치해야 합니다.
프로세스
Istio 통합을 활성화하는 다음
KnativeServing
사용자 정의 리소스를 사용하여 Knative Serving을 설치합니다.knative-serving-config.yaml
구성 파일의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow KnativeServing
리소스를 적용합니다.oc apply -f knative-serving-config.yaml
$ oc apply -f knative-serving-config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Istio 통합을 활성화하는 다음
KnativeEventing
오브젝트를 사용하여 Knative Eventing을 설치합니다.knative-eventing-config.yaml
구성 파일의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow KnativeEventing
리소스를 적용합니다.oc apply -f knative-eventing-config.yaml
$ oc apply -f knative-eventing-config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Istio 통합을 활성화하는 다음
KnativeKafka
사용자 정의 리소스를 사용하여 Knative Kafka를 설치합니다.knative-kafka-config.yaml
구성 파일의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow KnativeEventing
오브젝트를 적용합니다.oc apply -f knative-kafka-config.yaml
$ oc apply -f knative-kafka-config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ServiceEntry
를 설치하여KnativeKafka
구성 요소와 Apache Kafka 클러스터 간의 통신에 대해 서비스 메시에 알립니다.kafka-cluster-serviceentry.yaml
구성 파일의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고spec.ports
에서 나열된 포트는 예제 Cryostat 포트입니다. 실제 값은 Apache Kafka 클러스터 구성 방법에 따라 다릅니다.ServiceEntry
리소스를 적용합니다.oc apply -f kafka-cluster-serviceentry.yaml
$ oc apply -f kafka-cluster-serviceentry.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4.4. 통합 확인 링크 복사링크가 클립보드에 복사되었습니다!
Istio가 활성화된 Service Mesh 및 Serverless를 설치한 후 통합이 작동하는지 확인할 수 있습니다.
프로세스
사이드카 삽입이 활성화되고 패스쓰루(pass-through) 경로를 사용하는 Knative 서비스를 생성합니다.
knative-service.yaml
구성 파일의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요이 예제의 주석을 모든 Knative 서비스에 항상 추가하여 서비스 메시에서 작동하도록 합니다.
Service
리소스를 적용합니다.oc apply -f knative-service.yaml
$ oc apply -f knative-service.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CA에서 신뢰하는 보안 연결을 사용하여 서버리스 애플리케이션에 액세스합니다.
curl --cacert root.crt <service_url>
$ curl --cacert root.crt <service_url>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예를 들어 다음을 실행합니다.
명령 예
curl --cacert root.crt https://hello-default.apps.openshift.example.com
$ curl --cacert root.crt https://hello-default.apps.openshift.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Hello Openshift!
Hello Openshift!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow