4단계: 서비스 계정 만들기

이 단계에서는 Apigee Hybrid가 작동하는 데 필요한 Google Cloud 서비스 계정을 만드는 방법을 설명합니다.

개요

Apigee Hybrid는 Google Cloud 서비스 계정을 사용하여 승인된 API 호출을 만들어 하이브리드 구성요소가 통신할 수 있도록 합니다.

프로덕션 환경 및 비프로덕션 환경 비교

이 가이드에서는 프로덕션('프로덕션') 및 비프로덕션('비프로덕션') 설치를 참조합니다. 프로덕션 설치는 사용 용량, 스토리지, 확장성을 높이도록 조정됩니다. 비프로덕션 설치는 리소스를 적게 사용하며 주로 학습 및 데모용으로 사용됩니다.

Apigee Hybrid용 서비스 계정을 만들고 구성할 때 타겟팅하는 설치 유형을 알고 있어야 합니다.

프로덕션 설치의 경우 Apigee Hybrid 구성요소마다 별도의 서비스 계정을 만드는 것이 좋습니다. 예를 들어 runtime, mart, metrics, udca 등에 각각 자체 서비스 계정을 가져옵니다.

비프로덕션 설치의 경우 모든 구성요소에 적용되는 단일 서비스 계정을 만들 수 있습니다.

Apigee에서 사용하는 서비스 계정과 할당된 역할에 대한 자세한 내용은 Hybrid 구성요소에서 사용하는 서비스 계정 및 역할을 참조하세요.

GKE의 워크로드 아이덴티티

GKE 기반의 Apigee Hybrid 설치에서는 Google Cloud가 Hybrid 런타임 구성요소를 인증하기 위해 워크로드 아이덴티티라는 옵션을 제공합니다. 이 옵션은 서비스 계정을 인증하기 위해 다운로드한 인증서 파일을 사용하지 않고, 대신 이 단계에서 만드는 Google Cloud 서비스 계정을 Kubernetes 클러스터의 Kubernetes 서비스 계정과 연결합니다.

워크로드 아이덴티티는 GKE 설치에서만 사용할 수 있습니다.

서비스 계정 만들기

다음 절차에 따라 Hybrid 설치에 필요한 Google Cloud 서비스 계정을 만듭니다.

  • create-service-account 도구: GKE 이외의 플랫폼에 Apigee Hybrid를 설치하거나 GKE에 설치하지만 워크로드 아이덴티티를 사용하지 않으려면 Apigee에서 제공하는 도구인 create-service-account를 사용해 단일 명령어로 서비스 계정을 만들고, 서비스 계정에 역할을 할당하고, 서비스 계정의 키 파일을 만들고 다운로드합니다.
    create-service-account를 사용하여 서비스 계정 만들기의 절차를 따릅니다.
  • Google Cloud 콘솔 또는 gcloud: GKE에 Apigee Hybrid를 설치하고 워크로드 아이덴티티를 사용하려는 경우 Google Cloud 콘솔 또는 gcloud를 사용하여 인증서 파일을 다운로드하지 않고 서비스 계정을 만듭니다.
    Google Cloud 콘솔 또는 gcloud로 서비스 계정 만들기의 절차를 따릅니다.

create-service-account를 사용하여 서비스 계정 만들기

다음과 같은 경우에는 create-service-account 도구를 사용합니다.

  • GKE 이외의 플랫폼에 설치 중입니다.
  • GKE에 설치하지만 워크로드 아이덴티티를 사용할 계획이 없습니다.

그렇지 않은 경우 Google Cloud 콘솔 또는 gcloud로 서비스 계정 만들기로 건너뜁니다.

  1. HYBRID_FILESPROJECT_ID 환경 변수가 설정되어 있어야 합니다.

    create-service-account 도구가 PROJECT_ID 환경 변수를 읽어 올바른 프로젝트의 서비스 계정을 만들기 때문에 PROJECT_ID가 Google Cloud 프로젝트 ID로 설정되어야 합니다.

    echo $HYBRID_FILES
    echo $PROJECT_ID
  2. 다음 명령어를 사용하여 서비스 계정을 만듭니다.

    비프로덕션

    이 명령어는 비프로덕션 설치에 사용할 apigee-non-prod라는 단일 서비스 계정을 만들고 $HYBRID_FILES/service-accounts 디렉터리에 서비스 계정의 키 파일을 다운로드합니다.

    $HYBRID_FILES/tools/create-service-account --env non-prod --dir $HYBRID_FILES/service-accounts

    프로덕션

    이 명령어는 프로덕션 설치를 위한 모든 개별 서비스 계정을 만들고 $HYBRID_FILES/service-accounts 디렉터리에 서비스 계정의 키 파일을 다운로드합니다.

    $HYBRID_FILES/tools/create-service-account --env prod --dir $HYBRID_FILES/service-accounts

    다음 프롬프트가 표시되면 y를 입력합니다.

    [INFO]: gcloud configured project ID is project_id.
     Enter: y to proceed with creating service account in project: project_id
     Enter: n to abort.
    

    특정 서비스 계정을 처음 만드는 경우 도구에서 추가 메시지 없이 계정을 만듭니다.

    하지만 다음 메시지 및 프롬프트가 표시되면 y를 입력하여 새 키를 생성합니다.

    [INFO]: Service account apigee-non-prod@project_id.iam.gserviceaccount.com already exists.
    ...
     [INFO]: The service account might have keys associated with it. It is recommended to use existing keys.
     Press: y to generate new keys.(this does not deactivate existing keys)
     Press: n to skip generating new keys.
    
  3. 다음 명령어를 사용하여 서비스 계정 키가 생성되었는지 확인합니다. 이러한 비공개 키를 안전하게 보관할 책임은 사용자에게 있습니다. 키 파일 이름에는 Google Cloud 프로젝트 이름이 프리픽스로 추가됩니다.
    ls $HYBRID_FILES/service-accounts

    다음과 같은 결과가 표시됩니다.

    project_id-apigee-non-prod.json

