1장. 게이트웨이 정보
게이트웨이는 독립 실행형 Envoy 프록시 배포이며 서비스 메시의 에지에서 작동하는 관련 Kubernetes 서비스입니다. 메시를 입력하거나 떠나는 트래픽을 세밀하게 제어하도록 게이트웨이를 구성할 수 있습니다. Red Hat OpenShift Service Mesh에서는 게이트웨이 삽입을 사용하여 게이트웨이를 설치합니다.
1.1. 게이트웨이 삽입 정보 링크 복사링크가 클립보드에 복사되었습니다!
게이트웨이 삽입은 사이드카 삽입과 동일한 메커니즘을 사용하여 Envoy 프록시를 게이트웨이 포드에 삽입합니다. 게이트웨이 삽입을 사용하여 게이트웨이를 설치하려면 Istio 컨트롤 플레인에 표시되는 네임스페이스에 Kubernetes Deployment
오브젝트 및 관련 Kubernetes Service
오브젝트를 생성합니다. Istio 컨트롤 플레인에서 프록시를 삽입하고 프록시가 게이트웨이로 구성되도록 Deployment
오브젝트를 생성하고 주석을 답니다. 게이트웨이를 설치한 후 Istio Gateway
및 VirtualService
리소스를 사용하여 수신 및 송신 트래픽을 제어하도록 게이트웨이를 구성합니다.
1.1.1. 게이트웨이 삽입을 사용하여 게이트웨이 설치 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에서는 게이트웨이 삽입을 사용하여 게이트웨이를 설치하는 방법을 설명합니다.
이 절차를 사용하여 수신 또는 송신 게이트웨이를 생성할 수 있습니다.
사전 요구 사항
- OpenShift Service Mesh Operator 버전 3.0 이상을 설치했습니다.
- Istio 컨트롤 플레인을 생성했습니다.
-
IstioCNI
리소스를 생성했습니다.
프로세스
게이트웨이를 설치하는 데 사용할 네임스페이스를 만듭니다.
oc create namespace <gateway_namespace>
$ oc create namespace <gateway_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고다른 네임스페이스에 게이트웨이 및 Istio 컨트롤 플레인을 설치합니다.
전용 게이트웨이 네임스페이스에 게이트웨이를 설치할 수 있습니다. 이 방법을 사용하면 다른 네임스페이스에서 작동하는 많은 애플리케이션에서 게이트웨이를 공유할 수 있습니다. 또는 애플리케이션 네임스페이스에 게이트웨이를 설치할 수 있습니다. 이 방식에서 게이트웨이는 해당 네임스페이스에서 애플리케이션의 전용 게이트웨이 역할을 합니다.
게이트웨이 배포에 대한 서비스 계정, 역할, 역할 바인딩을 정의하는
secret-reader.yml
이라는 YAML 파일을 생성합니다. 이러한 설정을 사용하면 게이트웨이에서 TLS 인증 정보를 가져오는 데 필요한 시크릿을 읽을 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 YAML 파일을 적용합니다.
oc apply -f secret-reader.yml
$ oc apply -f secret-reader.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 게이트웨이의 Kubernetes
Deployment
오브젝트를 정의하는gateway-deployment.yml
이라는 YAML 파일을 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Istio 컨트롤 플레인이 기본 사이드카 템플릿 대신 게이트웨이 삽입 템플릿을 사용함을 나타냅니다.
- 2
- 게이트웨이 배포에 고유한 레이블이 설정되어 있는지 확인합니다. Istio
Gateway
리소스에서 게이트웨이 워크로드를 선택할 수 있도록 고유한 레이블이 필요합니다. - 3
sidecar.istio.io/inject
레이블을true
로 설정하여 게이트웨이 삽입을 활성화합니다. Istio 리소스의 이름이기본값이
아닌 경우 대신istio.io/rev: <istio_revision
> 레이블을 사용해야 합니다. 여기서 리버전은 Istio 리소스의 활성 버전을 나타냅니다.- 4
- Pod가 시작될 때마다 이미지가 자동으로 업데이트되도록 image 필드를
auto
로 설정합니다. - 5
serviceAccountName
을 이전에 생성한ServiceAccount
의 이름으로 설정합니다.
다음 명령을 실행하여 YAML 파일을 적용합니다.
oc apply -f gateway-deployment.yml
$ oc apply -f gateway-deployment.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 게이트웨이
배포
롤아웃이 성공했는지 확인합니다.oc rollout status deployment/<gateway_name> -n <gateway_namespace>
$ oc rollout status deployment/<gateway_name> -n <gateway_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력은 다음과 유사합니다.
출력 예
Waiting for deployment "<gateway_name>" rollout to finish: 0 of 1 updated replicas are available... deployment "<gateway_name>" successfully rolled out
Waiting for deployment "<gateway_name>" rollout to finish: 0 of 1 updated replicas are available... deployment "<gateway_name>" successfully rolled out
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 게이트웨이의 Kubernetes
Service
오브젝트가 포함된gateway-service.yml
이라는 YAML 파일을 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 YAML 파일을 적용합니다.
oc apply -f gateway-service.yml
$ oc apply -f gateway-service.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 게이트웨이 서비스가 게이트웨이 Pod의 끝점을 대상으로 하는지 확인합니다.
oc get endpoints <gateway_name> -n <gateway_namespace>
$ oc get endpoints <gateway_name> -n <gateway_namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 예와 유사한 출력이 표시됩니다.
출력 예
NAME ENDPOINTS AGE <gateway_name> 10.131.0.181:8080,10.131.0.181:8443 1m
NAME ENDPOINTS AGE <gateway_name> 10.131.0.181:8080,10.131.0.181:8443 1m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 게이트웨이의 수평 Pod 자동 스케일러를 정의하는
gateway-hpa.yml
이라는 YAML 파일을 만듭니다. 다음 예제에서는 최소 복제본을2
로 설정하고 최대 복제본을5
로 설정하고 평균 CPU 사용률이 CPU 리소스 제한의 80%를 초과하면 복제본을 확장합니다. 이 제한은 게이트웨이의 배포 Pod 템플릿에 지정됩니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
spec.scaleTargetRef.name
을 이전에 생성한 게이트웨이 배포 이름으로 설정합니다.
선택 사항: 다음 명령을 실행하여 YAML 파일을 적용합니다.
oc apply -f gateway-hpa.yml
$ oc apply -f gateway-hpa.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 게이트웨이의 Pod 중단 예산을 정의하는
gateway-pdb.yml
이라는 YAML 파일을 만듭니다. 다음 예제에서는 제거 후 최소 1개의 정상 게이트웨이 Pod가 클러스터에 남아 있는 경우에만 게이트웨이 Pod를 제거할 수 있습니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
spec.selector.matchLabels
를 이전에 생성한 게이트웨이 배포의 Pod 템플릿에 지정된 고유한 라벨 또는 세트로 설정합니다.
선택 사항: 다음 명령을 실행하여 YAML 파일을 적용합니다.
oc apply -f gateway-pdb.yml
$ oc apply -f gateway-pdb.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow