단일 프로젝트를 사용하여 App Hub 애플리케이션 만들기


이 튜토리얼에서는 단일 프로젝트에서 App Hub 애플리케이션을 설정하는 방법을 보여줍니다. 서비스 프로젝트 역할을 하는 App Hub 호스트 프로젝트에서 부하 분산 관리형 인스턴스 그룹(MIG)을 배포합니다. 그런 다음 App Hub 호스트 프로젝트의 애플리케이션에서 서비스 프로젝트의 모든 인프라 리소스를 App Hub 서비스 및 워크로드로 등록하고 모니터링합니다.

이 튜토리얼은 App Hub를 설정하고 관리하는 사용자를 대상으로 합니다. Cloud Load Balancing 사용 경험이 있어야 합니다.

목표

이 튜토리얼에서는 다음 작업을 완료하는 방법을 보여줍니다.

  1. Google Cloud 프로젝트를 만들거나 선택합니다. 이 프로젝트가 App Hub 호스트 프로젝트입니다.
  2. 호스트 프로젝트에서 Terraform을 사용하여 VPC 네트워크, 리전 외부 애플리케이션 부하 분산기, 부하 분산기의 MIG 백엔드를 배포합니다. 리전 외부 애플리케이션 부하 분산기에는 다음과 같은 리소스가 포함됩니다.

    • HTTP 상태 점검
    • 전달 규칙
    • URL 맵
    • 대상 프록시
    • 관리형 인스턴스 그룹이 백엔드인 백엔드 서비스
    • SSL 인증서(HTTPS용)

    전달 규칙, URL 맵, 백엔드 서비스, MIG만 App Hub에서 검색된 리소스로 사용할 수 있습니다. 자세한 내용은 개념 및 데이터 모델을 참조하세요.

  3. 호스트 프로젝트에 적절한 역할과 권한을 제공합니다.

  4. App Hub 호스트 프로젝트를 서비스 프로젝트로 연결합니다.

  5. App Hub 호스트 프로젝트에서 애플리케이션을 만듭니다.

  6. 인프라 리소스를 App Hub 서비스 및 워크로드로 탐색합니다.

  7. 애플리케이션의 서비스 프로젝트에서 서비스와 워크로드를 등록하고 속성을 할당합니다.

  8. App Hub에서 등록된 서비스 및 워크로드의 세부정보를 확인합니다.

비용

부하 분산된 관리형 VM 솔루션에 사용되는 Google Cloud 리소스의 예상 비용은 Google Cloud 가격 계산기에서 사전 계산된 추정치를 참조하세요.

예상 비용을 시작점으로 배포 비용을 계산합니다. 솔루션에 사용된 리소스에 적용할 모든 구성 변경사항을 반영하도록 예상 비용을 수정할 수 있습니다.

사전 계산된 예상 비용은 다음과 같은 특정 요소에 대한 가정을 기반으로 합니다.

  • 리소스가 배포된 Google Cloud 위치
  • 리소스가 사용된 시간의 양

App Hub 비용에 대한 자세한 내용은 가격 책정 페이지를 참조하세요.

시작하기 전에

프로젝트 생성자에게는 기본 소유자 역할(roles/owner)이 부여됩니다. 기본적으로 Identity and Access Management(IAM) 역할에는 대부분의 Google Cloud 리소스에 대한 전체 액세스에 필요한 권한이 포함됩니다.

프로젝트 생성자가 아니면 프로젝트에서 적합한 주 구성원에 대해 필수 권한을 부여해야 합니다. 예를 들어 주 구성원은 Google 계정(최종 사용자)이거나 서비스 계정(애플리케이션 및 워크로드)일 수 있습니다.

튜토리얼을 완료하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

콘솔

  1. Google Cloud Console에서 프로젝트 선택기 페이지로 이동합니다.

    프로젝트 선택기로 이동

  2. App Hub 호스트 프로젝트가 될 Google Cloud 프로젝트를 선택하거나 만듭니다.

  3. Enable the required APIs.

    Enable the APIs

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. 최신 버전의 Google Cloud CLI가 설치되어 있는지 확인합니다. Cloud Shell에서 다음 명령어를 실행합니다.

      gcloud components update

  3. App Hub의 호스트 프로젝트가 될 새 프로젝트 HOST_PROJECT_ID를 만들거나 선택합니다.

    • Google Cloud 프로젝트를 만듭니다.

      gcloud projects create HOST_PROJECT_ID
    • 만든 Google Cloud 프로젝트를 선택합니다.

      gcloud config set project HOST_PROJECT_ID
  4. API 사용 설정

    gcloud services enable apphub.googleapis.com \
       cloudresourcemanager.googleapis.com \
       compute.googleapis.com \
       config.googleapis.com \
       serviceusage.googleapis.com

