Active Assist에 서버리스 파이프라인 사용

Last reviewed 2021-06-09 UTC

이 문서는 Google Cloud 조직에서 Active Assist를 사용하기 위해 자동화 파이프라인을 빌드하려는 엔터프라이즈 아키텍트 및 소프트웨어 개발자를 대상으로 합니다. 이 문서는 Active Assist를 사용하여 규모에 맞게 클라우드 범위를 최적화하기 위해 기업에 사용될 수 있는 아키텍처 패턴을 설명하는 시리즈 중 일부입니다. 이 시리즈는 다음 문서로 구성됩니다.

이 튜토리얼에서는 Google Cloud 서버리스 기술을 사용하여 Active Assist 권장사항을 검색하기 위해 자동화 파이프라인을 빌드하는 방법을 보여줍니다. 권장사항은 기업에서 설정된 비즈니스 규칙을 기반으로 합니다. 이 튜토리얼에서 설정하는 자동화 파이프라인은 팀에서 주도하는 검토 및 작동 프로세스를 유지하면서 규모에 맞게 Active Assist로 작업하는 데 도움을 줍니다. 이러한 접근 방법은 해당 기업에서 Active Assist 포트폴리오 사용의 규모를 조정하길 원하지만 팀 내에서 검토 및 작동 프로세스를 제어하길 원하는 경우에 유용합니다. 이 방법은 지속적 통합 및 지속적 배포(CI/CD) 파이프라인 사용에 대한 대안을 제시합니다.

이 튜토리얼에 설명된 아키텍처는 일반적인 형태이며, 다른 서버리스 제품들과 함께 작동하도록 확장할 수 있습니다. 이 튜토리얼에서는 사용자가 다음과 같은 Google Cloud 기술에 익숙하다고 가정합니다.

이 튜토리얼을 완료하려면 Slack 계정 또는 비슷한 알림 또는 티켓 처리 도구가 있어야 합니다. 이 도구를 머신에 설정하고 사용할 수 있도록 준비해야 합니다.

아키텍처

이 튜토리얼에 설명된 아키텍처는 모듈형이기 때문에 비즈니스 요구에 맞게 알림 구성요소를 채택할 수 있습니다. 이 튜토리얼에서는 알림을 생성하고 이를 Slack으로 전송하는 방법을 보여줍니다. 또한 알림을 Pub/Sub 또는 기타 알림 또는 티켓 처리 도구로 전송하도록 선택할 수 있습니다.

다음 다이어그램은 이 튜토리얼에서 사용하는 구성요소를 보여줍니다.

서버리스 파이프라인입니다.

이 아키텍처에는 다음과 같은 구성요소가 있습니다.

  • 스케줄러가 고정된 간격으로 트리거하는 Cloud Run 서비스입니다. 이 서비스는 Firestore 컬렉션에서 정의되고 저장되는 메타데이터(프로젝트 ID 및 추천자 유형)를 읽어서 Recommender API를 호출합니다.
  • Active Assist 권장사항이 푸시되고 처리되는 Pub/Sub 주제입니다.
  • Active Assist 권장사항을 파싱하는 보조 Cloud Run 서비스입니다. 이 서비스는 기업에서 정의된 비즈니스 규칙을 기반으로 권장사항이 처리되고 Firestore 컬렉션에 저장되는 방법을 결정합니다.
  • 비즈니스 메타데이터 및 비즈니스 규칙을 저장하기 위한 2개의 Firestore 컬렉션입니다. Firestore 컬렉션은 다음과 같이 작동합니다.
    • 첫 번째 컬렉션은 Active Assist 권장사항을 검색하는 것과 관련된 비즈니스 메타데이터를 저장합니다. 이 튜토리얼에서 recommendation type, Google Cloud project IDs, locations 속성은 비즈니스 메타데이터로 사용됩니다. 이러한 속성은 가져올 권장사항 유형을 결정하기 위해 recommendation-collector Cloud Run 서비스에서 사용됩니다.
    • 두 번째 컬렉션은 권장사항이 처리될 때 적용되는 비즈니스 규칙을 저장합니다.

