App Hub 설정

이 문서에서는 Google Cloud에서 애플리케이션을 빌드, 운영, 관리하도록 App Hub를 설정에 대한 안내를 제공합니다. 이 문서는 App Hub를 설정하고 관리하는 사용자를 대상으로 합니다.

App Hub를 설정하는 경우 기본 작업은 다음과 같습니다.

  1. 새 App Hub 호스트 프로젝트를 만들지 아니면 기존 프로젝트를 호스트 프로젝트로 사용할지 결정합니다.
    • 둘 이상의 호스트 프로젝트를 계획하는 경우 동일한 폴더에 생성하는 것이 좋습니다.
    • App Hub의 호스트 프로젝트는 공유 VPC 호스트 프로젝트와 동일하지 않으며 동일한 요구사항이 없습니다. 예를 들어 App Hub를 사용하기 위해 공유 VPC 네트워크가 필요하지 않습니다. 이 문서에서 호스트 프로젝트에 대한 모든 참조는 App Hub 호스트 프로젝트에 해당합니다.
    • 호스트 프로젝트는 자신 이외의 서비스 프로젝트가 될 수 없습니다.
  2. 호스트 프로젝트에서 App Hub API를 사용 설정합니다.
  3. 호스트 프로젝트에 App Hub 서비스 프로젝트를 하나 이상 추가합니다.
    • App Hub의 서비스 프로젝트는 공유 VPC 서비스 프로젝트와 동일하지 않으며 동일한 요구사항이 없습니다. 이 문서에서 서비스 프로젝트에 대한 모든 참조는 App Hub 서비스 프로젝트에 해당합니다.
  4. App Hub 사용자를 App Hub 관리자, App Hub 편집자 또는 App Hub 뷰어로 지정합니다.
  5. 애플리케이션을 만듭니다.
  6. 애플리케이션에 서비스 및 워크로드를 등록합니다.

서비스 및 워크로드

App Hub를 사용하면 호스트 프로젝트에 연결된 서비스 프로젝트의 리소스를 서비스 및 워크로드로 사용할 수 있습니다. 서비스 및 워크로드를 애플리케이션에 등록하면 리소스를 관찰하고 모니터링할 수 있습니다. 다음 리소스를 App Hub 서비스로 지정하고 App Hub 애플리케이션에 등록할 수 있습니다.

  • 전달 규칙
  • URL 맵
  • 백엔드 서비스

개별 VM이 아닌 관리형 인스턴스 그룹(MIG)을 워크로드로 지정하여 App Hub 애플리케이션에 등록할 수 있습니다.

App Hub는 HTTP 또는 HTTPS 트래픽이 있는 리전 L7 외부 및 내부 애플리케이션 부하 분산기를 지원합니다.

등록하는 워크로드 및 서비스는 애플리케이션과 동일한 리전에 있어야 하므로 다음 안내 및 명령어는 모든 리소스가 동일한 리전에 있다고 가정합니다. 지정할 수 있는 리전에 대한 자세한 내용은 위치를 참조하세요.

전체 설정 프로세스