환경 준비

최소한의 노력으로 이 솔루션을 배포할 수 있도록 GitHub에서 Terraform 구성을 제공합니다. Terraform 구성은 솔루션에 필요한 모든 Google Cloud 리소스를 정의합니다. GitHub에서 Terraform 구성을 다운로드하고 원하는 경우 필요에 따라 코드를 맞춤설정한 후 Terraform CLI를 사용하여 솔루션을 배포합니다. 솔루션을 배포한 후 계속 Terraform을 사용하여 솔루션을 관리할 수 있습니다.

부하 분산기 및 관리형 인스턴스 그룹이 있는 App Hub 워크로드 및 서비스
그림 1. 부하 분산기 및 관리형 인스턴스 그룹이 있는 App Hub 워크로드 및 서비스

다음은 부하 분산된 관리형 VM 솔루션이 배포하는 토폴로지의 요청 처리 흐름입니다.

  1. 사용자가 Compute Engine에 배포된 애플리케이션에 요청을 보내면 Cloud Load Balancing에서 이 요청을 수신합니다.

  2. Cloud Load Balancing은 전달 규칙, URL 맵, 백엔드 서비스의 정보를 사용하여 Compute Engine 관리형 인스턴스 그룹으로 트래픽을 라우팅합니다.

Terraform 클라이언트 설정

Cloud Shell 또는 로컬 호스트에서 Terraform을 실행할 수 있습니다. 이 튜토리얼에서는 Google Cloud에서 인증을 수행하기 위해 Terraform이 사전 설치되어 구성된 Cloud Shell에서 Terraform을 실행하는 방법을 설명합니다.

이 솔루션의 Terraform 코드는 GitHub 저장소에서 사용할 수 있습니다.

  1. Cloud Shell에서 GitHub 저장소를 Cloud Shell에 클론합니다.

    git clone https://github.com/terraform-google-modules/terraform-docs-samples
    
  2. Cloud Shell에서 현재 작업 디렉터리가 terraform-docs-samples/lb/regional_external_http_load_balancer인지 확인합니다. 이 디렉터리에 솔루션에 대한 Terraform 구성 파일이 포함되어 있습니다. 해당 디렉터리로 변경해야 하는 경우 다음 명령어를 실행합니다.

    cd terraform-docs-samples/lb/regional_external_http_load_balancer 
    
  3. 다음 명령어를 실행하여 Terraform을 초기화합니다.

    terraform init
    

    다음 메시지가 표시될 때까지 기다립니다.

    Terraform has been successfully initialized!
    

Terraform 구성 검증 및 검토

  1. 현재 작업 디렉터리가 terraform-docs-samples/lb/regional_external_http_load_balancer인지 확인합니다. 그렇지 않으면 해당 디렉터리로 이동합니다.

  2. Terraform 구성에 오류가 없는지 확인합니다.

    terraform validate
    

    명령어가 오류를 반환하면 구성에서 수정이 필요한 항목을 변경한 후 terraform validate 명령어를 다시 실행합니다. 명령어가 다음 메시지를 반환할 때까지 이 단계를 반복합니다.

    Success! The configuration is valid.
    
  3. 구성에서 정의된 리소스를 검토합니다.

    terraform plan
    

    terraform plan 명령어 출력은 구성을 적용할 때 Terraform이 프로비저닝하는 리소스 목록입니다.

    변경하려면 구성을 수정한 후 terraform validateterraform plan 명령어를 다시 실행합니다.

리소스 프로비저닝

Terraform 구성을 더 이상 변경할 필요가 없으면 리소스를 배포합니다.

  1. 현재 작업 디렉터리가 terraform-docs-samples/lb/regional_external_http_load_balancer인지 확인합니다. 그렇지 않으면 해당 디렉터리로 이동합니다.

  2. Terraform 구성을 적용합니다.

    terraform apply
    

    Terraform에서 생성될 리소스 목록을 표시합니다.

  3. 작업을 수행하라는 메시지가 표시되면 yes를 입력합니다.

    Terraform에서 배포 진행 상황을 보여주는 메시지가 표시됩니다.

    배포를 완료할 수 없으면 Terraform에서 실패를 일으킨 오류가 표시됩니다. 오류 메시지를 검토하고 구성을 업데이트하여 오류를 해결합니다. 그런 후 terraform apply 명령어를 다시 실행합니다.

    모든 리소스가 만들어지면 Terraform에 다음 메시지가 표시됩니다.

    Apply complete!
    