목표

  • 샘플 프로젝트에 대해 Active Assist 권장사항을 검색하고 이를 Pub/Sub 주제로 푸시하기 위해 샘플 Cloud Run 서비스를 만듭니다.
  • 샘플 메타데이터와 비즈니스 규칙을 각각 저장하기 위해 2개의 Firestore 컬렉션을 만듭니다.
  • 이 튜토리얼에서 정의하는 샘플 비즈니스 규칙에 따라 권장사항을 처리하기 위해 두 번째 Cloud Run 서비스를 만듭니다.
  • Cloud Run 서비스가 샘플 Active Assist 권장사항을 전송할 Slack 채널을 만듭니다.
  • 샘플 Active Assist 권장사항으로 엔드 투 엔드 파이프라인을 테스트합니다.

비용

이 문서에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.

프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요. Google Cloud를 처음 사용하는 사용자는 무료 체험판을 사용할 수 있습니다.

이 문서에 설명된 태스크를 완료했으면 만든 리소스를 삭제하여 청구가 계속되는 것을 방지할 수 있습니다. 자세한 내용은 삭제를 참조하세요.

시작하기 전에

  1. In the Google Cloud console, go to the project selector page.

    Go to project selector

  2. Select or create a Google Cloud project.

  3. 권장사항 프로젝트에 대해 Google Cloud 프로젝트 ID를 기록해 둡니다. 환경 설정과 관련한 다음 섹션에서 이 ID가 필요합니다.
  4. API Cloud Build, Firestore, App Engine, Pub/Sub, Cloud Run, Cloud Scheduler, Cloud Source Repositories 사용 설정

    API 사용 설정

    이 튜토리얼에 대해 기본 애플리케이션 사용자 인증 정보를 사용합니다. 프로젝트에 사용자 인증 정보 추가 페이지에서 사용자 인증 정보를 만들라는 메시지가 표시되면 취소를 클릭합니다.
  5. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  6. 다음을 만듭니다.
    • 샘플 Slack 채널
    • recommendation-rules-engine으로 생성된 알림을 수신하기 위한 샘플 Slack 앱 및 수신되는 웹훅. 이 튜토리얼의 뒷 부분에서 엔진을 설정합니다.
    자세한 내용은 Slack 채널 만들기수신되는 웹훅을 사용하여 메시지 전송을 참조하세요.

    Slack 앱 및 수신되는 웹훅 URL을 만든 후에는 나중에 이 튜토리얼에 필요하므로 URL을 기록해 둡니다.

서버리스 파이프라인 빌드

이 섹션에서는 서버리스 파이프라인을 빌드하는 데 필요한 구성요소를 만듭니다. 이 플랫폼은 사용 패턴 및 시스템 측정항목을 기준으로 Active Assist 권장사항을 생성합니다. 생성된 권장사항에 따라 각 권장사항 범주에는 사용 데이터 및 측정항목 분석을 위해 과거의 다른 기본 기간이 사용될 수 있습니다.

기존 리소스 및 Active Assist 추천이 있는 샘플 Google Cloud 프로젝트가 있으면 제공된 샘플 코드에 대해 적합한 항목을 변경한 후 파이프라인을 실행하여 해당 추천을 처리할 수 있습니다.

Firestore 컬렉션 만들기

이 섹션에서는 2개의 Firestore 컬렉션을 만듭니다. 첫 번째 activeassist-metadata 컬렉션은 Active Assist 권장사항을 검색하는 것과 관련된 비즈니스 메타데이터를 저장합니다. 두 번째 activeassist-business-rules 컬렉션은 파이프라인이 권장사항을 처리할 때 적용되는 비즈니스 규칙을 저장합니다.

Active Assist 권장사항이 파싱될 때는 Firestore 컬렉션의 비즈니스 규칙에 따라 알림이 생성되고 전송되거나 권장사항이 관련 Google Cloud 리소스에 자동으로 적용됩니다.

