이 단계에서는 Apigee 인그레스 게이트웨이에 대해 Kubernetes 서비스를 설정하는 방법을 설명합니다. Kubernetes 서비스는 각 인그레스 배포에 대해 노출 가능한 IP 주소를 가져오기 위해 필요합니다. 프록시에 대한 클라이언트 호출은 이 IP 주소로 확인할 호스트 이름을 호출합니다.
Apigee 인그레스 게이트웨이의 Kubernetes 서비스 옵션
IP 주소를 할당하기 위해 Kubernetes 서비스를 제공하는 경우 두 가지 옵션이 있습니다.
- 각 Apigee 인그레스 게이트웨이에 대해 커스텀 Kubernetes 서비스를 만듭니다(권장).
- 기본 Kubernetes 서비스를 사용합니다.
자체 Kubernetes 서비스 만들기
프로덕션 환경의 경우 Apigee에서는 각 인그레스 게이트웨이에 대해 커스텀 Kubernetes 서비스를 만드는 것을 권장합니다.
- Apigee는 기본 서비스를 삭제하지만 삭제 시 커스텀 Kubernetes 서비스를 삭제하지 않습니다. 따라서 Apigee Hybrid를 다시 설치할 때 IP 주소가 해제되지 않습니다.
- EKS, AKS, OpenShift와 같이 Google Cloud에 없는 플랫폼의 경우 Kubernetes 서비스가 클라우드 제공업체와 협력하도록 맞춤설정해야 합니다. Apigee는 기본 Kubernetes 서비스에 대한 모든 맞춤설정을 지원하지 않으므로 기본 서비스를 사용하는 대신 커스텀 Kubernetes 서비스를 만드는 것이 더 좋습니다.
다음 단계를 수행하여 트래픽을 설정하고 새 인그레스 게이트웨이로 라우팅합니다.
- 필수 포드 선택기 라벨(
app
,ingress_name
,org
)을 사용하여 Kubernetes 서비스를 만듭니다. 이 라벨은 이미 Apigee 인그레스 게이트웨이 포드에 있습니다.다음 템플릿을 사용하여 서비스 파일을 만듭니다.
apiVersion: v1 kind: Service metadata: name: SERVICE_NAME namespace: apigee spec: ports: - name: status-port port: 15021 protocol: TCP targetPort: 15021 - name: https port: 443 protocol: TCP targetPort: 8443 selector: app: apigee-ingressgateway #required ingress_name: INGRESS_NAME org: ORG_NAME type: LoadBalancer loadBalancerIP: LOAD_BALANCER_IP
- SERVICE_NAME은 이 서비스를 식별하는 데 사용되는 이름입니다. 예를 들면
apigee-prod-1
입니다. - INGRESS_NAME은 이 Apigee 인그레스 게이트웨이 게이트웨이의 이름입니다.
overrides.yaml
파일에서ingressGateways.name
에 제공한 이름과 일치해야 합니다. 자세한 내용은 구성 속성 참조의ingressGateways
를 참조하세요. - ORG_NAME은 Apigee 조직의 이름입니다.
overrides.yaml
파일에서org
에 제공한 이름과 일치해야 합니다. 자세한 내용은 구성 속성 참조의org
를 참조하세요. - LOAD_BALANCER_IP는 부하 분산기의 IP 주소입니다.
부하 분산기에 예약된 IP 주소가 있으면 이 주소를 입력합니다.
아직 예약된 IP 주소가 없으면 기본 Apigee 인그레스 서비스에서 반환된 IP 주소를 사용할 수 있습니다. 다음 명령어로 반환된
EXTERNAL-IP
를 사용합니다.kubectl get svc -n apigee -l app=apigee-ingressgateway
Apigee 인그레스 게이트웨이는 다음 포트를 사용합니다.
포트 설명 443 런타임 트래픽 15021 상태 점검 status-port
는 GKE 인그레스 상태 점검에 사용할 수 있는/healthz/ready
엔드포인트를 노출합니다. - SERVICE_NAME은 이 서비스를 식별하는 데 사용되는 이름입니다. 예를 들면
SERVICE_FILENAME.yaml
을 적용하여 서비스를 만듭니다.kubectl apply -f SERVICE_FILENAME.yaml
- 다음 명령어를 사용하여 Apigee 인그레스 게이트웨이의 외부 IP를 찾습니다.
kubectl get svc -n apigee SERVICE_NAME
다음과 비슷한 결과가 출력됩니다.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE apigee-ingressgateway-prod-hybrid-37a39bd LoadBalancer 192.0.2.123 233.252.0.123 15021:32049/TCP,80:31624/TCP,443:30723/TCP 16h
-
기본 Apigee 인그레스 게이트웨이 서비스에 대해 부하 분산기를 사용 중지합니다.
- 재정의 파일에서
ingressGateways[].svcType
속성을ClusterIP
로 업데이트합니다.ingressGateways: svcType: ClusterIP
-
apigee-org
차트를 업그레이드하여 변경사항을 적용합니다.helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
자세한 내용은 기본 Apigee 인그레스 게이트웨이 서비스에 대해 loadbalancer 사용 중지를 참조하세요.
- 재정의 파일에서
상태 점검 호출을 수행하여 인그레스 게이트웨이를 테스트합니다.
curl -H 'User-Agent: GoogleHC/' https://DOMAIN/healthz/ingress -k \ --resolve "DOMAIN:443:INGRESS_IP_ADDRESS"
위치
- DOMAIN은 프로젝트 및 조직 설정 - 3단계: 환경 그룹 만들기에서 만든 환경 그룹의 호스트 이름으로 제공된 도메인입니다.
- INGRESS_IP_ADDRESS는 인그레스 IP 주소입니다(예:
233.252.0.123
).
성공하면 명령어에서 다음을 반환합니다.
Apigee Ingress is healthy
- 이 IP 주소를 사용하여 등록기관 또는 DNS 제공업체에서 DNS 레코드(일반적으로
A
또는CNAME
레코드)를 업데이트합니다.
기본 Kubernetes 서비스 사용
비프로덕션 환경이나 Apigee 인그레스 게이트웨이를 통해 초기 트래픽을 테스트하려는 경우에는 Apigee Hybrid가 각 인그레스 배포에 대해 기본 Kubernetes 서비스를 제공합니다.
overrides.yaml
파일에서 기본 서비스에 대한 구성을 제한적으로 변경할 수 있습니다. 사용 가능한 구성 옵션은 Apigee 인그레스 게이트웨이 관리를 참조하세요. 예를 들어 주석을 추가할 수 있습니다.
프로덕션 환경의 경우 인그레스용 Kubernetes 서비스를 제공하는 것이 좋습니다. 자체 Kubernetes 서비스 만들기의 단계를 따르세요.
- 다음 명령어를 실행하여 기본 Apigee 인그레스 서비스의 외부 IP를 찾습니다.
kubectl get svc -n apigee -l app=apigee-ingressgateway
다음과 비슷한 결과가 출력됩니다.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE apigee-ingressgateway-prod-hybrid-37a39bd LoadBalancer 192.0.2.123 233.252.0.123 15021:32049/TCP,80:31624/TCP,443:30723/TCP 16h
상태 점검 호출을 수행하여 인그레스 게이트웨이를 테스트합니다.
curl -H 'User-Agent: GoogleHC/' https://DOMAIN/healthz/ingress -k \ --resolve "DOMAIN:443:INGRESS_IP_ADDRESS"
위치
- DOMAIN은 프로젝트 및 조직 설정 - 3단계: 환경 그룹 만들기에서 만든 환경 그룹의 호스트 이름으로 제공된 도메인입니다.
- INGRESS_IP_ADDRESS는 인그레스 IP 주소입니다(예:
233.252.0.123
).
성공하면 명령어에서 다음을 반환합니다.
Apigee Ingress is healthy
- 이 IP 주소를 사용하여 등록기관 또는 DNS 제공업체에서 DNS 레코드(일반적으로
A
또는CNAME
레코드)를 업데이트합니다.