Terraform에 '적용 완료' 메시지가 표시될 때까지 기다립니다.

Cloud Load Balancing은 전달 규칙, URL 맵, 백엔드 서비스, Compute Engine MIG에 트래픽을 분산합니다. 백엔드 서비스, URL 맵, 전달 규칙은 App Hub 호스트 프로젝트에서 탐색된 서비스가 됩니다. Compute Engine MIG는 App Hub 호스트 프로젝트에서 탐색된 워크로드가 됩니다.

솔루션이 더 이상 필요하지 않으면 Google Cloud 리소스 비용이 계속 청구되지 않도록 배포를 삭제할 수 있습니다. 자세한 내용은 배포 삭제를 참조하세요.

IAM 권한 부여

App Hub 호스트 프로젝트에 적절한 IAM 역할 및 권한을 제공합니다.

Console

  1. 튜토리얼을 완료하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 필수 IAM 역할을 부여해 달라고 요청하세요.

    1. Google Cloud 콘솔에서 IAM 페이지로 이동합니다.

      IAM으로 이동

    2. 액세스 권한 부여를 클릭합니다. 액세스 권한 부여 창이 열립니다.

    3. 새 주 구성원 필드에 호스트 프로젝트의 App Hub 관리자 역할인 App Hub를 관리할 개인 사용자의 이메일 주소를 입력합니다.

    4. 역할 선택을 클릭하고 필터 필드에 App Hub를 입력합니다.

    5. App Hub 관리자 역할을 선택합니다.

    6. 다른 역할 추가를 클릭하고 역할 선택 목록에서 모니터링 뷰어를 선택합니다.

    7. 저장을 클릭합니다.

gcloud

  1. App Hub를 사용할 개인 사용자에게 역할을 부여하려면 필요에 따라 IAM 역할을 바꿔서 다음 명령어를 반복합니다. 자세한 내용은 App Hub 역할 및 권한을 참조하세요.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member='user:HOST_PROJECT_ADMIN' \
        --role='roles/apphub.admin'

    HOST_PROJECT_ADMIN을 호스트 프로젝트에서 App Hub 관리자 역할이 있는 사용자로 바꿉니다. 이 값은 username@yourdomain 형식입니다(예: 222larabrown@gmail.com).

  2. 서비스 프로젝트의 App Hub 관리자 역할을 App Hub를 관리하는 개인 사용자에게 부여합니다. 서비스 프로젝트를 호스트 프로젝트에 추가하려면 App Hub 관리자 역할이 있어야 합니다. 서비스 프로젝트마다 이 역할을 가진 사람이 한 명 이상 있어야 합니다. 이 예시에서 호스트 프로젝트는 서비스 프로젝트 역할을 합니다.

    gcloud projects add-iam-policy-binding SERVICE_PROJECT_ID \
       --member='user:HOST_PROJECT_ADMIN' \
       --role='roles/apphub.admin'

    SERVICE_PROJECT_IDHOST_PROJECT_ID 이름으로 바꿉니다.

  3. App Hub를 관리하는 개인 사용자에게 호스트 프로젝트의 모니터링 뷰어 역할을 부여합니다. 측정항목을 보려면 호스트 프로젝트에 모니터링 뷰어 역할이 있어야 합니다.

    gcloud projects add-iam-policy-binding SERVICE_PROJECT_ID \
       --member='user:HOST_PROJECT_ADMIN' \
       --role='roles/monitoring.viewer'

서비스 프로젝트 연결

리소스를 서비스 프로젝트로 배포한 호스트 프로젝트를 연결합니다.

Console

  1. Google Cloud 콘솔에서 App Hub 설정 페이지로 이동합니다.

    설정으로 이동

  2. 설정 페이지에서 프로젝트 연결을 클릭합니다.

  3. 열리는 창에서 프로젝트를 검색하거나 표시된 목록에서 App Hub 서비스 프로젝트의 체크박스를 선택합니다.

  4. 선택을 클릭합니다. 연결된 서비스 프로젝트 표에 선택한 호스트 프로젝트가 서비스 프로젝트로 표시됩니다.

  5. 닫기를 클릭합니다.