activeassist-metadata 컬렉션 만들기

  1. Google Cloud Console에서 Firestore 페이지로 이동합니다.

    Firestore 열기

  2. 아직 없으면 Firestore 데이터베이스를 만듭니다. 또는 이미 Firestore 데이터베이스가 있으면 다음 단계로 건너뜁니다.

    데이터베이스를 만듭니다.

    1. 기본 모드 선택을 클릭하여 Firestore를 활성화합니다.
    2. Cloud Run 서비스가 실행되는 리전에 가까운 리전 위치를 선택합니다.
    3. 데이터베이스 만들기를 클릭합니다. 잠시 후에 구성이 완료됩니다.
  3. Firestore 페이지에서 컬렉션 시작을 클릭합니다.

  4. 컬렉션 ID 필드에서 activeassist-metadata를 입력합니다.

  5. 다음 표와 같이 필드를 채웁니다. 다음 필드를 추가하려면 필드 추가를 클릭합니다.

    필드 이름 필드 유형 필드 값 참고
    project string Stub-Project-ID 이 튜토리얼에서는 필드 값에 대해 스텁을 사용합니다. 기존 Google Cloud 프로젝트의 추천을 사용하려면 대신 프로젝트 ID를 입력합니다.
    locations array global 적절한 VM 크기 조정 권장사항과 같이 일부 권장사항은 리전 또는 영역과 관련된 것일 수 있습니다. IAM 권장사항과 같은 다른 권장사항은 전역적입니다.
    recommenderType string google.iam.policy.Recommender 해당 없음

  6. 필드가 채워졌으면 저장을 클릭합니다.

activeassist-business-rules 컬렉션 만들기

  1. 컬렉션 시작을 클릭합니다.
  2. 컬렉션 ID 필드에서 activeassist-business-rules를 입력합니다.

    다음 표와 같이 문서를 채웁니다. 다음 필드를 추가하려면 필드 추가를 클릭합니다.

    필드 이름 필드 유형 필드 값 참고
    action string Notify 값을 Apply로 설정하면 서비스가 권장사항을 적용하고 사용되지 않은 역할을 삭제합니다.
    projectId string Stub-Project-ID 이 튜토리얼에서는 스텁 권장사항이 사용됩니다. 기존 Google Cloud 프로젝트의 추천을 사용하려면 대신 프로젝트 ID를 입력합니다.
    projectNumber string 999999999 이 튜토리얼에서는 스텁 권장사항이 사용됩니다.

    기존 Google Cloud 프로젝트의 추천을 사용하려면 대신 프로젝트 번호를 입력합니다. 프로젝트 번호는 Google Cloud 콘솔 시작 페이지에서 찾을 수 있습니다.
    recommenderType string google.iam.policy.Recommender 해당 없음
    recommenderSubtype string REMOVE_ROLE 해당 없음
    slackWebhookURL string 이전 단계에서 생성한 Slack 웹훅 URL을 입력합니다. URL은 다음과 유사합니다.

    https://hooks.slack.com/services/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

    이 튜토리얼에서는 권장사항이 자동으로 적용되는지 또는 알림이 생성되고 Slack과 같은 플랫폼으로 전송되는지를 확인하기 위해 규칙을 생성하는 방법을 보여줍니다. 설정한 샘플 비즈니스 규칙의 평가에 따라 권장사항을 자동으로 적용하는 방법을 알아보려면 연관된 저장소를 참조하세요.

  3. 문서가 채워졌으면 저장을 클릭합니다.

예약된 Cloud Run 서비스 만들기