다음 목록에는 App Hub를 설정하는 단계가 요약되어 있습니다.

  1. 애플리케이션에 포함할 기존 리소스와 리소스가 속한 프로젝트를 결정합니다.
  2. App Hub 호스트 프로젝트를 만들고 프로젝트에서 App Hub API를 사용 설정합니다. 원하는 경우 비즈니스의 조직 구조에 따라 호스트 프로젝트를 두 개 이상 만듭니다. 프로젝트를 여러 개 만들 경우 새 폴더에서 만드는 것이 좋습니다.
  3. 서비스 프로젝트 연결. 호스트 프로젝트를 구성한 후 애플리케이션에 필요한 기본 리소스가 있는 서비스 프로젝트를 호스트 프로젝트에 연결합니다. 다음에 유의하세요.
    1. 서비스 프로젝트는 호스트 프로젝트와 동일한 조직에 있어야 합니다. 호스트 프로젝트에 서비스 프로젝트를 연결한 후에는 다른 조직으로 이동할 수 없습니다. 서비스 프로젝트를 다른 조직으로 이동하려면 이 문서의 안내에 따라 호스트 프로젝트에 대한 서비스 프로젝트 연결을 삭제 또는 분리해야 합니다. 그런 다음 서비스 프로젝트를 다른 조직에 연결할 수 있습니다.
    2. 서비스 프로젝트는 두 개 이상의 호스트 프로젝트에 연결할 수 없습니다.
    3. 호스트 프로젝트는 자체 서비스 프로젝트가 될 수 있지만 다른 호스트 프로젝트의 서비스 프로젝트는 될 수 없습니다.
    4. 서비스 프로젝트를 호스트 프로젝트에 연결한 후 호스트 프로젝트에 서비스 또는 워크로드를 쿼리하면 모든 서비스 프로젝트의 모든 서비스 및 워크로드가 자동으로 반환됩니다.
  4. 여러 워크로드와 서비스를 구성할 수 있는 애플리케이션을 만듭니다. 다음에 유의하세요.
    1. 애플리케이션에 호스트 프로젝트 및 위치에 고유한 이름이 있는지 확인합니다.
    2. 서비스 프로젝트는 여러 애플리케이션이 있는 호스트 프로젝트에 연결될 수 있지만 개별 리소스는 하나의 애플리케이션에만 등록될 수 있습니다.
  5. 서비스 및 워크로드를 쿼리하고 애플리케이션에 등록합니다. 애플리케이션을 만든 후 호스트 프로젝트에서 사용 가능한 서비스 및 워크로드를 쿼리합니다. 쿼리는 호스트 프로젝트 및 호스트 프로젝트에 연결된 모든 서비스 프로젝트에 대해 실행됩니다. 또한 해당 프로젝트의 모든 서비스 및 워크로드를 반환합니다. 다음에 유의하세요.
    1. 서비스 또는 워크로드는 단일 애플리케이션에만 등록할 수 있습니다.
    2. 등록하는 모든 워크로드 및 서비스는 애플리케이션과 동일한 리전에 있어야 합니다.
    3. 등록된 서비스 및 워크로드는 기본 인프라 리소스에 대한 업데이트의 영향을 받지 않습니다. 즉, 서비스 및 워크로드로 작동하는 기본 리소스를 삭제하는 경우 App Hub는 애플리케이션에서 연결된 워크로드 및 서비스를 삭제하지 않습니다. 워크로드 또는 서비스를 별도로 등록 취소해야 합니다.

기본 요건

App Hub를 설정하기 전에 다음 작업을 완료하세요.

  1. 기존 프로젝트를 호스트 프로젝트로 지정하거나 호스트 프로젝트가 될 새 프로젝트를 만듭니다. 새 프로젝트를 만드는 것이 좋습니다.
  2. App Hub 관리자, App Hub 편집자 및 App Hub 뷰어와 같이 App Hub의 Identity and Access Management(IAM) 역할을 보유할 개인 사용자를 결정했는지 확인합니다.

다음에 유의하세요.

  • 호스트 프로젝트에는 하나 이상의 서비스 프로젝트가 연결될 수 있습니다.
  • 서비스 프로젝트는 두 개 이상의 호스트 프로젝트에 연결할 수 없습니다.
  • 호스트 프로젝트에 서비스 프로젝트를 연결하는 사람은 서비스 프로젝트와 호스트 프로젝트 모두에 IAM 역할 App Hub 관리자가 있어야 합니다. 자세한 내용은 App Hub 역할 및 권한을 참조하세요.

App Hub 설정

이 섹션에서는 예시 App Hub 아키텍처를 만듭니다.

이 예시에서는 조직에 다음과 같이 프로젝트에 배포된 해당 인프라 리소스가 있는 3가지 서비스 프로젝트가 있습니다.

  • 서비스 프로젝트 1에는 서비스 1과 서비스 2의 두 가지 인프라 리소스가 있습니다.
  • 서비스 프로젝트 2에는 서비스 3, 워크로드 1, 워크로드 2의 3가지 인프라 리소스가 있습니다.
  • 서비스 프로젝트 3에는 서비스 4, 워크로드 3, 워크로드 4의 3가지 인프라 리소스가 있습니다.