gcloud

호스트 프로젝트를 App Hub 호스트 프로젝트에 서비스 프로젝트로 추가합니다.

gcloud apphub service-projects add HOST_PROJECT_ID \
  --project=HOST_PROJECT_ID

애플리케이션 만들기

서비스 및 워크로드의 컨테이너가 될 애플리케이션을 만듭니다.

콘솔

  1. App Hub 호스트 프로젝트에 있는지 확인합니다.
  2. Google Cloud 콘솔에서 App Hub 애플리케이션 페이지로 이동합니다.

    애플리케이션으로 이동

  3. 애플리케이션 만들기를 클릭합니다.

  4. 애플리케이션 만들기 페이지의 애플리케이션 리전 및 이름 선택 창에서 리전을 선택합니다.

  5. 리전 목록에서 us-west1을 선택합니다.

  6. 애플리케이션 이름 필드에 tutorial-application을 입력합니다.

  7. 표시 이름, Tutorial을 입력하고 계속을 클릭합니다.

  8. 속성 추가 창의 중요도 목록에서 높음을 선택합니다. 중요도는 애플리케이션, 서비스, 워크로드가 비즈니스 운영에 얼마나 중요한지를 나타냅니다.

  9. 환경 필드에서 소프트웨어 수명 주기 단계를 표시하려면 프로덕션을 선택합니다.

  10. 계속을 클릭합니다.

  11. 소유자 추가 창에서 개발자 소유자, 운영자 소유자비즈니스 소유자에 대해 다음 세부 정보를 추가합니다. 표시 이름을 추가하는 경우 소유자의 이메일 주소를 입력해야 합니다.

    1. 소유자의 표시 이름을 입력합니다.
    2. 소유자의 이메일 주소를 입력합니다. 이 값은 username@yourdomain 형식이어야 합니다(예: 222larabrown@gmail.com).
  12. 각 개발자, 운영자, 비즈니스 소유자에 대해 이 단계를 반복합니다.

  13. 만들기를 클릭합니다.

새 애플리케이션이 생성되고 애플리케이션 페이지에 나열됩니다.

gcloud

  1. 만든 App Hub 호스트 프로젝트를 선택합니다.

    gcloud config set project HOST_PROJECT_ID
  2. us-west1 리전에 tutorial-application이라는 새 애플리케이션을 만들고 표시 이름을 Tutorial로 지정합니다.

    gcloud apphub applications create tutorial-application \
        --display-name='Tutorial' \
        --scope-type=REGIONAL \
        --project=HOST_PROJECT_ID \
        --location=us-west1
    
  3. App Hub 호스트 프로젝트의 애플리케이션을 나열합니다.

    gcloud apphub applications list \
        --project=HOST_PROJECT_ID \
        --location=us-west1
    

    다음과 비슷한 출력이 표시됩니다.

    ID                    DISPLAY_NAME  CREATE_TIME
    tutorial-application  Tutorial      2023-10-31T18:33:48
    
  4. criticality-type, environment-type, 소유자 속성으로 애플리케이션을 업데이트합니다.

    gcloud apphub applications update tutorial-application \
      --criticality-type='HIGH' \
      --environment-type='PRODUCTION' \
      --developer-owners=display-name=DISPLAY-NAME-DEVELOPER,email=EMAIL-DEVELOPER \
      --operator-owners=display-name=DISPLAY-NAME-OPERATOR,email=EMAIL-OPERATOR \
      --business-owners=display-name=DISPLAY-NAME-BUSINESS,email=EMAIL-BUSINESS \
      --project=HOST_PROJECT_ID \
      --location=us-west1
    

    다음을 바꿉니다.

    • DISPLAY-NAME-DEVELOPER, DISPLAY-NAME-OPERATOR, DISPLAY-NAME-BUSINESS: 각각 개발자, 운영자, 비즈니스 소유자의 표시 이름입니다.
    • EMAIL-NAME-DEVELOPER, EMAIL-NAME-OPERATOR, EMAIL-NAME-BUSINESS: 각각 개발자, 운영자, 비즈니스 소유자의 이메일 주소입니다. 이러한 값은 username@yourdomain 형식이어야 합니다(예: 222larabrown@gmail.com).

    참고:

    • criticality-type: 애플리케이션, 서비스 또는 워크로드가 비즈니스 운영에 얼마나 중요한지 나타냅니다.
    • environment-type: 소프트웨어 수명 주기의 단계를 나타냅니다.
  5. 생성한 애플리케이션의 세부정보를 가져옵니다.

    gcloud apphub applications describe tutorial-application \
      --project=HOST_PROJECT_ID \
      --location=us-west1
    

    이 명령어는 다음과 비슷한 YAML 형식의 정보를 반환합니다.

    attributes:
    businessOwners:
    – displayName: [DISPLAY-NAME-BUSINESS]
      email: [EMAIL-BUSINESS]
    criticality:
      type: HIGH
    developerOwners:
    – displayName: [DISPLAY-NAME-DEVELOPER]
      email: [EMAIL-DEVELOPER]
    environment:
      type: PRODUCTION
    operatorOwners:
    – displayName: [DISPLAY-NAME-OPERATOR]
      email: [EMAIL-OPERATOR]
    createTime: '2023-10-31T18:33:48.199394108Z'
    displayName: Tutorial
    name: projects/HOST_PROJECT_ID/locations/us-west1/applications/tutorial-application
    scope:
      type: REGIONAL
    state: ACTIVE
    uid: 9d991a9d-5d8a-4c0d-b5fd-85e39fb58c73
    updateTime: '2023-10-31T18:33:48.343303819Z'
    