이 섹션에서는 Recommender API를 호출하고 활성 권장사항을 검색하는 recommendation-collector라는 예약된 Cloud Run 서비스를 만듭니다. Identity and Access Management Recommender API는 이 튜토리얼에서 Recommender API로 사용됩니다. 이 서비스는 검색할 권장사항을 확인하기 위해 만든 activeassist-metadata Firestore 컬렉션에서 메타데이터를 읽습니다.

  1. Cloud Shell에서 열기를 클릭하여 권장사항 관리자 프로젝트에 대해 Cloud Shell을 엽니다.

    Cloud Shell에서 열기

    Cloud Shell이 열리면 다음 권장사항이 실행됩니다.

    • GitHub 저장소 클론 명령어입니다.
    • 디렉터리 변경 명령어입니다.

    Cloud Shell에서 열기 대화상자가 나타나면 트러스트를 선택한 후 확인을 클릭합니다.

  2. 현재 권장사항 관리자 프로젝트의 프로젝트 ID 및 프로젝트 번호를 변수로 설정합니다.

    export RECO_MGR_PROJECT=PROJECT_ID
    gcloud config set project $RECO_MGR_PROJECT
    export RECO_MGR_PROJECT_NUMBER=$(gcloud projects describe $DEVSHELL_PROJECT_ID --format='value(projectNumber)')
    

    PROJECT_ID를 프로젝트 ID로 바꿉니다. 명령어를 입력한 후 메시지가 표시되면 승인을 클릭합니다.

  3. 배포 리전의 변수를 설정합니다.

    export REGION=us-central1
    

    이 튜토리얼에 us-central1 리전이 사용되더라도 Cloud Run을 사용할 수 있는 모든 리전을 사용할 수 있습니다.

  4. Docker 이미지에 대해 환경 변수를 만듭니다.

    export RECOMMENDER_IMAGE=gcr.io/$RECO_MGR_PROJECT/recommendation-collector:1.0
    
  5. Docker 이미지를 빌드하고 이를 Container Registry에 업로드합니다.

     gcloud builds submit --tag $RECOMMENDER_IMAGE
    
  6. 파이프라인에서 다른 Google Cloud 서비스와 상호작용하도록 recommendation-collector 서비스에 대해 서비스 계정을 만듭니다.

    gcloud iam service-accounts create recommendation-collector-sa \
      --description "Service Account that the recommendation-collector service uses to invoke other Google Cloud services" \
      --display-name "recommendation-collector-sa" \
      --project $RECO_MGR_PROJECT
    

    서비스 계정에 사전 정의된 역할을 할당하여 Cloud Run 서비스에 세부적인 권한을 부여하는 것이 좋습니다. 자세한 내용은 서비스 ID를 참조하세요.

  7. recommendation-collector 서비스의 서비스 계정에 Firestore 및 Recommender API에 대한 액세스 권한을 부여합니다.

    gcloud projects add-iam-policy-binding $RECO_MGR_PROJECT \
      --member serviceAccount:recommendation-collector-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --role roles/datastore.user
    gcloud projects add-iam-policy-binding $RECO_MGR_PROJECT \
      --member serviceAccount:recommendation-collector-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --role roles/pubsub.publisher
    
  8. 클론한 저장소에 제공된 샘플 stub을 사용하여 이 튜토리얼을 실행하는 경우 다음 단계로 건너뜁니다.

    기존 Google Cloud 프로젝트에 대해 생성된 추천을 사용하여 이 튜토리얼에서 파이프라인을 빌드하는 경우 2개의 Cloud Run 서비스를 실행하기 위해 생성한 서비스 계정에 IAM 권한을 할당해야 합니다.

    환경 변수 TEST_PROJECT_ID를 명령어를 실행하기 전 이 파이프라인을 실행할 프로젝트의 ID로 설정합니다.

    export TEST_PROJECT_ID=TEST_PROJECT_ID
    gcloud projects add-iam-policy-binding $TEST_PROJECT_ID \
      --member serviceAccount:recommendation-collector-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --role roles/recommender.iamAdmin
    gcloud projects add-iam-policy-binding $TEST_PROJECT_ID \
      --member serviceAccount:recommendation-collector-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --role roles/serviceusage.serviceUsageConsumer
    gcloud services enable recommender.googleapis.com --project $TEST_PROJECT_ID
    

    사용하는 프로젝트 ID가 Firestore 컬렉션을 만들 때 입력한 것과 일치하는지 확인합니다.

  9. 이 튜토리얼에서는 STUB_RECOMMENDATIONS라는 환경 변수로 서비스를 배포합니다. 이 변수를 사용하면 스텁을 사용하여 파이프라인을 테스트할 수 있습니다.

    Cloud Run 서비스를 배포합니다.

    gcloud run deploy recommendation-collector \
      --image=$RECOMMENDER_IMAGE \
      --no-allow-unauthenticated \
      --region $REGION \
      --platform managed \
      --service-account recommendation-collector-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --set-env-vars="STUB_RECOMMENDATIONS=true" \
      --project $RECO_MGR_PROJECT \
    

    시스템 프롬프트를 허용합니다.

    Google Cloud 프로젝트에 대해 생성된 Active Assist 추천을 사용하여 파이프라인을 실행하려면 배포하기 전 명령어에서 다음 줄을 삭제합니다.

    --set-env-vars="STUB_RECOMMENDATIONS=true"
    