예시를 만들기 위해 선택한 프로젝트에 이 섹션에 설명된 리소스가 포함되어 있는지 확인하거나 안내를 따라 예시를 조정할 준비를 합니다.

다음 섹션에는 App Hub 예시를 만들기 위한 안내가 포함되어 있습니다. 호스트 프로젝트를 만들고 서비스 프로젝트를 호스트 프로젝트에 추가한 후 애플리케이션을 만들고 서비스 및 워크로드를 애플리케이션에 연결합니다. 이 예시에는 3개의 서비스 프로젝트가 있지만 더 적게 또는 더 많이 추가할 수 있습니다.

이 예시에서는 개발자가 추가한 서비스 프로젝트가 이미 존재하고, 애플리케이션에 추가하는 서비스 및 워크로드가 포함되어 있다고 가정합니다. 예시를 만들기 전에 애플리케이션에 포함하려는 서비스와 워크로드가 포함된 서비스 프로젝트를 결정합니다.

App Hub 사용 설정

이 섹션에서는 새 호스트 프로젝트를 선택하거나 만들고, App Hub API를 사용 설정하고, 조직의 개인 사용자에게 적절한 역할과 권한을 부여합니다. 또한 서비스 프로젝트를 호스트 프로젝트에 연결합니다.

Console

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

    프로젝트 선택자로 이동

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

  3. 필요한 API를 사용 설정합니다.

    API 사용 설정

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

    프로젝트 생성자가 아니면 프로젝트에서 적합한 주 구성원에 대해 필수 권한을 부여해야 합니다. 예를 들어 주 구성원은 Google 계정(최종 사용자)이거나 서비스 계정(애플리케이션 및 컴퓨팅 워크로드)일 수 있습니다. 튜토리얼을 완료하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

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

      IAM으로 이동

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

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

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

    5. App Hub 관리자 역할을 선택하고 저장을 클릭합니다.

    6. 각 App Hub 서비스 프로젝트에서 동일한 사용자에게 App Hub 관리자 역할을 부여합니다.

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

    설정으로 이동

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

  7. 다음 중 하나를 수행합니다.

    • 프로젝트 목록에서 서비스 프로젝트로 추가할 프로젝트의 체크박스를 선택합니다.
    • 프로젝트를 검색한 다음 서비스 프로젝트로 추가할 프로젝트를 선택합니다.
  8. 선택을 클릭합니다. 연결된 서비스 프로젝트 테이블에 선택한 서비스 프로젝트가 표시됩니다.

  9. 닫기를 클릭합니다.

gcloud

  1. Google Cloud 콘솔에서 Cloud Shell을 활성화합니다.

    Cloud Shell 활성화

    Google Cloud 콘솔 하단에서 Cloud Shell 세션이 시작되고 명령줄 프롬프트가 표시됩니다. Cloud Shell은 Google Cloud CLI가 사전 설치된 셸 환경으로, 현재 프로젝트의 값이 이미 설정되어 있습니다. 세션이 초기화되는 데 몇 초 정도 걸릴 수 있습니다.

  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. 방금 만든 호스트 프로젝트에서 App Hub API를 사용 설정합니다.

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

    프로젝트 생성자가 아니면 프로젝트에서 적합한 주 구성원에 대해 필수 권한을 부여해야 합니다. 예를 들어 주 구성원은 Google 계정(최종 사용자)이거나 서비스 계정(애플리케이션 및 컴퓨팅 워크로드)일 수 있습니다. 튜토리얼을 완료하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

    1. 원하는 경우 호스트 프로젝트의 App Hub 관리자 역할인 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 형식입니다(예: robert.smith@example.com).

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

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

      다음을 바꿉니다.

      • SERVICE_PROJECT_1: 이 예시에서 3개의 서비스 프로젝트 중 첫 번째입니다.
      • SERVICE_PROJECT_2: 이 예시에서 3개의 서비스 프로젝트 중 두 번째입니다.
      • SERVICE_PROJECT_3: 이 예시에서 3개의 서비스 프로젝트 중 세 번째입니다.
  6. App Hub 호스트 프로젝트에 서비스 프로젝트를 추가합니다.

    gcloud apphub service-projects add SERVICE_PROJECT_1 \
        --project=HOST_PROJECT_ID
    
    gcloud apphub service-projects add SERVICE_PROJECT_2 \
        --project=HOST_PROJECT_ID
    
    gcloud apphub service-projects add SERVICE_PROJECT_3 \
        --project=HOST_PROJECT_ID
    

