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

개요

이 단계에서는 Apigee Hybrid가 작동하는 데 필요한 Google Cloud 서비스 계정을 만들고 적절한 IAM 역할을 할당하는 방법을 설명합니다.

이 절차에서는 2단계: Apigee Helm 차트 다운로드에 정의된 두 가지 환경 변수를 사용합니다. 이러한 변수는 선택사항입니다. 아직 정의하지 않은 경우 코드 샘플에서 각 변수에 대해 적절한 디렉터리 경로를 대체합니다.

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

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

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

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

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

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

서비스 계정 인증

Apigee Hybrid는 Google 서비스 계정을 인증하는 다음 방법을 지원합니다.

  • Kubernetes 보안 비밀
  • 서비스 계정 JSON 키 파일(다음 섹션의 선택 탭에서 'JSON 파일')
  • Vault
  • GKE용 워크로드 아이덴티티 제휴(다음 섹션의 선택 탭에서 'GKE용 WIF').
  • 다른 플랫폼의 워크로드 아이덴티티 제휴(다음 섹션의 선택 탭에서 '다른 플랫폼의 WIF')

다음 섹션에서 사용할 인증 유형에 해당하는 절차를 선택합니다.

서비스 계정 만들기

Apigee Hybrid는 다음 서비스 계정을 사용합니다.

프로덕션

서비스 계정 IAM 역할 Apigee Helm 차트
apigee-cassandra 스토리지 객체 관리자 apigee-datastore
apigee-logger 로그 작성자 apigee-telemetry
apigee-mart Apigee Connect 에이전트 apigee-org
apigee-metrics 모니터링 측정항목 작성자 apigee-telemetry
apigee-mint-task-scheduler
(Apigee Hybrid용 수익 창출을 사용하는 경우에만 필요)
역할 필요 없음 apigee-org
apigee-runtime 역할 필요 없음 apigee-env
apigee-synchronizer Apigee 동기화 관리자
스토리지 객체 관리자
apigee-env
apigee-udca Apigee 애널리틱스 에이전트 apigee-org
apigee-env
apigee-watcher Apigee 런타임 에이전트 apigee-org

비프로덕션

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

create-service-account 도구

Apigee는 apigee-operator/etc/tools 디렉터리에 create-service-account 도구를 제공합니다.

$APIGEE_HELM_CHARTS_HOME/
    └── apigee-operator/
        └── etc/
            └── tools/
                └── create-service-account

이 도구는 서비스 계정을 만들고 각 계정에 IAM 역할을 할당하며 각 계정에 JSON 형식의 인증서 파일을 다운로드합니다.

create-service-account가 실행 가능한지 확인합니다. 차트를 방금 다운로드한 경우에는 create-service-account 파일이 실행 모드가 아닐 수 있습니다. APIGEE_HELM_CHARTS_HOME 디렉터리에서 다음 명령어를 실행합니다.

$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account --help

출력에 permission denied가 표시되면 Linux, MacOS, UNIX 또는 Windows Explorer에서 chmod를, Windows에서 icacls 명령어를 사용하여 파일을 실행 가능하게 만들어야 합니다. 예를 들면 다음과 같습니다.

chmod +x $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account

서비스 계정 만들기

설치에서 사용할 서비스 계정 인증 방법의 절차를 선택합니다. 자세한 내용은 Apigee Hybrid의 서비스 계정 인증 방법을 참고하세요.

Kubernetes 보안 비밀

Kubernetes 보안 비밀에 저장할 서비스 계정 키 파일을 준비하려면 create-service-account 도구를 사용하여 --dir 플래그로 키 파일의 디렉터리를 만드는 서비스 계정 키 파일을 만드세요.

프로덕션

  1. PROJECT_ID 환경 변수가 정의되었는지 확인합니다.
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 정의되지 않았으면 Google Cloud 프로젝트 ID로 정의하거나 create-service-account 명령어에 --project-id PROJECT_ID 플래그를 추가합니다.

  2. 다음 명령어를 사용하여 서비스 계정을 만듭니다. 여기서 $APIGEE_HELM_CHARTS_HOME은 Apigee Helm 차트를 다운로드한 경로입니다. 각 서비스 계정을 만들라는 메시지가 표시될 수 있습니다. y로 응답합니다.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. service-accounts 디렉터리의 내용을 확인하여 서비스 계정 파일이 생성되었는지 확인합니다. 출력은 다음과 같이 표시됩니다.
    ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
    my-project-apigee-cassandra.json            my-project-apigee-runtime.json
    my-project-apigee-logger.json               my-project-apigee-synchronizer.json
    my-project-apigee-mart.json                 my-project-apigee-udca.json
    my-project-apigee-metrics.json              my-project-apigee-watcher.json
    my-project-apigee-mint-task-scheduler.json

