ApigeeBackendService 만들기

이 페이지는 ApigeeApigee 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를 만들려면 다음 단계를 따르세요.

  1. 다음 콘텐츠로 apigee-backend-service.yaml이라는 YAML 파일을 만듭니다.
  2. # 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

    각 항목의 의미는 다음과 같습니다.

    • ENV_NAME은 사용할 Apigee 환경입니다. 이는 APIMExtensionPolicyapigeeEnv 필드와 유사합니다. 이 필드는 Apigee에서는 선택사항이고 Hybrid에서는 필수입니다.
    • SECURITY_ENABLED (선택사항) API 키 유효성 검사 및 할당량 확인을 위한 기본 Apigee 정책이 자동으로 사용 설정되는지 여부를 지정합니다. 지정하지 않을 경우 기본값은 true입니다.
    • REGION_NAME_1은 GKE 게이트웨이를 배포할 리전을 지정합니다.
    • NETWORK_NAME_1SUBNET_NAME_1은 PSC NEG가 생성되는 네트워크 및 서브네트워크의 전체 리소스 URI를 지정합니다. 예를 들면 projects/my-project/global/networks/my-defaultprojects/my-project/regions/us-central1/subnetworks/my-default입니다. 일반적으로 GKE 클러스터의 네트워크 및 서브네트워크와 동일합니다.
    • REGION_NAME_2, NETWORK_NAME_2, SUBNET_NAME_2은 선택사항입니다. 여러 리전에 Apigee 트래픽 확장 프로그램을 배포하는 경우 필요합니다.

  3. default 네임스페이스의 클러스터에 YAML 파일을 적용합니다.
    kubectl apply -f apigee-backend-service.yaml
  4. ApigeeBackendService이 성공적으로 생성되었는지 확인합니다.
    kubectl get apigeebackendservice

    출력은 다음과 비슷하게 표시됩니다.

    NAMESPACE   NAME                          STATE     ERRORMESSAGE
    default     default-ext-lb1-apim-policy   CREATED   

ApigeeBackendService를 만들면 Kubernetes용 Apigee Operator가 ApigeeBackendService와 이름 및 네임스페이스가 동일한 APIMExtensionPolicy를 자동으로 만듭니다. 이는 지원 APIMExtensionPolicy입니다.

defaultSecurityEnabledtrue로 설정된 경우 Kubernetes용 Apigee Operator는 기본 API 키 및 할당량 정책을 APIMExtensionPolicy에 자동으로 추가합니다. 정책을 추가하려면 GKE 게이트웨이에 정책 추가를 참고하세요.

GCPTrafficExtension 리소스 만들기

GCPTrafficExtension 리소스는 Apigee의 확장 프로그램을 정의하고 이전 단계에서 만든 ApigeeBackendServicebackendRef로 참조합니다. GCPTrafficExtension 구성에 대한 자세한 내용은 서비스 확장 프로그램 구성을 참고하세요.

supportedEvents 필드는 요청 및 응답 수명 주기의 어떤 부분이 확장 프로그램에 노출되는지 지정합니다. Kubernetes용 Apigee Operator는 다음 이벤트를 지원합니다.

  • RequestHeaders
  • RequestBody
  • RequestTrailers
  • ResponseHeaders
  • ResponseBody
  • ResponseTrailers
요청 또는 응답 본문을 검사하거나 수정해야 하는 정책 (예: JSONThreatProtection)을 사용하는 경우 supportedEvents 목록에 RequestBodyResponseBody을 포함해야 합니다. 지원되는 이벤트에 대한 자세한 내용은 Cloud Load Balancing 트래픽 확장 프로그램 문서를 참고하세요.

GCPTrafficExtension를 만들려면 다음 단계를 따르세요.

  1. 다음 콘텐츠로 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 and name
            kind: ApigeeBackendService
            name: APIGEE_BACKEND_SERVICE_NAME
            Port: 443

    각 항목의 의미는 다음과 같습니다.

    • GATEWAY_NAME은 확장 프로그램이 적용되는 GKE 게이트웨이의 이름입니다.
    • EXTENSION_CHAIN_NAME은 확장 프로그램 체인의 이름입니다.
    • EXTENSION_NAME은 트래픽 서비스 확장 프로그램의 이름입니다.
    • APIGEE_BACKEND_SERVICE_NAME은 이전에 만든 ApigeeBackendService의 이름입니다. extensions 블록 내의 이 라벨은 이전에 생성된 ApigeeBackendServicemetadata.name일치해야 합니다.
    • supportedEvents 필드는 요청 및 응답 수명 주기의 어떤 부분이 확장 프로그램에 노출되는지 지정합니다. Kubernetes용 Apigee Operator는 다음 이벤트를 지원합니다.
      • RequestHeaders
      • RequestBody
      • RequestTrailers
      • ResponseHeaders
      • ResponseBody
      • ResponseTrailers
      요청 또는 응답 본문을 검사하거나 수정해야 하는 정책 (예: JSONThreatProtection)을 사용하는 경우 supportedEvents 목록에 RequestBodyResponseBody을 포함해야 합니다. 지원되는 이벤트에 대한 자세한 내용은 Cloud Load Balancing 트래픽 확장 프로그램 문서를 참고하세요.
  2. YAML 파일을 클러스터에 적용합니다.
    kubectl apply -f gcp-traffic-extension.yaml

다음 단계