애플리케이션 만들기

아직 애플리케이션이 없는 경우 서비스 및 워크로드를 위한 컨테이너가 될 애플리케이션을 만듭니다.

Console

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

    애플리케이션으로 이동

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

  4. 리전을 선택합니다.

  5. 애플리케이션 이름을 입력하고 계속을 클릭합니다.

  6. 속성 추가 섹션에 표시 이름을 입력합니다.

  7. 원하는 경우 다음 필드에 애플리케이션에 대한 세부정보를 추가합니다. 자세한 내용은 이 문서에서 기존 App Hub 애플리케이션 업데이트를 참조하세요.

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

gcloud

  1. APPLICATION_NAME이라는 새 애플리케이션을 만들고 표시 이름인 APPLICATION_DISPLAY_NAME을 지정합니다. --scope-type 플래그는 애플리케이션에 등록할 수 있는 서비스 및 워크로드를 정의합니다. REGIONAL만 지원되므로, 애플리케이션과 동일한 리전의 서비스 및 워크로드만 등록할 수 있습니다.

    gcloud apphub applications create APPLICATION_NAME \
      --display-name='APPLICATION_DISPLAY_NAME' \
      --scope-type=REGIONAL \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    다음을 바꿉니다.

    • APPLICATION_NAME: 애플리케이션의 이름입니다. 이름은 공백이 없는 소문자 영숫자 문자를 포함해야 합니다.
    • APPLICATION_DISPLAY_NAME: 애플리케이션의 표시 이름입니다.
    • REGION: 애플리케이션의 리전입니다. 여기에 us-east1 값을 지정합니다.
  2. 호스트 프로젝트의 애플리케이션을 나열합니다.

    gcloud apphub applications list \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    출력은 다음과 비슷합니다.

    ID: APPLICATION_NAME
    DISPLAY_NAME: APPLICATION_DISPLAY_NAME
    CREATE_TIME: 2023-10-31T18:33:48
    
  3. 생성한 애플리케이션의 세부정보를 가져옵니다.

    gcloud apphub applications describe APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

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

    createTime: '2023-10-31T18:33:48.199394108Z'
    displayName: APPLICATION_DISPLAY_NAME
    name: projects/HOST_PROJECT_ID/locations/REGION/applications/APPLICATION_NAME
    scope:
      type: REGIONAL
    state: ACTIVE
    uid: [APPLICATION_UID]
    updateTime: '2023-10-31T18:33:48.343303819Z'
    
    

기존 App Hub 애플리케이션 업데이트

애플리케이션을 만든 후 애플리케이션의 속성을 업데이트할 수도 있습니다.

Console

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

    애플리케이션으로 이동

  2. 애플리케이션 목록에서 업데이트할 애플리케이션에 대해 수정을 클릭합니다.

  3. 필요에 따라 필드를 수정하고 저장을 클릭합니다.

  4. 선택사항: 중요도 목록에서 애플리케이션의 중요도를 표시하려면 다음 중 하나를 선택합니다.

    • 미션 크리티컬
    • 높음
    • 중간
    • 낮음
  5. 선택사항: 환경 필드에서 소프트웨어 수명 주기 단계를 표시하려면 다음 중 하나를 선택합니다.

    • 프로덕션
    • 스테이징
    • 개발
    • 테스트
  6. 선택사항: 개발자 소유자, 운영자 소유자, 비즈니스 소유자의 필요에 따라 세부정보를 추가합니다. 표시 이름을 추가하는 경우 소유자의 이메일 주소를 입력해야 합니다.

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

  8. 저장을 클릭합니다.

