2.7.2. 게이트웨이를 사용하여 Ingress 구성
Ingress 게이트웨이는 들어오는 HTTP/TCP 연결을 수신하는 메시의 에지에서 작동하는 로드 밸런서입니다. 노출된 포트와 프로토콜을 구성하지만 트래픽 라우팅 구성은 포함하지 않습니다. Ingress 트래픽의 트래픽 라우팅은 내부 서비스 요청과 동일한 방식으로 라우팅 규칙으로 구성됩니다.
다음 단계에서는 게이트웨이를 만들고 Bookinfo 샘플 애플리케이션에서 서비스를 /productpage
및 /login
. 경로의 외부 트래픽에 노출하도록 VirtualService
를 구성하는 방법을 보여줍니다.
절차
트래픽을 수락하기 위해 게이트웨이를 만듭니다.
YAML 파일을 생성한 후 다음 YAML을 이 파일에 복사합니다.
게이트웨이 예제 gateway.yaml
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: bookinfo-gateway spec: selector: istio: ingressgateway servers: - port: number: 80 name: http protocol: HTTP hosts: - "*"
YAML 파일을 적용합니다.
$ oc apply -f gateway.yaml
VirtualService
오브젝트를 생성하여 호스트 헤더를 다시 작성합니다.YAML 파일을 생성한 후 다음 YAML을 이 파일에 복사합니다.
가상 서비스 예 vs.yaml
apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: bookinfo spec: hosts: - "*" gateways: - bookinfo-gateway http: - match: - uri: exact: /productpage - uri: prefix: /static - uri: exact: /login - uri: exact: /logout - uri: prefix: /api/v1/products route: - destination: host: productpage port: number: 9080
YAML 파일을 적용합니다.
$ oc apply -f vs.yaml
게이트웨이 및 VirtualService가 올바르게 설정되었는지 확인합니다.
게이트웨이 URL을 설정합니다.
export GATEWAY_URL=$(oc -n istio-system get route istio-ingressgateway -o jsonpath='{.spec.host}')
포트 번호를 설정합니다. 이 예제에서
istio-system
은 컨트롤 플레인 프로젝트의 이름입니다.export TARGET_PORT=$(oc -n istio-system get route istio-ingressgateway -o jsonpath='{.spec.port.targetPort}')
명시적으로 노출된 페이지를 테스트합니다.
curl -s -I "$GATEWAY_URL/productpage"
예상 결과는
200
입니다.