비프로덕션

  1. PROJECT_ID 환경 변수가 정의되었는지 확인합니다.
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 정의되지 않았으면 Google Cloud 프로젝트 ID로 정의하거나 create-service-account 명령어에 --project-id PROJECT_ID 플래그를 추가합니다.

  2. 다음 명령어를 사용하여 서비스 계정을 만듭니다. 여기서 $APIGEE_HELM_CHARTS_HOME은 Apigee Helm 차트를 다운로드한 경로입니다. 서비스 계정을 만들라는 메시지가 표시될 수 있습니다. y로 응답합니다.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. service-accounts 디렉터리의 내용을 확인하여 서비스 계정 파일이 생성되었는지 확인합니다. 출력은 다음과 같이 표시됩니다.
    ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
    my-project-apigee-non-prod.json

JSON 파일

Helm은 차트 디렉터리 외부의 파일 참조를 지원하지 않으므로 차트 디렉터리에 해당 하이브리드 구성요소의 각 서비스 계정 인증서 파일을 만듭니다.

다음 단계에서는 프로덕션 또는 비프로덕션 설치를 구성하는지 여부를 선택합니다.

프로덕션

  1. PROJECT_ID 환경 변수가 정의되었는지 확인합니다.
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 정의되지 않았으면 Google Cloud 프로젝트 ID로 정의하거나 create-service-account 명령어에 --project-id PROJECT_ID 플래그를 추가합니다.

  2. 다음 명령어를 사용하여 서비스 계정을 만듭니다. 여기서 $APIGEE_HELM_CHARTS_HOME은 Apigee Helm 차트를 다운로드한 경로입니다. 각 서비스 계정을 만들라는 메시지가 표시될 수 있습니다. y로 응답합니다.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-cassandra \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-datastore
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-logger \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-telemetry
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-mart \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-org
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-metrics \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-telemetry
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-runtime \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-env
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-synchronizer \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-env
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-udca \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-env
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-udca \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-org
    
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-watcher \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-org

    Apigee Hybrid 수익 창출(Apigee Hybrid v1.15.1 이상)을 사용 설정하는 경우:

    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --profile apigee-mint-task-scheduler \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-org
    
  3. apigee-udca JSON 파일을 apigee-env 차트 디렉터리에 복사합니다. 조직 범위 및 환경 범위 작업에 모두 필요합니다.
    cp $APIGEE_HELM_CHARTS_HOME/apigee-org/$PROJECT_ID-apigee-udca.json $APIGEE_HELM_CHARTS_HOME/apigee-env/
  4. 각 차트 디렉터리의 내용을 확인하여 서비스 계정 파일이 올바른 디렉터리에 생성되었는지 확인합니다. 출력은 다음과 같이 표시됩니다.
    ls ./apigee-datastore
    Chart.yaml  my-project-apigee-cassandra.json  templates  values.yaml
    
    ls ./apigee-telemetry
    Chart.yaml                     my-project-apigee-metrics.json  values.yaml
    my-project-apigee-logger.json  templates
    
    ls ./apigee-org
    Chart.yaml                                  my-project-apigee-udca.json
    my-project-apigee-mart.json                 my-project-apigee-watcher.json
    my-project-apigee-mint-task-scheduler.json  values.yaml
    
    ls ./apigee-env
    Chart.yaml                      my-project-apigee-synchronizer.json  templates
    my-project-apigee-runtime.json  my-project-apigee-udca.json          values.yaml
    

비프로덕션

  1. PROJECT_ID 환경 변수가 정의되었는지 확인합니다.
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 정의되지 않았으면 Google Cloud 프로젝트 ID로 정의하거나 create-service-account 명령어에 --project-id PROJECT_ID 플래그를 추가합니다.

  2. 다음 명령어를 사용하여 서비스 계정을 만듭니다. 여기서 $APIGEE_HELM_CHARTS_HOME은 Apigee Helm 차트를 다운로드한 경로입니다. 각 서비스 계정을 만들라는 메시지가 표시될 수 있습니다. y로 응답합니다.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/apigee-datastore
  3. apigee-datastore 디렉터리에 생성된 서비스 계정 파일의 이름을 확인합니다.
    ls $APIGEE_HELM_CHARTS_HOME/apigee-datastore
    Chart.yaml  PROJECT_ID-apigee-non-prod.json  templates  values.yaml
  4. 서비스 계정 파일을 해당 파일을 참조해야 하는 다른 차트 디렉터리에 복사합니다.
    cp $APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME $APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
    cp $APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME $APIGEE_HELM_CHARTS_HOME/apigee-org/
    cp $APIGEE_HELM_CHARTS_HOME/apigee-datastore/SA_FILE_NAME $APIGEE_HELM_CHARTS_HOME/apigee-env/