gcloud

  1. criticality-type, environment-type, 소유자 유형 속성으로 애플리케이션을 업데이트합니다.

    gcloud apphub applications update APPLICATION_NAME \
      --criticality-type='CRITICALITY_LEVEL' \
      --environment-type='ENVIRONMENT' \
      --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=REGION
    

    다음을 바꿉니다.

    • CRITICALITY_LEVEL: 애플리케이션, 서비스 또는 워크로드가 비즈니스 운영에 얼마나 중요한지 나타냅니다. 다음 값 중 하나를 제공합니다.
      • MISSION_CRITICAL
      • HIGH
      • MEDIUM
      • LOW
    • ENVIRONMENT: 소프트웨어 수명 주기의 단계를 나타냅니다. 다음 값 중 하나를 제공합니다.
      • PRODUCTION
      • STAGING
      • DEVELOPMENT
      • TEST
    • DISPLAY-NAME-DEVELOPER, DISPLAY-NAME-OPERATOR, DISPLAY-NAME-BUSINESS: 각각 개발자, 운영자, 비즈니스 소유자의 표시 이름입니다.
    • EMAIL-NAME-DEVELOPER, EMAIL-NAME-OPERATOR, EMAIL-NAME-BUSINESS: 각각 개발자, 운영자, 비즈니스 소유자의 이메일 주소입니다. 이러한 값은 username@yourdomain 형식이어야 합니다(예: robert.smith@example.com).
  2. environment-type 속성 값이 PRODUCTION인 애플리케이션을 나열합니다.

    gcloud apphub applications list \
        --filter='attributes.environment.type=PRODUCTION' \
        --project=HOST_PROJECT_ID \
        --location=REGION
    

    출력은 다음과 비슷합니다.

    ID: APPLICATION_NAME
    DISPLAY_NAME: APPLICATION_DISPLAY_NAME
    CREATE_TIME: 2023-10-31T18:33:48
    

서비스 및 워크로드 등록

인프라 서비스 및 워크로드를 애플리케이션에 등록하면 서비스 및 워크로드는 App Hub 리소스로 등록됩니다. 자리표시자를 사용하여 gcloud CLI로 애플리케이션을 만드는 경우 3개의 서비스 프로젝트의 서비스 및 워크로드는 다음과 같습니다.

  • 서비스 프로젝트 1에는 서비스 1과 서비스 2의 두 가지 인프라 리소스가 있습니다.
  • 서비스 프로젝트 2에는 서비스 3, 워크로드 1, 워크로드 2의 3가지 인프라 리소스가 있습니다.
  • 서비스 프로젝트 3에는 서비스 4, 워크로드 3, 워크로드 4의 3가지 인프라 리소스가 있습니다.