Google Cloud 콘솔 또는 gcloud로 서비스 계정 만들기

GKE에서 워크로드 아이덴티티를 사용하여 Hybrid 런타임 구성요소를 인증하려는 경우 서비스 계정의 인증서 파일을 만들고 다운로드할 필요가 없습니다. 따라서 create-service-account 도구는 사용하지 마세요. 대신 Google Cloud 콘솔이나 gcloud에서 IAM API를 사용하여 서비스 계정을 만듭니다.

그렇지 않은 경우 create-service-account를 사용하여 서비스 계정 만들기로 건너뜁니다.

콘솔

서비스 계정 만들기의 안내에 따라 다음 서비스 계정을 만들고 다음 역할을 할당합니다.

비프로덕션

비프로덕션 설치:

서비스 계정 이름 IAM 역할
apigee-non-prod
  • Apigee 애널리틱스 에이전트
  • Apigee Connect 에이전트
  • Apigee 런타임 에이전트
  • Apigee 동기화 관리자
  • 로그 작성자
  • 모니터링 측정항목 작성자
  • 스토리지 객체 관리자

프로덕션

프로덕션 설치:

프로덕션 설치
서비스 계정 이름 IAM 역할
apigee-cassandra 스토리지 객체 관리자
apigee-logger 로그 작성자
apigee-mart Apigee Connect 에이전트
apigee-metrics 모니터링 측정항목 작성자
apigee-runtime 역할 필요 없음
apigee-synchronizer Apigee 동기화 관리자
apigee-udca Apigee 애널리틱스 에이전트
apigee-watcher Apigee 런타임 에이전트

gcloud

다음 명령어를 사용하여 서비스 계정을 만들고 IAM 역할을 할당합니다.

비프로덕션

비프로덕션 설치:

  1. apigee-non-prod 서비스 계정을 만듭니다.
    gcloud iam service-accounts create apigee-non-prod \
      --display-name="apigee-non-prod" \
      --project=$PROJECT_ID
  2. 서비스 계정에 IAM 역할을 할당합니다.
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/storage.objectAdmin"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/logging.logWriter"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigeeconnect.Agent"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/monitoring.metricWriter"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.synchronizerManager"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.analyticsAgent"
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.runtimeAgent"
  3. 역할 바인딩을 확인합니다.
    gcloud projects get-iam-policy ${PROJECT_ID} \
      --flatten="bindings[].members" \
      --format='table(bindings.role)' \
      --filter="bindings.members:apigee-non-prod@$PROJECT_ID.iam.gserviceaccount.com"

프로덕션

프로덕션 설치:

다음 명령어를 사용하여 각 서비스 계정을 만들고 해당 IAM 역할을 할당합니다.

  1. apigee-cassandra 서비스 계정:
    gcloud iam service-accounts create apigee-cassandra \
      --display-name="apigee-cassandra" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-cassandra@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/storage.objectAdmin"
  2. apigee-logger 서비스 계정:
    gcloud iam service-accounts create apigee-logger \
      --display-name="apigee-logger" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-logger@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/logging.logWriter"
  3. apigee-mart 서비스 계정:
    gcloud iam service-accounts create apigee-mart \
      --display-name="apigee-mart" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-mart@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigeeconnect.Agent"
  4. apigee-metrics 서비스 계정:
    gcloud iam service-accounts create apigee-metrics \
      --display-name="apigee-metrics" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-metrics@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/monitoring.metricWriter"
  5. apigee-runtime 서비스 계정:
    gcloud iam service-accounts create apigee-runtime \
      --display-name="apigee-runtime" \
      --project=$PROJECT_ID
  6. apigee-synchronizer 서비스 계정:
    gcloud iam service-accounts create apigee-synchronizer \
      --display-name="apigee-synchronizer" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-synchronizer@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.synchronizerManager"
  7. apigee-udca 서비스 계정:
    gcloud iam service-accounts create apigee-udca \
      --display-name="apigee-udca" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-udca@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.analyticsAgent"
  8. apigee-watcher 서비스 계정:
    gcloud iam service-accounts create apigee-watcher \
      --display-name="apigee-watcher" \
      --project=$PROJECT_ID
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:apigee-watcher@$PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/apigee.runtimeAgent"

gcloud로 서비스 계정을 만드는 방법에 대한 자세한 내용은 서비스 계정 만들기를 참조하세요.

이제 서비스 계정을 만들고 Apigee Hybrid 구성요소에 필요한 역할을 할당했습니다. 다음으로 하이브리드 인그레스 게이트웨이에서 필요한 TLS 인증서를 만듭니다.

다음 단계

1 2 3 4 (다음) 5단계: TLS 인증서 만들기 6 7 8 9 10 11