2.2. 클러스터 외부의 트래픽에 서비스 노출 정보
메시의 서비스에 액세스하기 위해 OpenShift 클러스터 외부에서 트래픽을 활성화하려면 서비스
유형을 LoadBalancer
로 설정하거나 OpenShift 라우터를 사용하여 게이트웨이 프록시를 공개해야 합니다.
Kubernetes 로드 밸런싱을 사용하여 인바운드 게이트웨이를 통해 들어오는 트래픽을 직접 처리하면 데이터 암호화와 관련된 대기 시간을 줄일 수 있습니다. 인바운드 게이트웨이에서 암호화를 관리하면 종종 대기 시간을 추가하는 메시 내에서 중간 암호 해독 및 재암호화 단계를 방지할 수 있습니다. 이 방법을 사용하면 메시 트래픽을 한 번만 암호화 및 해독할 수 있으므로 일반적으로 더 효율적입니다.
OpenShift 라우터는 수신 트래픽을 관리하기 위한 표준 접근 방식을 제공하며 라우터를 사용하여 동일한 방법을 사용하여 모든 클러스터 인그레스 트래픽의 인증서를 관리할 수 있습니다. 그러나 OpenShift 라우터는 인바운드 트래픽과 메시 애플리케이션 간에 추가 홉을 도입합니다. 일반적으로 라우터에서 암호를 해독한 다음, 대기 시간을 유발하는 서비스 메시 수신 게이트웨이에서 다시 암호화하여 트래픽을 라우팅합니다.
2.2.1. OpenShift 경로를 사용하여 클러스터 외부의 트래픽에 게이트웨이 노출 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift 경로를 사용하여 클러스터 외부의 트래픽에 게이트웨이를 노출할 수 있습니다. 이 접근 방식은 클러스터 외부의 트래픽에 게이트웨이를 노출해야 할 때 Kubernetes 로드 밸런서 서비스를 사용하는 대신 사용할 수 있습니다.
사전 요구 사항
- Istio 게이트웨이 및 VirtualService 리소스를 사용하여 서비스를 노출하는 절차를 완료했습니다.
프로세스
다음 명령을 실행하여
서비스
유형이ClusterIP
로 설정되어 있는지 확인합니다.oc patch service <gateway_name> -n <gateway_namespace> -p '{"spec": {"type": "ClusterIP"}}'
$ oc patch service <gateway_name> -n <gateway_namespace> -p '{"spec": {"type": "ClusterIP"}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow httpbin
서비스의 경로를 정의하는httpbin-route.yaml
이라는 YAML 파일을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 YAML 파일을 적용합니다.
oc apply -f httpbin-route.yaml
$ oc apply -f httpbin-route.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 인그레스 라우터를 통해 클러스터 외부에서
httpbin
서비스에 액세스할 수 있는지 확인합니다. 클러스터가 실행 중인 환경에 대해INGRESS_HOST
변수를 적절하게 설정해야 합니다.클러스터가 AWS에서 실행되는 경우 다음 명령을 실행하여
INGRESS_HOST
변수를 설정합니다.INGRESS_HOST=$(oc get service router-default -n openshift-ingress -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
$ INGRESS_HOST=$(oc get service router-default -n openshift-ingress -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 클러스터가 GCP 또는 Azure에서 실행되는 경우 다음 명령을 실행하여
INGRESS_HOST
변수를 설정합니다.INGRESS_HOST=$(oc get service router-default -n openshift-ingress -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
$ INGRESS_HOST=$(oc get service router-default -n openshift-ingress -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 수신 라우터의 호스트를 사용하여
curl
요청을httpbin
서비스로 보냅니다.curl -s -I -H Host:httpbin.example.com http://$INGRESS_HOST/headers
$ curl -s -I -H Host:httpbin.example.com http://$INGRESS_HOST/headers
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
응답에
HTTP/1.1 200 OK
상태가 있는지 확인합니다. 이 상태는 요청이 성공했음을 나타냅니다.