Console

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

    애플리케이션으로 이동

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

  3. 등록하려는 각 서비스 또는 워크로드에 대해 다음을 수행합니다.

    1. 서비스 및 워크로드 탭에서 서비스/워크로드 등록을 클릭합니다.
    2. 서비스 또는 워크로드 등록 창의 서비스 또는 워크로드 선택 섹션에서 서비스 또는 워크로드를 선택하고 계속을 클릭합니다.
    3. 속성 추가 섹션에서 서비스 또는 워크로드의 이름을 입력합니다.
    4. 원하는 경우 다음 필드에 서비스 또는 워크로드에 대한 세부정보를 추가합니다. 자세한 내용은 이 문서에서 기존 App Hub 애플리케이션 업데이트를 참조하세요. 중요도환경 필드에 지정된 값 중 하나를 제공해야 하지만 이 값은 애플리케이션을 만들 때 설정한 값과 다를 수 있습니다.
    5. 등록을 클릭합니다.
    6. 페이지를 새로고침하여 서비스 또는 워크로드의 등록 상태등록됨으로 업데이트됩니다. 등록 상태에 대한 자세한 내용은 App Hub의 속성 및 속성을 참조하세요.

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 편집자 역할이 있는 사용자로 바꿉니다. 이 값은 username@yourdomain 형식입니다(예: robert.smith@example.com).

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

    gcloud apphub discovered-workloads list \
      --filter='workload_properties.gcp_project=projects/SERVICE_PROJECT_2' \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    출력은 다음과 비슷합니다. 여기에는 등록되지 않은 MIG가 포함됩니다.

    ID: [DISCOVERED_WORKLOAD_ID_1]
    WORKLOAD_REFERENCE: {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/regions/REGION/instanceGroups/testing-mig-1'}
    WORKLOAD_PROPERTIES: {'gcpProject': 'projects/SERVICE_PROJECT_2', 'location': 'REGION'}
    
    ID: [DISCOVERED_WORKLOAD_ID_2]
    WORKLOAD_REFERENCE: {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/regions/REGION/instanceGroups/testing-mig-2'}
    WORKLOAD_PROPERTIES: {'gcpProject': 'projects/SERVICE_PROJECT_2', 'location': 'REGION'}
    

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

  3. 이전 단계의 워크로드를 애플리케이션에 등록합니다.

    gcloud apphub applications workloads create WORKLOAD_NAME \
      --discovered-workload='projects/HOST_PROJECT_ID/locations/REGION/discoveredWorkloads/DISCOVERED_WORKLOAD_ID_2' \
      --display-name='mywebserver-deployment1' \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    다음을 바꿉니다.

    • WORKLOAD_NAME: 워크로드를 등록할 이름입니다.
    • DISCOVERED_WORKLOAD_ID_2: 이전 단계의 출력의 워크로드 ID입니다.
  4. 이전 두 단계를 반복하여 서비스 프로젝트 3에서 원하는 워크로드를 필터링하고 등록합니다.

  5. 선택사항: criticality-type, environment-type, 소유자 속성으로 워크로드를 업데이트할 수 있습니다.

    gcloud apphub applications workloads update WORKLOAD_NAME \
      --application=APPLICATION_NAME \
      --criticality-type='CRITICALITY_LEVEL' \
      --environment-type='ENVIRONMENT' \
      --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=REGION
    

    criticality-typeenvironment-type에 지정된 값 중 하나를 제공해야 하지만 이 값은 애플리케이션을 만들 때 설정한 값과 다를 수 있습니다.

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

    gcloud apphub applications workloads list \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    출력은 다음과 비슷합니다.

    ID: WORKLOAD_NAME
    DISPLAY_NAME: mywebserver-deployment1
    WORKLOAD_REFERENCE: {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_2_NUMBER]/regions/REGION/instanceGroups/testing-mig-2'}
    CREATE_TIME: 2023-10-31T18:34:23
    

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

  7. 호스트 프로젝트에 연결된 서비스 프로젝트 1의 전달 규칙을 사용하여 탐색된 서비스를 나열합니다. 이 명령어는 애플리케이션에 등록할 수 있는 서비스를 반환합니다.

    gcloud apphub discovered-services list \
      --filter='service_properties.gcp_project=projects/SERVICE_PROJECT_1 AND service_reference.uri~"forwardingRules"' \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    출력은 다음과 비슷합니다.

    ID: [DISCOVERED_SERVICE_ID_1]
    SERVICE_REFERENCE: {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/REGION/forwardingRules/testing-forwarding-rule-1'}
    SERVICE_PROPERTIES: {'gcpProject': 'projects/SERVICE_PROJECT_1', 'location': 'REGION'}
    
    ID: [DISCOVERED_SERVICE_ID_2]
    SERVICE_REFERENCE: {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/REGION/forwardingRules/testing-forwarding-rule-2'}
    SERVICE_PROPERTIES: {'gcpProject': 'projects/SERVICE_PROJECT_1', 'location': 'REGION'}
    

    다음 단계에서 사용할 출력에서 서비스 ID DISCOVERED_SERVICE_ID_2를 복사합니다.

  8. 서비스 프로젝트 1의 전달 규칙인 testing-forwarding-rule-2를 서비스로 등록합니다.

    gcloud apphub applications services create SERVICE_NAME \
      --discovered-service='projects/HOST_PROJECT_ID/locations/REGION/discoveredServices/DISCOVERED_SERVICE_ID_2' \
      --display-name='mywebserver-service1' \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    다음을 바꿉니다.

    • SERVICE_NAME: 서비스를 등록할 이름입니다.
    • DISCOVERED_SERVICE_ID_2: 이전 단계 출력의 서비스 ID입니다.
  9. 이전 단계를 반복하여 서비스를 나열하고, 해당 서비스를 필터링하고, 서비스 프로젝트 1, 2, 3에 서비스를 등록합니다.

  10. criticality-type 속성과 environment-type 속성으로 서비스를 업데이트합니다.

    gcloud apphub applications services update SERVICE_NAME \
      --criticality-type='CRITICALITY_LEVEL' \
      --environment-type='ENVIRONMENT' \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID  \
      --location=REGION
    
  11. APPLICATION_NAME 애플리케이션 및 HOST_PROJECT_ID 호스트 프로젝트에서 등록된 서비스를 나열합니다.

    gcloud apphub applications services list \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

    출력은 각 서비스에 대해 다음과 비슷합니다.

    ID: SERVICE_NAME
    DISPLAY_NAME: mywebserver-service1
    SERVICE_REFERENCE: {'uri': '//compute.googleapis.com/projects/[SERVICE_PROJECT_1_NUMBER]/regions/REGION/forwardingRules/testing-forwarding-rule-2'}
    CREATE_TIME: 2023-11-01T21:38:08
    

    등록되었지만 분리된 서비스는 SERVICE_REFERENCE 필드에 빈 값으로 표시됩니다.

  12. APPLICATION_NAME 애플리케이션 및 HOST_PROJECT_ID 호스트 프로젝트의 서비스를 environment-type 속성이 PRODUCTION으로 설정된 서비스로 필터링합니다.

    gcloud apphub applications services list \
      --filter='attributes.environment.type=PRODUCTION' \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

App Hub 설정 절차가 완료되었습니다.

서비스 프로젝트 추가 또는 삭제

서비스 프로젝트 연결을 수정하여 다양한 인프라 리소스를 애플리케이션으로 그룹화하게 할 수 있습니다.

Console

호스트 프로젝트에 서비스 프로젝트를 추가하려면 다음 안내를 따르세요.

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

    설정으로 이동

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

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

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

  5. 닫기를 클릭합니다.

호스트 프로젝트에서 서비스 프로젝트를 삭제하려면 다음 안내를 따르세요.

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

    설정으로 이동

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

  3. 프로젝트 분리를 클릭합니다. 연결된 서비스 프로젝트 테이블이 새로고침되어 호스트 프로젝트에 연결된 상태로 유지되는 프로젝트만 표시됩니다.

gcloud

호스트 프로젝트에 서비스 프로젝트를 추가하려면 다음 안내를 따르세요.

gcloud apphub service-projects add SERVICE_PROJECT_ID \
   --project=HOST_PROJECT_ID
SERVICE_PROJECT_ID를 호스트 프로젝트에 추가할 서비스 프로젝트의 이름으로 바꿉니다. 호스트 프로젝트에서 서비스 프로젝트를 삭제하려면 다음 안내를 따르세요.
gcloud apphub service-projects remove SERVICE_PROJECT_ID \
   --project=HOST_PROJECT_ID

기존 애플리케이션, 서비스 및 워크로드 보기

프로젝트의 애플리케이션을 보고 애플리케이션의 서비스와 워크로드를 나열할 수 있습니다.

Console

  • 프로젝트의 애플리케이션을 보려면 Google Cloud 콘솔에서 App Hub 애플리케이션 페이지로 이동합니다.

    애플리케이션으로 이동

  • 서비스 및 워크로드를 나열하려면 다음 안내를 따르세요.

    애플리케이션

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

      애플리케이션으로 이동

    2. 애플리케이션 이름을 클릭합니다. 애플리케이션에 등록된 서비스 및 워크로드 목록이 있는 페이지가 나타납니다.

    3. 선택사항: 서비스 또는 워크로드를 필터링하려면 다음 안내를 따르세요.

      1. 필터 필드에서 중요도와 같은 필터를 선택합니다.
      2. 값으로 높음을 선택합니다.
        애플리케이션에 등록된 중요도가 높은 서비스 및 워크로드 목록이 나타납니다.

    서비스 및 워크로드

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

      서비스 및 워크로드로 이동

    2. 리전 목록에서 서비스 및 워크로드를 보려는 리전을 선택합니다. 예를 들어 us-east1을 선택합니다.
      서비스 및 워크로드 페이지에는 us-east1과 연결된 서비스 프로젝트의 모든 서비스 및 워크로드가 표시됩니다.

    3. 선택사항: 서비스 또는 워크로드를 필터링하려면 다음 안내를 따르세요.

      1. 필터 필드에서 환경과 같은 필터를 선택합니다.
      2. 값으로 프로덕션을 선택합니다.
        애플리케이션에 등록된 프로덕션 환경의 서비스 및 워크로드 목록이 표시됩니다.

gcloud

프로젝트에서 애플리케이션을 보려면 다음 안내를 따르세요.

gcloud apphub applications list \
    --project=HOST_PROJECT_ID \
    --location=REGION

애플리케이션에 등록된 서비스를 나열하려면 다음 단계를 따르세요.

gcloud apphub applications services list \
    --application=APPLICATION_NAME \
    --project=HOST_PROJECT_ID \
    --location=REGION

애플리케이션에 등록된 워크로드를 나열하려면 다음 안내를 따르세요.

gcloud apphub applications workloads list \
    --application=APPLICATION_NAME \
    --project=HOST_PROJECT_ID \
    --location=REGION

삭제

기존 애플리케이션을 정리하고 호스트 프로젝트에서 서비스 프로젝트 연결을 삭제하여 프로젝트와 연결된 리소스를 삭제합니다. 그러면 서비스 프로젝트의 리소스 자동 검색이 중지됩니다.

이렇게 하려면 먼저 애플리케이션에 등록된 워크로드 및 서비스를 삭제해야 합니다.

Console

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

    애플리케이션으로 이동

  2. 애플리케이션 이름을 클릭합니다. 애플리케이션에 등록된 서비스 및 워크로드 목록이 나타납니다.

  3. 서비스 또는 워크로드 등록 취소

    1. 서비스 및 워크로드 탭의 등록된 서비스 및 워크로드 섹션에서 등록 취소하려는 서비스 또는 워크로드의 이름을 클릭합니다.
    2. 등록된 서비스 또는 워크로드에 대해 열리는 페이지에서 등록 취소를 클릭하여 서비스 또는 워크로드를 발견됨 리소스로 업데이트합니다.
      서비스 및 워크로드 탭에서 워크로드가 등록 취소되었다는 알림이 표시됩니다.
    3. 각 서비스 및 워크로드에 대해 이 안내를 반복합니다.
  4. App Hub 애플리케이션 페이지로 이동합니다.

    애플리케이션으로 이동

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

  6. 애플리케이션 세부정보가 있는 페이지에서 삭제를 클릭합니다.

  7. 이 문서에서 서비스 프로젝트 추가 또는 삭제의 안내에 따라 호스트 프로젝트에서 서비스 프로젝트를 삭제합니다.

gcloud

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

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

    gcloud apphub applications workloads delete WORKLOAD_NAME \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

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

  3. 이전 명령어를 반복하여 애플리케이션에서 등록된 나머지 워크로드를 삭제합니다.

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

    gcloud apphub applications services list \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    
  5. 애플리케이션에서 서비스 등록을 취소합니다.

    gcloud apphub applications services delete SERVICE_NAME \
      --application=APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    

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

  6. 이전 명령어를 반복하여 애플리케이션에서 등록된 나머지 서비스를 등록 취소합니다.

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

    gcloud apphub applications delete APPLICATION_NAME \
      --project=HOST_PROJECT_ID \
      --location=REGION
    
  8. 호스트 프로젝트에서 서비스 프로젝트를 삭제합니다.

    gcloud apphub service-projects remove SERVICE_PROJECT_ID \
      --project=HOST_PROJECT_ID
    
  9. 이전 명령어를 반복하여 호스트 프로젝트에서 모든 서비스 프로젝트를 제거합니다.

다음 단계