서비스 및 워크로드 등록

서비스 및 워크로드를 등록하면 애플리케이션에 추가됩니다.

Console

  1. Google Cloud 콘솔에서 App Hub 애플리케이션 페이지로 이동합니다.

    애플리케이션으로 이동

  2. 애플리케이션 이름 Tutorial을 클릭합니다. 서비스 및 워크로드 탭에는 App Hub 서비스 프로젝트에 있는 등록된 서비스 및 워크로드 목록이 표시됩니다.

  3. 서비스를 등록합니다.

    1. 서비스 및 워크로드 탭에서 서비스/워크로드 등록을 클릭합니다.
    2. 서비스 또는 워크로드 등록 페이지의 리소스 선택 창에서 찾아보기를 클릭하여 서비스 또는 워크로드를 리소스로 선택합니다.
    3. 리소스 선택 창에서 서비스의 이름l7-xlb-backend-service를 선택하고 선택을 클릭합니다.
    4. 리소스 선택 창에서 리소스의 이름tutorial-service-backend를 입력합니다.
    5. 표시 이름, Backend service을 입력하고 계속을 클릭합니다.
    6. 속성 추가 창의 중요도 목록에서 애플리케이션의 중요도를 나타내기 위해 높음을 선택합니다.
    7. 환경 필드에서 소프트웨어 수명 주기 단계를 표시하려면 프로덕션을 선택합니다.
    8. 계속을 클릭합니다.
    9. 소유자 추가 창에서 개발자 소유자, 운영자 소유자, 비즈니스 소유자의 필요에 따라 세부정보를 추가합니다. 표시 이름을 추가하는 경우 소유자의 이메일 주소를 입력해야 합니다.
      1. 소유자의 표시 이름을 입력합니다.
      2. 소유자의 이메일 주소를 입력합니다. 이 값은 username@yourdomain 형식이어야 합니다(예: 222larabrown@gmail.com).
    10. 각 개발자, 운영자, 비즈니스 소유자에 대해 이 단계를 반복합니다.
    11. 등록을 클릭합니다.

    서비스 및 워크로드 탭의 등록된 서비스 및 워크로드 섹션에서 새 서비스가 추가된 것을 확인할 수 있습니다.

  4. 이전 단계를 반복하여 다른 서비스를 각각 tutorial-service-forwarding-ruletutorial-service-url-map으로 등록합니다.

  5. 다음 예외를 제외하고 이전 단계를 반복해 서비스를 등록하여 워크로드를 등록합니다.

    1. 서비스 또는 워크로드 등록 창의 서비스 또는 워크로드 선택 섹션에서 워크로드 이름l7-xlb-backend-service를 선택하고 계속을 클릭합니다.
    2. 리소스 선택 창에서 리소스의 이름tutorial-workload-mig를 입력합니다.
    3. 표시 이름Workload instance group으로 입력하고 계속을 클릭합니다. 서비스 및 워크로드 탭의 등록된 서비스 및 워크로드 섹션에서 새 워크로드가 추가된 것을 확인할 수 있습니다.