Vault

Vault에 저장할 서비스 계정 키 파일을 준비하려면 create-service-account 도구를 사용하여 --dir 플래그로 키 파일 디렉터리를 만들어 서비스 계정 키 파일을 만드세요.

프로덕션

  1. PROJECT_ID 환경 변수가 정의되었는지 확인합니다.
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 정의되지 않았으면 Google Cloud 프로젝트 ID로 정의하거나 create-service-account 명령어에 --project-id PROJECT_ID 플래그를 추가합니다.

  2. 다음 명령어를 사용하여 서비스 계정을 만듭니다. 여기서 $APIGEE_HELM_CHARTS_HOME은 Apigee Helm 차트를 다운로드한 경로입니다. 각 서비스 계정을 만들라는 메시지가 표시될 수 있습니다. y로 응답합니다.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. service-accounts 디렉터리의 내용을 확인하여 서비스 계정 파일이 생성되었는지 확인합니다. 출력은 다음과 같이 표시됩니다.
    ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
    my-project-apigee-cassandra.json            my-project-apigee-runtime.json
    my-project-apigee-logger.json               my-project-apigee-synchronizer.json
    my-project-apigee-mart.json                 my-project-apigee-udca.json
    my-project-apigee-metrics.json              my-project-apigee-watcher.json
    my-project-apigee-mint-task-scheduler.json
    

비프로덕션

  1. PROJECT_ID 환경 변수가 정의되었는지 확인합니다.
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 정의되지 않았으면 Google Cloud 프로젝트 ID로 정의하거나 create-service-account 명령어에 --project-id PROJECT_ID 플래그를 추가합니다.

  2. 다음 명령어를 사용하여 서비스 계정을 만듭니다. 여기서 $APIGEE_HELM_CHARTS_HOME은 Apigee Helm 차트를 다운로드한 경로입니다. 서비스 계정을 만들라는 메시지가 표시될 수 있습니다. y로 응답합니다.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. service-accounts 디렉터리의 내용을 확인하여 서비스 계정 파일이 생성되었는지 확인합니다. 출력은 다음과 같이 표시됩니다.
    ls $APIGEE_HELM_CHARTS_HOME/service-accounts/
    my-project-apigee-non-prod.json

GKE용 WIF

다음 명령어를 사용하여 설치를 위한 서비스 계정을 만듭니다.

프로덕션

  1. PROJECT_ID 환경 변수가 정의되었는지 확인합니다.
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 정의되지 않았으면 Google Cloud 프로젝트 ID로 정의하거나 create-service-account 명령어에 --project-id PROJECT_ID 플래그를 추가합니다.

  2. 다음 명령어를 사용하여 서비스 계정을 만듭니다. 여기서 $APIGEE_HELM_CHARTS_HOME은 Apigee Helm 차트를 다운로드한 경로입니다. 각 서비스 계정을 만들라는 메시지가 표시될 수 있습니다. y로 응답합니다.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. 다음 명령어를 사용하여 Google 서비스 계정 생성을 확인합니다.
    gcloud iam service-accounts list --project $PROJECT_ID

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

    DISPLAY NAME                EMAIL                                                          DISABLED
    apigee-cassandra            apigee-cassandra@my-project.iam.gserviceaccount.com            False
    apigee-mart                 apigee-mart@my-project.iam.gserviceaccount.com                 False
    apigee-metrics              apigee-metrics@my-project.iam.gserviceaccount.com              False
    apigee-mint-task-scheduler  apigee-mint-task-scheduler@my-project.iam.gserviceaccount.com  False
    apigee-runtime              apigee-runtime@my-project.iam.gserviceaccount.com              False
    apigee-synchronizer         apigee-synchronizer@my-project.iam.gserviceaccount.com         False
    apigee-udca                 apigee-udca@my-project.iam.gserviceaccount.com                 False
    apigee-watcher              apigee-watcher@my-project.iam.gserviceaccount.com              False
    

