기존 Google Cloud 리소스를 App Hub 애플리케이션에서 서비스 및 워크로드로 등록하면 비즈니스 목적에 따라 리소스를 구성하여 관리를 간소화할 수 있습니다. 이 접근 방식을 사용하면 통합된 가시성, 모니터링, 거버넌스, 운영 제어가 가능합니다.
이 가이드에서는 아직 애플리케이션으로 공식적으로 정의되지 않은 기존 Google Cloud 리소스를 그룹화하는 방법을 보여줍니다.
시작하기 전에
애플리케이션으로 리소스를 구성하기 전에 애플리케이션 관리의 초기 설정을 완료해야 합니다. 이 프로세스에는 일반적으로 다음과 같은 역할과 단계가 포함됩니다.
관리자:
- 애플리케이션 설정 모델을 선택합니다. 관리 프로젝트를 구성하고 정리하려는 Google Cloud 리소스를 포함하는 애플리케이션 관리 경계를 정의해야 합니다.
- 사용하려는 모든 Google Cloud 리소스에 필요한 API를 사용 설정합니다.
- 사용자에게 액세스 권한 부여 애플리케이션 수명 주기에서 사용자의 책임에 따라 적절한 IAM 역할을 할당합니다.
개발자 및 운영자:
- 관리자에게 초기 설정이 완료되었는지 확인합니다.
- 수행하려는 작업에 필요한 IAM 역할이 있는지 확인합니다.
- Google Cloud 콘솔에서 관리 프로젝트를 열거나 Terraform 또는 Google Cloud CLI 상호작용을 위해 관리 프로젝트의 프로젝트 ID를 찾습니다.
애플리케이션 만들기
App Hub에서 기존 Google Cloud 리소스의 논리적 컨테이너 역할을 하는 애플리케이션을 만듭니다.
콘솔
- Google Cloud 콘솔에서 프로젝트 선택 도구를 사용하여 관리 프로젝트를 선택합니다.
App Hub에서 애플리케이션 페이지로 이동합니다.
애플리케이션 만들기를 클릭합니다.
애플리케이션 리전 및 이름 선택 창에서 지리적 분포 요구사항에 따라 애플리케이션에 가장 적합한 위치를 선택합니다.
- 리전을 선택하여 리전 애플리케이션을 만듭니다. 그런 다음 App Hub 지원 리전에 따라 애플리케이션의 특정 리전을 선택합니다.
- 전역을 선택하여 전역 애플리케이션을 만듭니다.
애플리케이션에 가장 적합한 위치에 대한 자세한 내용은 전역 및 리전 애플리케이션을 참고하세요.
애플리케이션 이름을 입력하고 계속을 클릭합니다. 이 이름은 소문자, 숫자 또는 하이픈만 포함할 수 있는 고유 식별자입니다. 애플리케이션을 만든 후에는 이 이름을 변경할 수 없습니다.
선택사항: 검색 가능성과 거버넌스를 지원하도록 애플리케이션의 최상위 속성을 정의합니다.
- 속성 추가 섹션에 표시 이름을 입력합니다. 표시 이름은 고유 식별자가 아니며 애플리케이션을 만든 후에 변경할 수 있습니다.
- 중요도 목록에서 애플리케이션의 중요도를 나타내는 값을 선택합니다.
- 환경 목록에서 소프트웨어 수명 주기 단계를 나타내는 값을 선택합니다.
- 소유자의 표시 이름과 이메일 주소를 포함한 연락처 정보를 추가합니다. 이메일 주소는
username@yourdomain형식이어야 합니다(예:jane-doe@gmail.com).
만들기를 클릭합니다.
gcloud
터미널 또는 Cloud Shell에서 Google Cloud CLI를 사용하여 애플리케이션을 만듭니다.
gcloud apphub applications create APPLICATION_NAME \ --project=PROJECT_ID \ --scope-type=LOCATION \ --location=REGION \ --display-name=DISPLAY_NAME \ --criticality-type=CRITICALITY \ --environment-type=ENVIRONMENT \ --developer-owners=display-name=DEV_NAME,email=DEV_EMAIL \ --operator-owners=display-name=OPERATOR_NAME,email=OPERATOR_EMAIL \ --business-owners=display-name=BUSINESS_NAME,email=BUSINESS_EMAILAPPLICATION_NAME을 애플리케이션 이름으로 바꿉니다. 이 이름은 소문자, 숫자 또는 하이픈만 포함할 수 있는 고유 식별자입니다.--criticality-type와 같은 선택적 플래그를 사용하여 애플리케이션의 최상위 속성을 정의하고 검색 가능성과 거버넌스를 지원합니다.필수 플래그와 선택적 플래그의 경우 다음을 바꿉니다.
- 필수:
PROJECT_ID: 관리 프로젝트의 ID입니다. 필수:
LOCATION: 지리적 배포 요구사항에 따른 애플리케이션의 위치입니다. 다음 중 한 가지 값을 사용합니다.- 리전 애플리케이션의 경우
REGIONAL - 전역 애플리케이션의 경우
GLOBAL
애플리케이션에 가장 적합한 위치에 대한 자세한 내용은 전역 및 리전 애플리케이션을 참고하세요.
- 리전 애플리케이션의 경우
필수:
REGION: 애플리케이션의 특정 지역입니다. 다음 중 한 가지 값을 사용합니다.- 애플리케이션의
--scope-type위치가REGIONAL로 설정된 경우 App Hub 지원 리전 이름을 지정합니다. - 애플리케이션의
--scope-type위치가GLOBAL로 설정된 경우global를 사용합니다.
- 애플리케이션의
선택사항:
DISPLAY_NAME: 애플리케이션의 표시 이름입니다. 표시 이름은 고유 식별자가 아니며 애플리케이션을 만든 후에 변경할 수 있습니다.선택사항:
CRITICALITY: 작업에 대한 애플리케이션의 중요도 수준입니다. 다음 값 중 하나를 사용하세요.MISSION_CRITICALHIGHMEDIUMLOW
선택사항:
ENVIRONMENT: 소프트웨어 수명 주기의 단계입니다. 다음 중 한 가지 값을 사용합니다.PRODUCTIONSTAGINGDEVELOPMENTTEST
선택사항:
DEV_NAME및DEV_EMAIL: 개발자 소유자의 표시 이름과 이메일 주소입니다.선택사항:
OPERATOR_NAME및OPERATOR_EMAIL: 작업자 소유자의 표시 이름과 이메일 주소입니다.선택사항:
BUSINESS_NAME및BUSINESS_EMAIL: 비즈니스 소유자의 표시 이름과 이메일 주소입니다.
- 필수:
프로젝트의 애플리케이션을 나열합니다.
gcloud apphub applications list \ --project=PROJECT_ID \ --location=REGION다음과 비슷한 출력이 표시되어야 합니다.
ID DISPLAY_NAME CREATE_TIME APPLICATION_NAME DISPLAY_NAME 2023-10-31T18:33:48
Terraform
Terraform으로 애플리케이션을 만들려면 google_apphub_application 리소스를 사용합니다.
이 리소스를 사용하면 이름, 위치, 속성 등 애플리케이션의 속성을 정의할 수 있습니다.
다음 예시에서는 정의된 심각도, 환경, 소유자 속성을 사용하여 us-central1에 리전 애플리케이션을 만듭니다.
resource "google_apphub_application" "example" {
project = "my-project-id"
location = "us-central1"
application_id = "my-application"
display_name = "My Application"
description = "This application represents our platform."
scope {
type = "REGIONAL"
}
attributes {
criticality {
type = "MISSION_CRITICAL"
}
environment {
type = "PRODUCTION"
}
business_owners {
display_name = "Alice"
email = "alice@example.com"
}
developer_owners {
display_name = "Bob"
email = "bob@example.com"
}
operator_owners {
display_name = "Charlie"
email = "charlie@example.com"
}
}
}
서비스 및 워크로드 등록
App Hub를 사용하면 애플리케이션 관리 경계 내에 있는 지원되는 리소스를 선택하여 서비스 및 워크로드로 등록할 수 있습니다. 애플리케이션을 만든 후 기존Google Cloud 리소스를 서비스 및 워크로드로 등록합니다.
독점 서비스는 하나의 애플리케이션에만 등록할 수 있습니다. 하지만 공유 서비스는 둘 이상의 애플리케이션에 등록할 수 있습니다. App Hub는 다른 애플리케이션에 이미 등록된 공유 서비스를 애플리케이션에 등록할 때 검색하지만 속성을 수정하지 못할 수도 있습니다.
콘솔
- Google Cloud 콘솔에서 프로젝트 선택 도구를 사용하여 관리 프로젝트를 선택합니다.
App Hub에서 애플리케이션 페이지로 이동합니다.
기존 Google Cloud 리소스를 서비스 및 워크로드로 등록하려는 애플리케이션의 이름을 클릭합니다.
애플리케이션의 세부정보 페이지에서 서비스 및 워크로드 탭을 선택합니다. 이 탭에는 애플리케이션에 등록할 수 있는 기존 리소스 목록이 표시됩니다. App Hub를 사용하면 애플리케이션 관리 경계 내에 있는 지원되는 리소스를 서비스 또는 워크로드로 선택할 수 있습니다.
등록하려는 각 서비스 또는 워크로드에 대해 다음을 수행합니다.
- 서비스 및 워크로드 탭에서 서비스/워크로드 등록을 클릭합니다.
- 리소스 선택 창으로 이동하여 찾아보기를 클릭하여 등록할 서비스 또는 워크로드를 찾습니다.
- 서비스 또는 워크로드를 선택하고 선택을 클릭합니다.
- 리소스 선택 창에서 서비스 또는 워크로드의 이름을 입력하고 계속을 클릭합니다.
선택사항: 속성 추가 창에서 검색 가능성과 거버넌스를 지원하도록 리소스의 최상위 속성을 정의합니다.
계속을 클릭합니다.
선택사항: 소유자 추가 섹션에서 서비스 또는 워크로드 소유자에 대한 세부정보를 추가합니다.
등록을 클릭합니다.
서비스 및 워크로드 탭에 등록된 서비스 또는 워크로드가 표시됩니다.
gcloud
App Hub를 사용하면 애플리케이션 관리 경계 내에 있는 지원되는 리소스를 서비스 또는 워크로드로 선택할 수 있습니다. Google Cloud CLI를 사용하여 터미널 또는 Cloud Shell에서 애플리케이션에 등록할 수 있는 서비스 또는 워크로드를 나열합니다. 서비스와 워크로드의 명령어는 약간 다릅니다.
서비스 등록
애플리케이션에 등록할 수 있는 사용 가능한 서비스를 나열합니다.
gcloud apphub discovered-services list \ --project=PROJECT_ID \ --location=REGION \ --filter=FILTER_EXPRESSION필수 플래그와 선택적 플래그의 경우 다음을 바꿉니다.
- 필수:
PROJECT_ID: 관리 프로젝트의 ID입니다. 필수:
REGION: 지리적 분포에 따른 서비스의 특정 지역입니다. 다음 값 중 하나를 사용합니다.- 서비스가 리전인 경우 App Hub 지원 리전 이름을 지정합니다.
- 서비스가 전역인 경우
global을 사용합니다.
선택사항:
FILTER_EXPRESSION:--filter플래그의 필터 표현식으로, 애플리케이션 관리 경계 내의 지정된 프로젝트 또는 특정 속성이 있는 서비스만 표시합니다. 예를 들면 다음과 같습니다.service_properties.gcp_project=projects/PROJECT_IDservice_properties.gcp_project=projects/PROJECT_ID AND service_reference.uri~"forwardingRules"
출력은 다음 예시와 비슷합니다.
ID SERVICE_REFERENCE SERVICE_PROPERTIES SERVICE_ID {'uri': '//compute.googleapis.com/projects/PROJECT_NUMBER/regions/REGION/forwardingRules/forwarding-rule'} {'gcpProject': 'projects/PROJECT_ID', 'location': 'REGION'}- 필수:
출력에서 서비스 ID
SERVICE_ID를 복사합니다.애플리케이션에 서비스를 등록합니다.
gcloud apphub applications services create SERVICE_NAME \ --project=PROJECT_ID \ --location=REGION \ --application=APPLICATION_NAME \ --discovered-service=projects/PROJECT_ID/locations/REGION/discoveredServices/SERVICE_ID \ --display-name=SERVICE_DISPLAY_NAME \ --criticality-type=CRITICALITY \ --environment-type=ENVIRONMENT \ --developer-owners=display-name=DEV_NAME,email=DEV_EMAIL \ --operator-owners=display-name=OPERATOR_NAME,email=OPERATOR_EMAIL \ --business-owners=display-name=BUSINESS_NAME,email=BUSINESS_EMAILSERVICE_NAME을 애플리케이션에 서비스를 등록하는 데 사용할 이름으로 바꿉니다.--criticality-type와 같은 선택적 플래그를 사용하여 서비스의 최상위 속성을 정의하고 검색 가능성과 거버넌스를 지원합니다.필수 플래그와 선택적 플래그의 경우 다음을 바꿉니다.
- 필수:
PROJECT_ID: 관리 프로젝트의 ID입니다. 필수:
REGION: 지리적 분포에 따른 서비스의 특정 지역입니다. 다음 값 중 하나를 사용합니다.- 서비스가 리전인 경우 App Hub 지원 리전 이름을 지정합니다.
- 서비스가 전역인 경우
global을 사용합니다.
필수:
APPLICATION_NAME: 서비스를 등록할 애플리케이션의 이름입니다.필수:
SERVICE_ID: 이전 출력에서 복사한 서비스 ID입니다.선택사항:
SERVICE_DISPLAY_NAME: 서비스의 표시 이름입니다.선택사항:
CRITICALITY: 작업에 대한 서비스의 중요도 수준입니다. 다음 값 중 하나를 사용합니다.MISSION_CRITICALHIGHMEDIUMLOW
선택사항:
ENVIRONMENT: 소프트웨어 수명 주기의 단계입니다. 다음 중 한 가지 값을 사용합니다.PRODUCTIONSTAGINGDEVELOPMENTTEST
선택사항:
DEV_NAME및DEV_EMAIL: 개발자 소유자의 표시 이름과 이메일 주소입니다.선택사항:
OPERATOR_NAME및OPERATOR_EMAIL: 운영자 소유자의 표시 이름과 이메일 주소입니다.선택사항:
BUSINESS_NAME및BUSINESS_EMAIL: 비즈니스 소유자의 표시 이름과 이메일 주소입니다.
- 필수:
애플리케이션에 등록된 서비스를 나열합니다.
gcloud apphub applications services list \ --application=APPLICATION_NAME --project=PROJECT_ID \ --location=REGION등록된 각 서비스에 대해 다음과 비슷한 출력을 얻어야 합니다.
ID DISPLAY_NAME SERVICE_REFERENCE CREATE_TIME SERVICE_NAME SERVICE_DISPLAY_NAME {'uri': '//compute.googleapis.com/projects/PROJECT_NUMBER/regions/REGION/forwardingRules/forwarding-rule'} 2023-11-01T21:38:08
워크로드 등록
애플리케이션에 등록할 수 있는 사용 가능한 워크로드를 나열합니다.
gcloud apphub discovered-workloads list \ --project=PROJECT_ID \ --location=REGION \ --filter=FILTER_EXPRESSION필수 플래그와 선택적 플래그의 경우 다음을 바꿉니다.
- 필수:
PROJECT_ID: 관리 프로젝트의 ID입니다. 필수:
REGION: 지리적 분포에 따른 워크로드의 특정 리전입니다. 다음 값 중 하나를 사용합니다.- 워크로드가 리전인 경우 App Hub 지원 리전 이름을 지정합니다.
- 워크로드가 전역인 경우
global을 사용합니다.
선택사항:
FILTER_EXPRESSION:--filter플래그의 필터 표현식으로, 애플리케이션 관리 경계 내의 지정된 프로젝트에서 또는 특정 속성(예:workload_properties.gcp_project=projects/PROJECT_ID)이 있는 워크로드만 표시합니다.
출력은 다음 예시와 비슷합니다.
ID WORKLOAD_REFERENCE WORKLOAD_PROPERTIES WORKLOAD_ID {'uri': '//compute.googleapis.com/projects/PROJECT_NUMBER/regions/REGION/instanceGroups/mig-name'} {'gcpProject': 'projects/PROJECT_ID', 'location': 'REGION'}- 필수:
출력에서 워크로드 ID(
WORKLOAD_ID)를 복사합니다.애플리케이션에 워크로드를 등록합니다.
gcloud apphub applications workloads create WORKLOAD_NAME \ --project=PROJECT_ID \ --location=REGION \ --application=APPLICATION_NAME \ --discovered-workload=projects/PROJECT_ID/locations/REGION/discoveredWorkloads/WORKLOAD_ID \ --display-name=WORKLOAD_DISPLAY_NAME \ --criticality-type=CRITICALITY \ --environment-type=ENVIRONMENT \ --developer-owners=display-name=DEV_NAME,email=DEV_EMAIL \ --operator-owners=display-name=OPERATOR_NAME,email=OPERATOR_EMAIL \ --business-owners=display-name=BUSINESS_NAME,email=BUSINESS_EMAILWORKLOAD_NAME을 워크로드를 애플리케이션에 등록하는 데 사용할 이름으로 바꿉니다.--criticality-type와 같은 선택적 플래그를 사용하여 워크로드의 최상위 속성을 정의하고 검색 가능성과 거버넌스를 지원합니다.필수 플래그와 선택적 플래그의 경우 다음을 바꿉니다.
- 필수:
PROJECT_ID: 관리 프로젝트의 ID입니다. 필수:
REGION: 지리적 분포에 따른 워크로드의 특정 리전입니다. 다음 값 중 하나를 사용합니다.- 워크로드가 리전인 경우 App Hub 지원 리전 이름을 지정합니다.
- 워크로드가 전역인 경우
global을 사용합니다.
필수:
APPLICATION_NAME: 워크로드를 등록할 애플리케이션의 이름입니다.필수:
WORKLOAD_ID: 이전 출력에서 복사한 워크로드 ID입니다.선택사항:
WORKLOAD_DISPLAY_NAME: 워크로드의 표시 이름입니다.선택사항:
CRITICALITY: 운영에 대한 워크로드의 중요도 수준입니다. 다음 값 중 하나를 사용합니다.MISSION_CRITICALHIGHMEDIUMLOW
선택사항:
ENVIRONMENT: 소프트웨어 수명 주기의 단계입니다. 다음 중 한 가지 값을 사용합니다.PRODUCTIONSTAGINGDEVELOPMENTTEST
선택사항:
DEV_NAME및DEV_EMAIL: 개발자 소유자의 표시 이름과 이메일 주소입니다.선택사항:
OPERATOR_NAME및OPERATOR_EMAIL: 운영자 소유자의 표시 이름과 이메일 주소입니다.선택사항:
BUSINESS_NAME및BUSINESS_EMAIL: 비즈니스 소유자의 표시 이름과 이메일 주소입니다.
- 필수:
애플리케이션에 등록된 워크로드를 나열합니다.
gcloud apphub applications workloads list \ --application=APPLICATION_NAME --project=PROJECT_ID \ --location=REGION등록된 각 워크로드에 대해 다음과 유사한 출력을 얻어야 합니다.
ID DISPLAY_NAME WORKLOAD_REFERENCE CREATE_TIME WORKLOAD_NAME WORKLOAD_DISPLAY_NAME {'uri': '//compute.googleapis.com/projects/PROJECT_NUMBER/regions/REGION/instanceGroups/mig-name'} 2023-11-01T21:38:08
Terraform
Terraform을 사용하여 애플리케이션 관리 경계 내의 Google Cloud 리소스를 애플리케이션의 서비스 또는 워크로드로 등록하려면 google_apphub_discovered_service 및 google_apphub_discovered_workload 데이터 소스를 사용하여 등록하려는 리소스에 관한 정보를 동적으로 가져옵니다.
그런 다음 google_apphub_service 또는 google_apphub_workload 리소스를 사용하여 각각 서비스 또는 워크로드를 등록합니다.
서비스 등록
URI를 사용하여 서비스에 관한 정보를 가져옵니다.
data "google_apphub_discovered_service" "my-service" { location = "REGION" service_uri = "SERVICE_URI" }검색된 서비스를 애플리케이션에 등록합니다(예:
resource "google_apphub_service" "example" { project = "my-project-id" location = "us-central1" application_id = google_apphub_application.example.application_id service_id = "frontend-load-balancer" discovered_service = data.google_apphub_discovered_service.my-forwarding-rule.name display_name = "Frontend Load Balancer" description = "The primary load balancer for the frontend." }
워크로드 등록
URI를 사용하여 워크로드에 관한 정보를 가져옵니다.
data "google_apphub_discovered_workload" "my-workload" { location = "REGION" workload_uri = "WORKLOAD_URI" }탐색된 워크로드를 애플리케이션에 등록합니다. 예를 들면 다음과 같습니다.
resource "google_apphub_workload" "example" { project = "my-project-id" location = "us-central1" application_id = google_apphub_application.example.application_id workload_id = "frontend-instance-group" discovered_workload = data.google_apphub_discovered_workload.my-mig.name display_name = "Frontend Instance Group" description = "The managed instance group for the frontend." }
애플리케이션에 등록된 서비스 및 워크로드의 등록 상태는 애플리케이션 관리 경계 외부로 프로젝트 또는 폴더를 이동하거나 기본 리소스를 삭제하는 경우 분리됨으로 변경될 수 있습니다. 분리된 서비스 및 워크로드는 등록 취소할 때까지 애플리케이션에 남아 있지만 App Hub에서는 더 이상 관리하거나 모니터링할 수 없습니다. 자세한 내용은 서비스 및 워크로드의 등록 상태를 참고하세요.
서비스 또는 워크로드를 애플리케이션에 다시 연결하려면 다시 등록해야 합니다.
권한 부여 및 작업 시작
애플리케이션을 만들고 App Hub에 서비스 및 워크로드를 등록한 후에는 수명 주기 책임을 기반으로 사용자 액세스 권한을 부여하여 이 로직 그룹을 단일 단위로 관리해야 합니다.
- 액세스 요구사항에 따라 개별 애플리케이션 또는 모든 애플리케이션에 권한을 부여할 수 있습니다. 권장 역할 목록은 사용자에게 애플리케이션 중심 역할 부여를 참고하세요.
- 원하는 경우 Cloud Hub로 이동하여 상태, 성능, 비용 데이터를 포함하여 정의된 애플리케이션의 통합 운영 대시보드를 확인합니다.