gcloud

  1. App Hub 편집자 권한이 있는 개인을 추가합니다.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
      --member='user:APP_HUB_EDITOR' \
      --role='roles/apphub.editor'
    

    APP_HUB_EDITOR를 App Hub 호스트 프로젝트에서 App Hub 편집자 역할이 있는 사용자로 바꿉니다. 이 값은 username@yourdomain 형식입니다(예: 222larabrown@gmail.com).

  2. App Hub 호스트 프로젝트에서 탐색된 모든 서비스를 나열합니다. 이 명령어는 애플리케이션에 등록할 수 있는 서비스를 반환합니다.

    gcloud apphub discovered-services list \
        --project=HOST_PROJECT_ID \
        --location=us-west1
    

    다음과 비슷한 출력이 표시됩니다.

    ID                             SERVICE_REFERENCE                                                                                                              SERVICE_PROPERTIES
    BACKEND_SERVICE_ID          {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_NUMBER]/regions/us-west1/backendServices/l7-xlb-backend-service'}  {'gcpProject': 'projects/SERVICE_PROJECT_ID', 'location': 'us-west1'}
    FORWARDING_RULE_SERVICE_ID" {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_NUMBER]/regions/us-west1/forwardingRules/l7-xlb-forwarding-rule'}  {'gcpProject': 'projects/SERVICE_PROJECT_ID', 'location': 'us-west1'}
    URL_MAP_SERVICE_ID          {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_NUMBER]/regions/us-west1/urlMaps/regional-l7-xlb-map'}             {'gcpProject': 'projects/SERVICE_PROJECT_ID', 'location': 'us-west1'}
    

    출력에서 다음 단계에 사용할 서비스 ID(예: BACKEND_SERVICE_SP2_ID)를 복사합니다.

  3. 이전 단계의 서비스를 애플리케이션에 등록합니다. 이전 단계의 출력 필드에서 서비스 ID를 복사합니다.

    gcloud apphub applications services create tutorial-service-backend \
        --discovered-service='projects/HOST_PROJECT_ID/locations/us-west1/discoveredServices/BACKEND_SERVICE_ID' \
        --display-name='Backend service' \
        --criticality-type='HIGH' \
        --environment-type='PRODUCTION' \
        --application=tutorial-application \
        --project=HOST_PROJECT_ID \
        --location=us-west1
    
    gcloud apphub applications services create tutorial-service-forwarding-rule \
        --discovered-service='projects/HOST_PROJECT_ID/locations/us-west1/discoveredServices/FORWARDING_RULE_SERVICE_ID' \
        --display-name='Forwarding rule' \
        --criticality-type='HIGH' \
        --environment-type='PRODUCTION' \
        --application=tutorial-application \
        --project=HOST_PROJECT_ID \
        --location=us-west1
    
    gcloud apphub applications services create tutorial-service-url-map \
        --discovered-service='projects/HOST_PROJECT_ID/locations/us-west1/discoveredServices/URL_MAP_SERVICE_ID' \
        --display-name='URL map' \
        --criticality-type='HIGH' \
        --environment-type='PRODUCTION' \
        --application=tutorial-application \
        --project=HOST_PROJECT_ID \
        --location=us-west1
    

    다음을 바꿉니다.

    • BACKEND_SERVICE_ID: 등록하려는 백엔드 서비스의 서비스 ID
    • FORWARDING_RULE_SERVICE_ID: 등록하려는 전달 규칙의 서비스 ID
    • URL_MAP_SERVICE_ID: 등록하려는 URL 맵의 서비스 ID
  4. 애플리케이션에 등록된 모든 서비스를 나열합니다.

    gcloud apphub applications services list \
        --application=tutorial-application \
        --project=HOST_PROJECT_ID \
        --location=us-west1
    

    다음과 비슷한 출력이 표시됩니다.

    ID                               DISPLAY_NAME      SERVICE_REFERENCE                                                                                                              CREATE_TIME
    tutorial-service-backend         Backend service   {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_NUMBER]/regions/us-west1/backendServices/l7-xlb-backend-service'}  2024-02-13T00:31:45
    tutorial-service-forwarding-rule Forwarding rule   {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_NUMBER]/regions/us-west1/forwardingRules/l7-xlb-forwarding-rule'}  2024-02-13T00:31:45
    tutorial-service-url-map         URL map           {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_NUMBER]/regions/us-west1/urlMaps/regional-l7-xlb-map'}             2024-02-13T00:31:45
    

    등록되었지만 분리된 서비스는 SERVICE_REFERENCE 필드에 빈 값으로 표시됩니다. 등록 상태에 대한 자세한 내용은 App Hub의 속성 및 속성을 참조하세요.

  5. App Hub 호스트 프로젝트에서 탐색된 모든 워크로드를 나열합니다. 이 명령어는 애플리케이션에 등록할 수 있는 워크로드를 반환합니다.

    gcloud apphub discovered-workloads list \
        --project=HOST_PROJECT_ID \
        --location=us-west1
    

    다음과 비슷한 출력이 표시됩니다.

    ID                            WORKLOAD_REFERENCE                                                                                                            WORKLOAD_PROPERTIES
    INSTANCE_GROUP_ID          {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_NUMBER]/zones/us-west1-a/instanceGroups/l7-xlb-backend-example'}  {'gcpProject': 'projects/SERVICE_PROJECT_ID', 'location': 'us-west1', 'zone': 'us-west1-a'}
    

    다음 단계에서 사용할 출력에서 워크로드 ID를 복사합니다.

  6. 이전 단계의 워크로드를 애플리케이션에 sample-workload를 등록합니다. 이전 단계의 출력 필드에서 워크로드 ID를 복사합니다.

    gcloud apphub applications workloads create tutorial-workload \
        --discovered-workload='projects/HOST_PROJECT_ID/locations/us-west1/discoveredWorkloads/WORKLOAD_ID' \
        --display-name='Workload instance group' \
        --application=tutorial-application \
        --project=HOST_PROJECT_ID \
        --location=us-west1
    

    WORKLOAD_ID를 등록하려는 워크로드의 ID로 바꿉니다.

  7. 애플리케이션에 등록된 모든 워크로드를 나열합니다.

    gcloud apphub applications workloads list \
        --application=tutorial-application \
        --project=HOST_PROJECT_ID \
        --location=us-west1
    

    다음과 비슷한 출력이 표시됩니다.

    ID                        DISPLAY_NAME              WORKLOAD_REFERENCE                                                                                                            CREATE_TIME
    tutorial-workload-mig     Workload instance group   {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_NUMBER]/zones/us-west1-a/instanceGroups/l7-xlb-backend-example'}  2024-02-13T00:31:45
    

    등록되었지만 분리된 워크로드는 WORKLOAD_REFERENCE 필드에 빈 값으로 표시됩니다. 등록 상태에 대한 자세한 내용은 App Hub의 속성 및 속성을 참조하세요.

