동기화 담당자 구성

이 섹션에서는 동기화 담당자를 설명합니다.

동기화 담당자 개요

Apigee Hybrid에서 동기화 담당자의 기본 작업은 관리 영역에서 제공하는 런타임 계약을 폴링하고 다운로드하는 것입니다. 계약으로 전달되는 정보에는 API 프록시, API 제품, 캐시, 가상 호스트가 포함됩니다. 동기화 담당자는 기본적으로 Cassandra 데이터베이스에 환경 구성 데이터를 저장합니다.

런타임 영역에서 실행되는 동기화 담당자 인스턴스는 정기적으로 관리 영역을 폴링하고, 계약을 다운로드하고, 로컬 런타임 인스턴스에 동일하게 제공해야 합니다.

하나의 동기화 담당자가 동일한 pod에 배포된 여러 메시지 프로세서를 지원할 수 있습니다.

동기화 담당자 액세스 사용 설정

프록시 번들 및 관리 영역의 리소스와 같은 Apigee 아티팩트를 풀다운할 수 있도록 동기화 담당자 권한을 부여해야 합니다. Apigee API를 호출하여 동기화 담당자가 관리 영역에서 런타임 영역으로 아티팩트를 가져오도록 승인해야 합니다.

  1. Google Cloud 설정 단계의 설명대로 Apigee API를 사용 설정했는지 확인합니다. 자세한 내용은 API 사용 설정을 참고하세요.
  2. 서비스 계정 및 사용자 인증 정보 만들기의 일부로 다운로드한 쓰기 사용 설정된 Google Cloud 서비스 계정 키(JSON 파일)를 찾습니다. 서비스 계정에는 Apigee 조직 관리자 역할이 있으며 이름은 'apigee-org-admin'입니다. 이전에 이 서비스 계정을 만들지 않은 경우 계속하기 전에 계정을 만들어야 합니다.
  3. Apigee 조직 관리자 서비스 계정 키를 사용하여 OAuth 2.0 액세스 토큰을 생성합니다. Apigee API를 인증하려면 이 토큰이 필요합니다.

    gcloud를 사용하여 OAuth 2.0 액세스 토큰을 가져오고 GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 사용하여 다운로드한 서비스 계정 사용자 인증 정보 JSON 파일을 전달합니다.

    export GOOGLE_APPLICATION_CREDENTIALS=your_sa_credentials_file.json
    gcloud auth application-default print-access-token

    OAuth2.0 토큰이 반환됩니다.

    자세한 내용은 gcloud beta auth application-default print-access-token을 참조하세요.

  4. 반환된 OAuth 2.0 토큰을 복사하여 TOKEN과 같은 변수에 저장합니다. 예를 들면 다음과 같습니다.
    export TOKEN=ya29....Ts13inj3LrqMJlztwygtM
  5. setSyncAuthorization API를 호출하여 동기화 담당자에 필요한 권한을 사용 설정합니다.

    데이터 상주 없음

    curl -X POST -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/YOUR_ORG_NAME:setSyncAuthorization" \
       -d '{"identities":["serviceAccount:SYNCHRONIZER_MANAGER_SERVICE_ACCOUNT_NAME"]}'
    

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

    • YOUR_ORG_NAME: 하이브리드 조직의 이름입니다.
    • SYNCHRONIZER_MANAGER_SERVICE_ACCOUNT_NAME: Apigee 동기화 담당자 관리자 역할이 있는 서비스 계정의 이름입니다. 이름은 이메일 주소 형식과 같습니다. 예를 들면 my-synchronizer-manager-service_account@my_project_id.iam.gserviceaccount.com입니다.

    예를 들면 다음과 같습니다.

    curl -X POST -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/my_org:setSyncAuthorization" \
       -d '{"identities":["serviceAccount:my-synchronizer-manager-service_account@my_project_id.iam.gserviceaccount.com"]}'
    

    데이터 상주

    curl -X POST -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/YOUR_ORG_NAME:setSyncAuthorization" \
       -d '{"identities":["serviceAccount:SYNCHRONIZER_MANAGER_SERVICE_ACCOUNT_NAME"]}'
    

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

    • YOUR_ORG_NAME: 하이브리드 조직의 이름입니다.
    • CONTROL_PLANE_LOCATION: 하이브리드 설치에서 데이터 상주를 사용하는 경우 컨트롤 플레인 데이터의 위치입니다. 프록시 번들과 같은 고객 핵심 콘텐츠가 저장되는 위치입니다. 목록은 사용 가능한 Apigee API 컨트롤 플레인 리전을 참조하세요.
    • SYNCHRONIZER_MANAGER_SERVICE_ACCOUNT_NAME: Apigee 동기화 담당자 관리자 역할이 있는 서비스 계정의 이름입니다. 이름은 이메일 주소 형식과 같습니다. 예를 들면 my-synchronizer-manager-service_account@my_project_id.iam.gserviceaccount.com입니다.

    예를 들면 다음과 같습니다.

    curl -X POST -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://us-apigee.googleapis.com/v1/organizations/my_org:setSyncAuthorization" \
       -d '{"identities":["serviceAccount:my-synchronizer-manager-service_account@my_project_id.iam.gserviceaccount.com"]}'
    

    이 API에 대한 자세한 내용은 setSyncAuthorization API를 참조하세요.

  6. 서비스 계정이 설정되었는지 확인하려면 다음 API를 호출하여 서비스 계정 목록을 가져옵니다.

    데이터 상주 없음

    curl -X POST -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/your_org_name:getSyncAuthorization" \
       -d ''

    데이터 상주

    curl -X POST -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/your_org_name:getSyncAuthorization" \
       -d ''

    출력은 다음과 유사합니다.

    {
       "identities":[
          "serviceAccount:my-synchronizer-manager-service_account@my_project_id.iam.gserviceaccount.com"
       ],
       "etag":"BwWJgyS8I4w="
    }