recommender-collector service를 실행하도록 Cloud Scheduler 작업 설정

  1. Cloud Shell에서 recommendation-collector 서비스 실행을 위해 사용할 Cloud Scheduler 작업에 대해 서비스 계정을 만듭니다.

    gcloud iam service-accounts create recommender-scheduler-sa \
      --description "Service Account used by Cloud Scheduler to invoke the recommender-parser service" \
      --display-name "recommender-scheduler-sa" \
      --project $RECO_MGR_PROJECT
    
  2. Cloud Run 서비스 호출을 위해 사용 설정하도록 서비스 계정에 run/invoker 역할을 부여합니다.

    gcloud run services add-iam-policy-binding recommendation-collector \
      --member=serviceAccount:recommender-scheduler-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --role=roles/run.invoker \
      --region=$REGION \
      --platform=managed
    
  3. recommendation-collector 서비스 URL을 가져옵니다.

    export RECOMMENDER_SERVICE_URI=`gcloud run services describe recommendation-collector \
      --platform managed \
      --project $RECO_MGR_PROJECT \
      --region $REGION \
      --format="value(status.url)"`/run
    
  4. recommender-iam-scheduler라는 Cloud Scheduler 작업을 만듭니다.

    gcloud scheduler jobs create http recommender-iam-scheduler \
      --project $RECO_MGR_PROJECT \
      --time-zone "America/Los_Angeles" \
      --schedule="0 */3 * * *" \
      --uri=$RECOMMENDER_SERVICE_URI \
      --description="Scheduler job to invoke recommendation pipeline" \
      --oidc-service-account-email="recommender-scheduler-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com" \
      --headers="Content-Type=application/json" \
      --http-method="POST"
    

    위치와 일치하는 시간대를 설정합니다. 시간대 값 형식은 tz 데이터베이스를 기반으로 합니다.

    자세한 내용은 gcloud scheduler jobs create http를 참조하세요.

    Cloud Scheduler 작업이 recommendation-collector 서비스에 대해 /run 경로를 호출합니다.

    --schedule="0 */3 * * *" 플래그를 설정하면 Scheduler 작업이 3시간 마다 실행됩니다. 요구사항에 따라 이 설정을 변경할 수 있습니다. 자세한 내용은 크론 작업 일정 구성을 참조하세요.

권장사항 처리를 위해 권장사항 규칙 엔진 만들기

이 섹션에서는 recommendation-collector 서비스가 수집하는 권장사항 처리를 위해 recommendation-rules-engine이라는 두 번째 Cloud Run 서비스를 만듭니다. recommendation-rules-engine 서비스는 새 권장사항이 activeassist-recommendations 주제에 푸시될 때 Pub/Sub에 의해 호출됩니다.