모든 서비스 및 워크로드 보기

App Hub 호스트 프로젝트에 연결된 서비스 프로젝트의 서비스 및 워크로드에 대한 세부정보를 볼 수 있습니다.

  1. Google Cloud 콘솔에서 App Hub 서비스 및 워크로드 페이지로 이동합니다.

    서비스 및 워크로드로 이동

    연결된 App Hub 서비스 프로젝트의 모든 서비스 및 워크로드가 표시됩니다.

  2. 리전 목록에서 us-west1을 선택합니다. 워크로드 인스턴스 그룹 워크로드가 App Hub 유형, 중요도등록된 대상과 같은 세부정보와 함께 표시됩니다.

  3. 상태를 기준으로 서비스 또는 워크로드를 필터링하려면 다음 안내를 따르세요.

    1. 필터 필드에서 등록 상태와 같은 필터를 선택합니다.
    2. 등록됨을 클릭합니다. 애플리케이션에 등록된 서비스 및 워크로드 목록이 나타납니다.

애플리케이션 측정항목 보기

App Hub 호스트 프로젝트에서 만든 애플리케이션의 시스템 측정항목을 볼 수 있습니다. 이러한 측정항목은 애플리케이션의 성능과 상태를 모니터링하는 데 도움이 되는 주요 신호(트래픽, 오류, 지연 시간, 포화도)에 해당합니다.

  1. Google Cloud 콘솔에서 App Hub 애플리케이션 페이지로 이동합니다.

    애플리케이션으로 이동

  2. 애플리케이션 이름 Tutorial을 클릭합니다.

    서비스 및 워크로드 탭에는 애플리케이션에 등록된 서비스 및 워크로드의 메타데이터가 표시됩니다.

  3. 등록된 서비스 및 워크로드의 시스템 측정항목을 보려면 측정항목을 클릭합니다.

삭제

이 튜토리얼에서 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트를 유지하고 개별 리소스를 삭제하세요.

App Hub 리소스 삭제