비프로덕션

  1. PROJECT_ID 환경 변수가 정의되었는지 확인합니다.
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 정의되지 않았으면 Google Cloud 프로젝트 ID로 정의하거나 create-service-account 명령어에 --project-id PROJECT_ID 플래그를 추가합니다.

  2. 다음 명령어를 사용하여 서비스 계정을 만듭니다. 여기서 $APIGEE_HELM_CHARTS_HOME은 Apigee Helm 차트를 다운로드한 경로입니다. 서비스 계정을 만들라는 메시지가 표시될 수 있습니다. y로 응답합니다.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. 다음 명령어를 사용하여 Google 서비스 계정 생성을 확인합니다.
    gcloud iam service-accounts list --project $PROJECT_ID

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

    DISPLAY NAME         EMAIL                                                   DISABLED
    apigee-non-prod      apigee-non-prod@my-project.iam.gserviceaccount.com      False
    

선택사항: GKE용 워크로드 아이덴티티 제휴에는 서비스 계정 키 파일이 필요하지 않습니다. 작업이 완료되면 service-accounts 디렉터리를 삭제해도 됩니다.

기타 플랫폼의 WIF

다음 명령어를 사용하여 설치를 위한 서비스 계정을 만듭니다.

프로덕션

  1. PROJECT_ID 환경 변수가 정의되었는지 확인합니다.
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 정의되지 않았으면 Google Cloud 프로젝트 ID로 정의하거나 create-service-account 명령어에 --project-id PROJECT_ID 플래그를 추가합니다.

  2. 다음 명령어를 사용하여 서비스 계정을 만듭니다. 여기서 $APIGEE_HELM_CHARTS_HOME은 Apigee Helm 차트를 다운로드한 경로입니다. 각 서비스 계정을 만들라는 메시지가 표시될 수 있습니다. y로 응답합니다.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. 다음 명령어를 사용하여 Google 서비스 계정 생성을 확인합니다.
    gcloud iam service-accounts list --project $PROJECT_ID

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

    DISPLAY NAME                EMAIL                                                          DISABLED
    apigee-cassandra            apigee-cassandra@my-project.iam.gserviceaccount.com            False
    apigee-mart                 apigee-mart@my-project.iam.gserviceaccount.com                 False
    apigee-metrics              apigee-metrics@my-project.iam.gserviceaccount.com              False
    apigee-mint-task-scheduler  apigee-mint-task-scheduler@my-project.iam.gserviceaccount.com  False
    apigee-runtime              apigee-runtime@my-project.iam.gserviceaccount.com              False
    apigee-synchronizer         apigee-synchronizer@my-project.iam.gserviceaccount.com         False
    apigee-udca                 apigee-udca@my-project.iam.gserviceaccount.com                 False
    apigee-watcher              apigee-watcher@my-project.iam.gserviceaccount.com              False
    

비프로덕션

  1. PROJECT_ID 환경 변수가 정의되었는지 확인합니다.
    echo $PROJECT_ID

    create-service-account tool uses the value of thePROJECT_ID environment variable 정의되지 않았으면 Google Cloud 프로젝트 ID로 정의하거나 create-service-account 명령어에 --project-id PROJECT_ID 플래그를 추가합니다.

  2. 다음 명령어를 사용하여 서비스 계정을 만듭니다. 여기서 $APIGEE_HELM_CHARTS_HOME은 Apigee Helm 차트를 다운로드한 경로입니다. 서비스 계정을 만들라는 메시지가 표시될 수 있습니다. y로 응답합니다.
    $APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account \
      --env non-prod \
      --dir $APIGEE_HELM_CHARTS_HOME/service-accounts
  3. 다음 명령어를 사용하여 Google 서비스 계정 생성을 확인합니다.
    gcloud iam service-accounts list --project $PROJECT_ID

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

    DISPLAY NAME         EMAIL                                                   DISABLED
    apigee-non-prod      apigee-non-prod@my-project.iam.gserviceaccount.com      False
    

선택사항: GKE용 워크로드 아이덴티티 제휴에는 서비스 계정 키 파일이 필요하지 않습니다. 작업이 완료되면 service-accounts 디렉터리를 삭제해도 됩니다.

서비스 계정 및 create-service-account 도구에 대한 자세한 내용은 다음을 참조하세요.

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

다음 단계

1 2 3 4 (다음) 5단계: 서비스 계정 인증 설정 6 7 8 9 10 11