이 페이지는 Apigee 및 Apigee Hybrid에 적용됩니다.
Apigee Edge 문서 보기
이 페이지에서는 클러스터에서 실행되는 Google Kubernetes Engine (GKE) 게이트웨이에서 ApigeeBackendService
와 필수 트래픽 확장 프로그램을 만드는 방법을 설명합니다.
이 방법은 APIMExtensionPolicy
를 사용하여 Apigee 데이터 플레인을 GKE Gateway의 정책 결정 지점 (PDP)으로 식별하는 대신 사용할 수 있습니다.
ApigeeBackendService
를 만들면 Kubernetes용 Apigee Operator가 ApigeeBackendService
와 이름 및 네임스페이스가 동일한 APIMExtensionPolicy
를 자동으로 만듭니다.
이는 지원 APIMExtensionPolicy
입니다.
Cloud Load Balancing 트래픽 확장 프로그램을 만들고 관리하며 트래픽 확장 프로그램 리소스에 Apigee를 확장 프로그램으로 추가하려는 경우 이 접근 방식을 사용하는 것이 좋습니다. Apigee 트래픽 확장 프로그램이 다른 트래픽 확장 프로그램과 함께 작동하는 경우 ApigeeBackendService
를 사용해야 합니다.
시작하기 전에
이 작업을 시작하기 전에 다음 단계를 완료하세요.
- GKE 구현에서 GKE 버전 1.34.x 이상을 사용하는지 확인합니다.
- GKE 클러스터에 워크로드 아이덴티티가 구성되어 있는지 확인합니다. 필요한 단계는 워크로드 ID 만들기를 참조하세요.
- 클러스터에 GKE 게이트웨이가 구성되어 작동하는지 확인합니다. 자세한 내용은 게이트웨이 배포를 참조하세요.
- Kubernetes용 Apigee Operator를 설치합니다. 설치 안내는 Kubernetes용 Apigee Operator 설치를 참고하세요.
필요한 역할
Kubernetes용 Apigee Operator 설치의 설명대로 서비스 계정에 필요한 역할을 할당한 경우 이러한 작업을 완료하는 데 필요한 추가 IAM 역할이나 권한은 없습니다.
Kubernetes에서 기본 제공되는 역할 기반 액세스 제어 (RBAC) 메커니즘을 사용하여 Google Kubernetes Engine 클러스터의 리소스에 대한 작업을 승인할 수 있습니다. 자세한 내용은 역할 기반 액세스 제어를 사용하여 클러스터의 작업 승인을 참조하세요.
ApigeeBackendService 리소스 만들기
GKE Gateway에서 트래픽 서비스 확장 프로그램을 구성하려면 다음 두 가지 기본 리소스를 만드세요.
- ApigeeBackendService: 이 커스텀 리소스는 Apigee 데이터 플레인을 정책 결정 지점 (PDP)으로 지정하고 Private Service Connect (PSC) 네트워크 엔드포인트 그룹 (NEG)의 네트워크 세부정보를 구성합니다.
- GCPTrafficExtension: 이 GKE Gateway API 리소스는 트래픽이 ApigeeBackendService로 전달되는 방식을 포함한 확장 프로그램 체인을 정의합니다.
ApigeeBackendService
만들기
ApigeeBackendService
리소스는 Apigee 데이터 영역을 GCPTrafficExtension
의 PDP로 지정합니다.
ApigeeBackendService
를 만들려면 다음 단계를 따르세요.
- 다음 콘텐츠로
apigee-backend-service.yaml
이라는 YAML 파일을 만듭니다. - ENV_NAME은 사용할 Apigee 환경입니다. 이는
APIMExtensionPolicy
의apigeeEnv
필드와 유사합니다. 이 필드는 Apigee에서는 선택사항이고 Hybrid에서는 필수입니다. - SECURITY_ENABLED (선택사항) API 키 유효성 검사 및 할당량 확인을 위한 기본 Apigee 정책이 자동으로 사용 설정되는지 여부를 지정합니다. 지정하지 않을 경우 기본값은
true
입니다. - REGION_NAME_1은 GKE 게이트웨이를 배포할 리전을 지정합니다.
- NETWORK_NAME_1 및 SUBNET_NAME_1은 PSC NEG가 생성되는 네트워크 및 서브네트워크의 전체 리소스 URI를 지정합니다. 예를 들면
projects/my-project/global/networks/my-default
및projects/my-project/regions/us-central1/subnetworks/my-default
입니다. 일반적으로 GKE 클러스터의 네트워크 및 서브네트워크와 동일합니다. - REGION_NAME_2, NETWORK_NAME_2, SUBNET_NAME_2은 선택사항입니다. 여러 리전에 Apigee 트래픽 확장 프로그램을 배포하는 경우 필요합니다.
default
네임스페이스의 클러스터에 YAML 파일을 적용합니다.kubectl apply -f apigee-backend-service.yaml
ApigeeBackendService
이 성공적으로 생성되었는지 확인합니다.kubectl get apigeebackendservice
출력은 다음과 비슷하게 표시됩니다.
NAMESPACE NAME STATE ERRORMESSAGE default default-ext-lb1-apim-policy CREATED
# apigee-backend-service.yaml kind: ApigeeBackendService apiVersion: apim.googleapis.com/v1 metadata: name: my-apigee-extension-backend-service spec: apigeeEnv: ENV_NAME # optional for Apigee, required for hybrid defaultSecurityEnabled: SECURITY_ENABLED locations: # required field - name: REGION_NAME_1 network: NETWORK_NAME_1 subnet: SUBNET_NAME_1 - name: REGION_NAME_2 network: NETWORK_NAME_2 subnet: SUBNET_NAME_2
각 항목의 의미는 다음과 같습니다.
ApigeeBackendService
를 만들면 Kubernetes용 Apigee Operator가 ApigeeBackendService
와 이름 및 네임스페이스가 동일한 APIMExtensionPolicy
를 자동으로 만듭니다.
이는 지원 APIMExtensionPolicy
입니다.
defaultSecurityEnabled
이 true
로 설정된 경우 Kubernetes용 Apigee Operator는 기본 API 키 및 할당량 정책을 APIMExtensionPolicy
에 자동으로 추가합니다. 정책을 추가하려면 GKE 게이트웨이에 정책 추가를 참고하세요.
GCPTrafficExtension
리소스 만들기
GCPTrafficExtension
리소스는 Apigee의 확장 프로그램을 정의하고 이전 단계에서 만든 ApigeeBackendService
을 backendRef
로 참조합니다.
GCPTrafficExtension
구성에 대한 자세한 내용은 서비스 확장 프로그램 구성을 참고하세요.
supportedEvents
필드는 요청 및 응답 수명 주기의 어떤 부분이 확장 프로그램에 노출되는지 지정합니다. Kubernetes용 Apigee Operator는 다음 이벤트를 지원합니다.
RequestHeaders
RequestBody
RequestTrailers
ResponseHeaders
ResponseBody
ResponseTrailers
supportedEvents
목록에 RequestBody
및 ResponseBody
을 포함해야 합니다.
지원되는 이벤트에 대한 자세한 내용은 Cloud Load Balancing 트래픽 확장 프로그램 문서를 참고하세요.
GCPTrafficExtension
를 만들려면 다음 단계를 따르세요.
- 다음 콘텐츠로
gcp-traffic-extension.yaml
이라는 YAML 파일을 만듭니다.# gcp-traffic-extension.yaml kind: GCPTrafficExtension apiVersion: networking.gke.io/v1 metadata: name: my-apigee-extension spec: targetRefs: - group: "gateway.networking.k8s.io" kind: Gateway name: GATEWAY_NAME # Replace with your GKE Gateway name extensionChains: - name: EXTENSION_CHAIN_NAME matchCondition: celExpressions: - celMatcher: request.path.startsWith("/") extensions: - name: EXTENSION_NAME metadata: # This metadata label must match the name of the ApigeeBackendService apigee-extension-processor : APIGEE_BACKEND_SERVICE_NAME failOpen: false supportedEvents: - SUPPORTED_EVENT1 - SUPPORTED_EVENT2 timeout: 1s requestBodySendMode: FullDuplexStreamed backendRef: # References the ApigeeBackendService by
kind
andname
kind: ApigeeBackendService name: APIGEE_BACKEND_SERVICE_NAME Port: 443각 항목의 의미는 다음과 같습니다.
- GATEWAY_NAME은 확장 프로그램이 적용되는 GKE 게이트웨이의 이름입니다.
- EXTENSION_CHAIN_NAME은 확장 프로그램 체인의 이름입니다.
- EXTENSION_NAME은 트래픽 서비스 확장 프로그램의 이름입니다.
- APIGEE_BACKEND_SERVICE_NAME은 이전에 만든
ApigeeBackendService
의 이름입니다.extensions
블록 내의 이 라벨은 이전에 생성된ApigeeBackendService
의metadata.name
와 일치해야 합니다. supportedEvents
필드는 요청 및 응답 수명 주기의 어떤 부분이 확장 프로그램에 노출되는지 지정합니다. Kubernetes용 Apigee Operator는 다음 이벤트를 지원합니다.RequestHeaders
RequestBody
RequestTrailers
ResponseHeaders
ResponseBody
ResponseTrailers
supportedEvents
목록에RequestBody
및ResponseBody
을 포함해야 합니다. 지원되는 이벤트에 대한 자세한 내용은 Cloud Load Balancing 트래픽 확장 프로그램 문서를 참고하세요.
- YAML 파일을 클러스터에 적용합니다.
kubectl apply -f gcp-traffic-extension.yaml