Console

  1. Google Cloud 콘솔에서 App Hub 애플리케이션 페이지로 이동합니다.

    애플리케이션으로 이동

  2. 애플리케이션 이름 Tutorial을 클릭합니다.

  3. 서비스 및 워크로드 탭의 등록된 서비스 및 워크로드 섹션에서 서비스 이름을 클릭합니다.

  4. 서비스 및 워크로드 페이지에서 등록 취소를 클릭합니다.

    알림에서 서비스가 등록 취소되었음을 알립니다.

  5. 서비스 및 워크로드 탭의 등록된 서비스 및 워크로드 섹션에서 워크로드 이름을 클릭합니다.

  6. 세부정보 탭에서 등록 취소를 클릭합니다.

    알림에서 워크로드가 등록 취소되었음을 알립니다.

  7. App Hub 애플리케이션 페이지로 이동합니다.

    애플리케이션으로 이동

  8. 애플리케이션 이름을 클릭합니다.

  9. tutorial-application 페이지에서 삭제를 클릭합니다.

  10. Google Cloud 콘솔에서 App Hub 설정 페이지로 이동합니다.

    설정으로 이동

  11. 설정 페이지에서 App Hub 호스트 프로젝트에서 삭제할 서비스 프로젝트의 체크박스를 선택합니다.

  12. 프로젝트 분리를 클릭합니다.

gcloud

  1. 애플리케이션에 등록된 서비스를 나열합니다.

    gcloud apphub applications services list \
      --application=tutorial-application --project=HOST_PROJECT_ID \
      --location=us-west1
    
  2. 애플리케이션에서 서비스를 등록 취소합니다.

    gcloud apphub applications services delete SERVICE_NAME \
      --application=tutorial-application --project=HOST_PROJECT_ID \
      --location=us-west1
    

    SERVICE_NAME를 서비스 이름으로 바꿉니다.

    이제 이러한 서비스를 애플리케이션에 등록할 수 있는 서비스가 탐색됩니다.

  3. 애플리케이션에 등록된 워크로드를 나열합니다.

    gcloud apphub applications workloads list \
      --application=tutorial-application --project=HOST_PROJECT_ID \
      --location=us-west1
    
  4. 애플리케이션에서 워크로드를 등록 취소합니다.

    gcloud apphub applications workloads delete WORKLOAD_NAME \
      --application=tutorial-application --project=HOST_PROJECT_ID \
      --location=us-west1
    

    WORKLOAD_NAME을 프로젝트 이름으로 바꿉니다.

    이제 워크로드가 애플리케이션에 등록할 수 있는 탐색된 워크로드가 됩니다.

  5. 애플리케이션을 삭제합니다.

    gcloud apphub applications delete tutorial-application \
      --project=HOST_PROJECT_ID \
      --location=us-west1
    
  6. App Hub 호스트 프로젝트에서 서비스 프로젝트를 삭제합니다.

    gcloud apphub service-projects remove SERVICE_PROJECT_ID \
      --project=HOST_PROJECT_ID
    

배포 삭제

더 이상 솔루션이 필요하지 않으면 이 솔루션에서 만든 리소스에 대한 요금이 계속 청구되지 않도록 모든 리소스를 삭제합니다.

Terraform CLI를 사용하여 솔루션을 배포한 경우 다음 절차를 수행합니다.

  1. Cloud Shell에서 현재 작업 디렉터리가 terraform-docs-samples/lb/regional_external_http_load_balancer인지 확인합니다. 그렇지 않으면 해당 디렉터리로 이동합니다.

  2. Terraform에서 프로비저닝한 리소스를 삭제합니다.

    terraform destroy
    

    Terraform에서 소멸될 리소스 목록을 표시합니다.

  3. 작업을 수행하라는 메시지가 표시되면 yes를 입력합니다.

    Terraform에서 진행 상황을 보여주는 메시지가 표시됩니다. 모든 리소스가 삭제되면 Terraform에 다음 메시지가 표시됩니다.

    Destroy complete!
    

솔루션에 사용한 Google Cloud 프로젝트가 더 이상 필요하지 않으면 프로젝트를 삭제할 수 있습니다.

프로젝트 삭제

Console

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.

    리소스 관리로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력하고 종료를 클릭하여 프로젝트를 삭제합니다.

gcloud

Google Cloud 프로젝트 삭제

gcloud projects delete PROJECT_ID

PROJECT_ID를 호스트 또는 서비스 프로젝트 ID로 바꿉니다.

다음 단계