이 서비스는 activeassist-business-rules 컬렉션에 정의한 비즈니스 규칙을 기반으로 권장사항을 파싱합니다.

  1. Cloud Shell에서 recommendation-rules-engine 디렉터리를 엽니다.

    cd ../recommendation-rules-engine
    
  2. Docker 이미지에 대해 환경 변수를 만듭니다.

    export RULES_ENGINE_IMAGE=gcr.io/$RECO_MGR_PROJECT/recommendation-rules-engine:1.0
    
  3. Docker 이미지를 빌드하고 이를 Container Registry에 업로드합니다.

    gcloud builds submit --tag $RULES_ENGINE_IMAGE
    
  4. 파이프라인에서 다른 Google Cloud 서비스와 상호작용하도록 recommendation-rules-engine 서비스에 대해 서비스 계정을 만듭니다.

    gcloud iam service-accounts create recommendation-rules-sa \
     --description "Service Account that recommendation-rules-engine uses to invoke other Google Cloud services" \
     --display-name "recommendation-rules-sa" \
     --project $RECO_MGR_PROJECT
    
  5. recommendation-rules-engine 서비스의 서비스 계정에 Firestore에 대한 액세스 권한을 부여합니다.

    gcloud projects add-iam-policy-binding $RECO_MGR_PROJECT \
      --member serviceAccount:recommendation-rules-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --role roles/datastore.user
    

    이 튜토리얼에 대해 제공된 스텁을 사용하는 경우 다음 단계로 이동합니다.

    이 튜토리얼에 제공된 스텁 대신 Google Cloud 프로젝트에 대해 생성된 추천을 사용하여 파이프라인을 테스트하는 경우 프로젝트에 대해 규칙 엔진 서비스 계정 액세스를 허용하도록 다음 명령어를 실행합니다.

    gcloud projects add-iam-policy-binding $TEST_PROJECT_ID \
      --member serviceAccount:recommendation-rules-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --role roles/serviceusage.serviceUsageConsumer
    gcloud projects add-iam-policy-binding $TEST_PROJECT_ID \
      --member serviceAccount:recommendation-rules-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --role roles/recommender.iamAdmin
    gcloud projects add-iam-policy-binding $TEST_PROJECT_ID \
      --member serviceAccount:recommendation-rules-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --role roles/resourcemanager.projectIamAdmin
    
  6. Cloud Run 서비스를 배포합니다.

    gcloud run deploy recommendation-rules-engine \
      --image=$RULES_ENGINE_IMAGE \
      --no-allow-unauthenticated \
      --region $REGION \
      --platform managed \
      --service-account recommendation-rules-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --project $RECO_MGR_PROJECT
    

    시스템 프롬프트를 허용합니다.

  7. recommendation-rules-engine URL을 가져옵니다.

    export RECOMMENDER_SERVICE_RULES_URI=`gcloud run services describe recommendation-rules-engine \
      --platform managed \
      --project $RECO_MGR_PROJECT \
      --region $REGION \
      --format="value(status.url)"`/process
    

    이 단계에서 검색하는 URL은 다음 단계에서 만드는 Pub/Sub 주제에서 새 권장사항을 사용할 수 있을 때 호출됩니다.

활성 권장사항에 대한 Pub/Sub 주제 만들기

이 섹션에서는 Recommender API를 호출하여 recommender-collector 서비스가 검색하는 Active Assist 권장사항에 대해 Pub/Sub 주제를 만듭니다.

  1. Cloud Shell에서 Pub/Sub 주제를 만듭니다.

    gcloud pubsub topics create activeassist-recommendations
    
  2. recommendation-rules-engine Cloud Run 서비스 호출을 위해 사용할 Pub/Sub의 서비스 계정을 만듭니다.

    gcloud iam service-accounts create recommendation-engine-sub-sa \
      --description "Service Account used by Pub/Sub to push recommendations to the recommendation-rules-engine service" \
      --display-name "recommendation-engine-sub-sa" \
      --project $RECO_MGR_PROJECT
    
  3. Pub/Sub 서비스 계정은 메시지 게시 및 recommendation-rules-engine 서비스 호출을 위해 필요한 역할과 연결되어야 합니다.

    gcloud projects add-iam-policy-binding $RECO_MGR_PROJECT \
      --member serviceAccount:recommendation-engine-sub-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --role roles/run.invoker \
      --project $RECO_MGR_PROJECT
    

