이 가이드에서는 App Lifecycle Manager 테넌트를 사용하여 배포된 단위를 구성하고 리소스를 격리하고 관리하기 위해 리소스를 별도의 테넌트 프로젝트 에 배포하는 방법을 설명합니다.
테넌트 및 테넌트 프로젝트의 개요는 테넌트 및 테넌트 프로젝트를 참조하세요.
시작하기 전에
테넌트 프로젝트 또는 리소스를 만들기 전에 다음을 수행합니다.
- 프로듀서 프로젝트에서 Terraform 구성 및 Artifact Registry 저장소를 만들고 SaaS 애플리케이션이 포함된 아티팩트를 만듭니다. App Lifecycle Manager로 서비스 인스턴스 배포를 참조하여 앱 제공을 설정하는 방법을 알아보세요.
App Lifecycle Manager에 필요한 API를 사용 설정합니다.
API 사용 설정에 필요한 역할
API를 사용 설정하려면
serviceusage.services.enable권한이 필요합니다. 프로젝트를 만든 경우 소유자 역할 (roles/owner)을 통해 이 권한이 이미 있을 가능성이 높습니다. 그렇지 않은 경우 서비스 사용량 관리자 역할 (roles/serviceusage.serviceUsageAdmin)을 통해 이 권한을 가져올 수 있습니다. 역할을 부여하는 방법을 알아보세요.프로듀서 프로젝트 내에서 필요한 서비스 계정 및 Identity and Access Management 역할이 부여되었는지 확인합니다. 여기에는 사용자 생성 서비스 계정 및 프로듀서 프로젝트의
service-PROJECT-NUMBER@gcp-sa-saasservicemgmt.iam.gserviceaccount.com계정에 부여된 권한이 포함됩니다.
테넌트 프로젝트 설정
테넌트의 리소스를 별도의 프로젝트에 프로비저닝하면 각 테넌트에 대해 리소스, IAM 정책, 할당량, 네트워크 구성이 분리되므로 한 테넌트의 침해 또는 잘못된 구성이 다른 테넌트에 영향을 미칠 가능성이 줄어듭니다.
준비사항:
- 프로듀서 프로젝트 1개
테넌트마다 테넌트 프로젝트 1개
콘솔
Google Cloud 콘솔을 사용하여 테넌트 및 프로듀서 프로젝트를 설정하려면 다음 안내를 따르세요.
- 프로듀서 프로젝트와 각 테넌트의 테넌트 프로젝트를 만듭니다.
- 테넌트 및 프로듀서 프로젝트에서 결제를 사용 설정합니다.
테넌트 프로젝트에서 App Lifecycle Manager에 필요한 API를 사용 설정합니다.
API 사용 설정에 필요한 역할
API를 사용 설정하려면
serviceusage.services.enable권한이 필요합니다. 프로젝트를 만든 경우 소유자 역할 (roles/owner)을 통해 이 권한이 이미 있을 가능성이 높습니다. 그렇지 않은 경우 서비스 사용량 관리자 역할 (roles/serviceusage.serviceUsageAdmin)을 통해 이 권한을 가져올 수 있습니다. 역할을 부여하는 방법을 알아보세요.테넌트 프로젝트에 필요한 권한이 있는 작동 서비스 계정이 있는지 확인합니다.
자세한 내용은 App Lifecycle Manager 서비스 계정을 참조하세요.
테넌트 및 프로듀서 프로젝트를 설정했습니다. 프로듀서 및 테넌트 프로젝트의 결제를 만들고 사용 설정하면 테넌트 리소스를 만들고 단위를 테넌트와 연결할 수 있습니다.
gcloud
Google Cloud CLI를 사용하여 프로듀서 및 테넌트 프로젝트를 설정하려면 다음 안내를 따르세요.
프로듀서 프로젝트와 각 테넌트의 테넌트 프로젝트를 만듭니다.
gcloud projects create PRODUCER_PROJECT_ID --name="SaaS producer project" [--folder=folder-id] gcloud projects create TENANT_PROJECT_ID --name="SaaS tenant A project" [--folder=folder-id]다음을 바꿉니다.
PRODUCER_PROJECT_ID: 프로듀서 프로젝트 ID를 나타내는 문자열 식별자입니다.TENANT_PROJECT_ID: 테넌트 프로젝트 ID를 나타내는 문자열 식별자입니다.
테넌트 및 프로듀서 프로젝트에서 결제를 사용 설정합니다.
gcloud beta billing projects link PRODUCER_PROJECT_ID --billing-account=BILLING_ACCOUNT_ID gcloud beta billing projects link TENANT_PROJECT_ID --billing-account=BILLING_ACCOUNT_ID다음을 바꿉니다.
PRODUCER_PROJECT_ID: 프로듀서 프로젝트 ID를 나타내는 문자열 식별자입니다.TENANT_PROJECT_ID: 테넌트 프로젝트 ID를 나타내는 문자열 식별자입니다.BILLING_ACCOUNT_ID: 지정된 프로젝트와 연결할 결제 계정의 ID입니다.
각 테넌트 프로젝트에 필요한 Identity and Access Management 역할을 작동 서비스 계정에 부여합니다.
gcloud projects add-iam-policy-binding TENANT_PROJECT_ID \ --member='serviceAccount:SERVICE_ACCOUNT@PRODUCER_PROJECT_ID.iam.gserviceaccount.com' \ --role=ROLE다음을 바꿉니다.
TENANT_PROJECT_ID: 테넌트 프로젝트 ID를 나타내는 문자열 식별자입니다.PRODUCER_PROJECT_ID: 프로듀서 프로젝트 ID를 나타내는 문자열 식별자입니다.SERVICE_ACCOUNT: 지정된 프로젝트 내에서 역할을 부여할 서비스 계정입니다.ROLE: 부여할 Identity and Access Management 역할입니다.지정된 서비스 계정에 부여할 각 역할에 대해
gcloud projects add-iam-policy-binding을 실행해야 합니다 (--role='roles/compute.admin', 예를 들어).
테넌트 및 프로듀서 프로젝트를 설정했습니다. 프로듀서 및 테넌트 프로젝트의 결제를 만들고 사용 설정하면 테넌트 리소스를 만들고 단위를 테넌트와 연결할 수 있습니다.
테넌트 리소스 만들기
앱 제공에서 고객을 나타내는 테넌트 리소스를 만듭니다.
콘솔 Google Cloud 에서 App Lifecycle Manager > 테넌트 로 이동합니다.
만들기 를 클릭합니다.
테넌트 이름 상자에 테넌트 리소스의 이름을 입력합니다.
(선택사항) 고객 리소스 상자에 통합을 위한 소비자 정의 설정이 있는 소비자 리소스를 제공합니다.
앱 제공 상자에서 테넌트를 연결할 앱 제공을 선택합니다.
리전 드롭다운에서 테넌트 메타데이터가 저장될 리전을 선택합니다.
(선택사항) 라벨 추가 를 클릭하여 키-값 쌍 라벨을 테넌트에 추가합니다.
만들기 를 클릭하여 테넌트 리소스를 만듭니다.
테넌트 리소스를 만들었습니다.
단위를 테넌트와 연결
테넌트를 만들고 단위를 배포한 후에는 서로 연결할 수 있습니다. 이 연결은 주로 어떤 단위가 어떤 테넌트에 속하는지 구성하는 데 도움이 되는 조직 태그 역할을 합니다.
단위 배포에 대한 자세한 내용은 App Lifecycle Manager로 MySQL 인스턴스 배포를 참조하세요.
단위를 테넌트와 연결하려면 다음 안내를 따르세요.
Google Cloud 콘솔에서 App Lifecycle Manager > 테넌트 로 이동합니다.
단위를 연결할 테넌트의 이름을 클릭합니다.
수정 을 클릭합니다.
연결된 단위 섹션에서 단위 추가 를 클릭합니다.
이 테넌트와 연결할 단위를 선택합니다.
완료 를 클릭합니다.
저장 을 클릭합니다.
선택한 단위가 표시된 테넌트와 연결됩니다.
테넌트 프로젝트 변수로 새 단위 프로비저닝
테넌트와 연결된 단위를 프로비저닝할 때는 tenant_project_id 변수를 제공해야 합니다.
Google Cloud 콘솔에서 App Lifecycle Manager > 단위 로 이동합니다.
단위 종류와 연결된 새 단위를 만듭니다.
프로비저닝 을 클릭합니다.
테넌시 유닛에 프로비저닝할 출시 를 선택합니다.
테넌트 프로젝트에서 권한을 부여한 작동 서비스 계정 을 선택합니다. 최소 권한의 원칙을 따르고 관리되는 리소스에 필요한 역할만 부여해야 합니다.
입력 변수 섹션에서 다음을 실행합니다.
- Terraform 구성
variables.tf파일에서 정의한 대로tenant_project_id변수가 나열되어 있는지 확인합니다. - 테넌트 프로젝트 ID 상자에 테넌트 프로젝트의 이름을 제공합니다.
- Terraform 구성에 정의된 입력 변수를 제공합니다. Terraform 구성에서 다른 변수를 정의하지 않은 경우 이 단계를 건너뜁니다.
- Terraform 구성
프로비저닝 을 클릭합니다.
App Lifecycle Manager는 지정된 작동 서비스 계정을 사용하여 Infrastructure Manager를 트리거합니다. Infrastructure Manager는 tenant_project_id 변수를 읽고 해당 테넌트 프로젝트 내에서 VM을 만듭니다.
새 출시 버전으로 단위 다시 프로비저닝
새 출시 버전으로 기존 단위를 다시 프로비저닝할 때는 tenant_project_id 변수를 제공해야 합니다.
Google Cloud 콘솔에서 App Lifecycle Manager > 단위 로 이동합니다.
단위 종류와 연결된 단위를 선택합니다.
프로비저닝 수정 을 클릭합니다.
업데이트된 Terraform 구성으로 만든 출시 를 선택합니다.
테넌트 프로젝트에서 권한을 부여한 작동 서비스 계정 을 선택합니다. 최소 권한의 원칙을 따르고 관리되는 리소스에 필요한 역할만 부여해야 합니다.
입력 변수 섹션에서 다음을 실행합니다.
- Terraform 구성
variables.tf파일에서 정의한 대로tenant_project_id변수가 나열되어 있는지 확인합니다. - 테넌트 프로젝트 ID 상자에 테넌트 프로젝트의 이름을 제공합니다.
- Terraform 구성에 정의된 입력 변수를 제공합니다. Terraform 구성에서 다른 변수를 정의하지 않은 경우 이 단계를 건너뜁니다.
- Terraform 구성
업데이트 를 클릭합니다.
App Lifecycle Manager는 지정된 작동 서비스 계정을 사용하여 Infrastructure Manager를 트리거합니다. Infrastructure Manager는 tenant_project_id 변수를 읽고 해당 테넌트 프로젝트 내에서 VM을 만듭니다.
다음 단계
- 단위 간 종속 항목 관리를 살펴봅니다.
- 변수 및 변수 매핑 사용에 대해 자세히 알아봅니다.
- 서비스 계정에 필요한 권한을 검토합니다.