Pub/Sub 주제에 대한 구독 만들기

  1. recommendation-rules-engine 서비스에 대해 구독을 만듭니다.

    # grant Pub/Sub the permission to create tokens
    PUBSUB_SERVICE_ACCOUNT="service-$RECO_MGR_PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com"
    gcloud projects add-iam-policy-binding $RECO_MGR_PROJECT \
      --member="serviceAccount:$PUBSUB_SERVICE_ACCOUNT"\
      --role='roles/iam.serviceAccountTokenCreator'
    # configure the subscription push identity
    gcloud pubsub subscriptions create active-assist-recommendations-for-rules-engine \
      --topic=activeassist-recommendations \
      --topic-project=$RECO_MGR_PROJECT \
      --push-auth-service-account=recommendation-engine-sub-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --ack-deadline=60 \
      --push-endpoint=$RECOMMENDER_SERVICE_RULES_URI
    
  2. 만든 recommendation-engine-sub-sa 서비스 계정이 recommendation-rules-engine 서비스를 호출하도록 허용합니다.

    gcloud run services add-iam-policy-binding recommendation-rules-engine \
      --member=serviceAccount:recommendation-engine-sub-sa@$RECO_MGR_PROJECT.iam.gserviceaccount.com \
      --role=roles/run.invoker \
      --region=$REGION \
      --platform=managed
    

스텁을 사용하여 엔드 투 엔드 테스트 실행

Active Assist 권장사항은 사용 패턴 및 시스템 측정항목을 기반으로 플랫폼에서 생성됩니다. 각 권장사항 범주에는 권장사항 생성의 기반이 된 사용 데이터 및 측정항목 분석을 위해 과거의 다른 기본 기간이 사용될 수 있습니다. 예를 들어 IAM 권장사항은 이전 90일의 사용 패턴을 기반으로 플랫폼에서 생성됩니다.

엔드 투 엔드 파이프라인을 테스트하기 위해 이 튜토리얼을 위해 클론한 저장소는 엔드 투 엔드 파이프라인을 실행하기 위해 사용되는 샘플 권장사항(스텁)을 제공합니다.

이 섹션에서는 다음과 같은 작업을 수행하게 됩니다.

  • 스텁 권장사항을 검사합니다.
  • 파이프라인을 수동으로 호출합니다.
  • 알림이 생성되었고 생성된 Slack 채널에 전송되었는지 확인합니다.
  1. 저장소에 제공된 샘플 권장사항을 검토합니다.

    cat ../recommendation-collector/stub.json
    

    이 파일은 샘플 권장사항에 roles/gkehub.connect라는 샘플 역할에 대한 REMOVE 작업을 제공합니다.

  2. 다음 예약된 실행을 기다리는 대신 Cloud Scheduler가 작업을 즉시 실행하도록 다음 명령어를 실행합니다.

    gcloud scheduler jobs run recommender-iam-scheduler
    
  3. Cloud Scheduler 콘솔 페이지의 recommender-iam-scheduler 작업의 결과 페이지에서 결과가 성공인지 확인합니다.

    각 서비스가 실행되는 단계를 자세히 보려면 recommendation-collector 서비스 및 recommendation-rules-engine 서비스에 대해 Cloud Run 서비스 로그를 확인할 수도 있습니다.

  4. 이 튜토리얼에서 빌드하는 서버리스 엔드 투 엔드 파이프라인이 성공적으로 실행되면 사용자가 삭제할 권장 역할 결합의 세부정보가 포함된 Slack 알림이 생성됩니다. 다음은 수신되는 알림의 예시입니다.

    Project xxxxxxxx\
    **Impact**: SECURITY\
    This role has not been used during the observation window.\
    **Role**: roles/gkehub.connect\
    **Member**:
    serviceAccount:sample-sa@recommendation-sample.iam.gserviceaccount.com\
    **Action**: remove
    

삭제

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

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

    리소스 관리로 이동

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