이메일을 통해 알림을 수신하도록 클러스터 구성


이 튜토리얼에서는 이메일을 통해 Google Kubernetes Engine(GKE) 클러스터 알림을 수신하도록 Application Integration을 구성하는 방법을 보여줍니다.

Pub/Sub 트리거와의 통합을 만들어 GKE 클러스터에서 알림을 수신하는 기존 주제를 리슨합니다. 그런 다음 데이터 매핑 및 데이터 변환기 태스크를 사용하여 Pub/Sub 메시지를 변환하고 일반 텍스트 이메일 본문을 빌드할 수 있습니다.

목표

  • GKE에서 외부 알림을 수신하고 변환하는 Application Integration 애플리케이션을 만듭니다.
  • Pub/Sub 알림을 이메일로 전송하는 이메일 보내기 태스크를 작성합니다.

비용

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

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

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

시작하기 전에

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the GKE, Application Integration and Pub/Sub APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the GKE, Application Integration and Pub/Sub APIs.

    Enable the APIs

  8. GKE 클러스터 알림을 사용 설정합니다.
  9. 프로젝트에서 Application Integration을 처음 사용하는 경우 Application Integration을 설정했는지 확인하세요.

필요한 역할

service-PROJECT_NUMBER@gcp-sa-integrations.iam.gserviceaccount.com 에 클러스터 알림에 대한 이메일 알림을 설정하는 데 필요한 권한이 있는지 확인하려면 관리자에게 service-PROJECT_NUMBER@gcp-sa-integrations.iam.gserviceaccount.com 에 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

GKE 클러스터의 클러스터 알림 설정

Pub/Sub를 사용하여 GKE 클러스터에 대한 알림을 수신하려면 클러스터 알림 수신을 따르세요.

새 통합 만들기

새 통합을 만들려면 다음 단계를 수행합니다.

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

    Application Integration으로 이동

  2. 탐색 메뉴에서 통합을 클릭합니다. 통합 페이지가 표시됩니다.

  3. 통합 만들기를 클릭합니다.

  4. 통합 이름에 만들려는 통합의 이름을 입력합니다.

  5. 사용 설정한 리전이 여러 개인 경우 통합할 리전을 선택할 수 있는 드롭다운 옵션이 표시됩니다. 사용 설정된 리전이 하나만 있으면 기본적으로 해당 리전으로 설정되고 드롭다운이 표시되지 않습니다.

    참고: 리전 드롭다운에는 Google Cloud 프로젝트에 프로비저닝된 리전만 나열됩니다. 새 리전을 프로비저닝하려면 상자 하단에 표시된 리전 사용 설정을 클릭합니다.

  6. 만들기를 클릭하여 통합 편집기를 엽니다.

Pub/Sub 트리거 추가 및 구성

통합에 Pub/Sub 트리거를 추가하려면 다음 단계를 따르세요.

  1. 통합 편집기에서 트리거를 선택하여 사용 가능한 트리거 목록을 표시합니다.

  2. Pub/Sub 트리거 요소를 클릭하여 디자이너에 배치합니다.

  3. 통합 편집기에서 Pub/Sub 트리거 요소를 클릭하여 트리거 구성 창을 봅니다.

  4. Pub/Sub 주제 필드에 다음 형식으로 트리거로 리슨할 주제를 지정합니다.

    projects/PROJECT_ID/topics/TOPIC_ID
    

    다음을 바꿉니다.

  • PROJECT_ID: 주제가 생성된 Google Cloud 프로젝트입니다.

  • TOPIC_ID: 환경 설정에서 만든 Pub/Sub 주제의 ID입니다.

    예를 들어 프로젝트 이름이 my-project이고 주제 이름을 gke-notifications로 지정했으면 다음을 입력합니다.

    projects/my-project/topics/gke-notifications
    

    Google Cloud 프로젝트에서 사용 가능한 모든 주제를 보려면 주제에서 주제 이름 열을 참조하세요. Pub/Sub 트리거 구성 창에는 Pub/Sub 메시지 저장을 위해 트리거 출력 필드에 변수가 자동으로 입력됩니다.

데이터 매핑 태스크 추가 및 구성

데이터 매핑 태스크는 Pub/Sub 알림에서 관련 변수를 추출하는 데 도움이 됩니다. Pub/Sub 메시지 JSON 파일을 입력으로 사용하고 변수를 출력으로 추출합니다.

데이터 매핑 태스크를 구성하려면 다음 안내를 따르세요.

  1. 태스크를 선택하여 사용 가능한 태스크 목록을 표시합니다.

  2. 데이터 매핑 요소를 클릭하고 통합 편집기에 배치합니다.

  3. 디자이너에서 데이터 매핑 태스크를 클릭하여 태스크의 구성 창을 엽니다.

  4. Pub/Sub 트리거에서 데이터 매핑으로 에지 연결을 추가하려면 Pub/Sub 트리거의 제어 지점 위로 포인터를 가져간 다음 데이터 매핑 태스크의 제어 지점으로 선을 드래그합니다. 에지는 Pub/Sub 트리거에서 데이터 매핑 태스크로의 제어 흐름을 나타냅니다.

  5. 데이터 매핑 편집기 열기를 클릭합니다. 데이터 매핑 편집기를 사용하면 사용 가능한 변환 함수를 사용하여 선택한 출력 변수에 입력 변수를 매핑할 수 있습니다. 그러면 출력을 다른 통합 태스크 또는 트리거에 변수로 사용할 수 있습니다. Application Integration의 변수에 대한 자세한 내용은 변수를 참조하세요.

    이 튜토리얼에서는 다음 단계에 따라 CloudPubSubMessage를 입력으로 사용하여 매핑을 만듭니다.

    1. 변수 목록에서 CloudPubSubMessage JSON 변수를 확장하고 CloudPubSubMessage.data 변수를 첫 번째 입력 행으로 드래그합니다.
    2. 변환된 데이터 값을 저장할 새 출력 변수를 만들려면 출력 열의 첫 번째 행을 클릭합니다. 그런 후 다음 작업을 수행합니다.
      1. 이름 필드에 message_data를 입력합니다.
      2. 변수 유형 목록에서 통합의 출력을 선택합니다.
      3. 데이터 유형 목록에서 문자열을 선택합니다.
      4. 만들기를 클릭합니다. message_data 변수가 출력에 표시됩니다.
    3. 변수 목록에서 CloudPubSubMessage.attributes 변수를 입력 열의 두 번째 행으로 드래그합니다.
    4. 출력 열의 두 번째 행을 클릭하여 클러스터 속성이 있는 JSON 페이로드 값을 저장할 새 출력 변수를 만듭니다. 다음 입력란을 작성하세요.

      1. 이름 필드에 attributes를 입력합니다.
      2. 변수 유형 목록에서 없음을 선택합니다.
      3. 데이터 유형 목록에서 JSON을 선택합니다.
      4. JSON 스키마 옵션에서 JSON 스키마 입력을 선택하고 다음 페이로드를 붙여넣습니다.

        {
          "$schema": "http://json-schema.org/draft-07/schema#",
          "type": "object",
          "properties": {
            "cluster_name": {
              "type": "string"
            },
            "payload": {
              "type": "string"
            },
            "project_id": {
              "type": "string"
            },
            "cluster_location": {
              "type": "string"
            },
            "type_url": {
              "type": "string"
            }
          }
        }
        
      5. 만들기를 클릭합니다. attributes 변수가 출력에 표시됩니다. 속성 변수가 다음과 유사한지 확인합니다.

        Application Integration 로컬 변수

    5. 입력 열의 세 번째 행을 클릭하고 변수 창에서 attributes.cluster_name을 선택합니다. 이전 단계에서 입력한 스키마에서 정의된 5가지 속성을 모두 보려면 속성을 입력해야 할 수 있습니다.

    6. 출력 열에서 해당 행을 클릭하여 클러스터 이름 속성의 값을 저장할 새 출력 변수를 만듭니다. 다음 입력란을 작성하세요.

      1. 이름 필드에 cluster_name를 입력합니다.
      2. 변수 유형 목록에서 통합의 출력을 선택합니다.
      3. 데이터 유형 목록에서 문자열을 선택합니다.
      4. 만들기를 클릭합니다. cluster_name 변수가 출력에 표시됩니다.
    7. project_id, cluster_location, type_url, payload에 대해 ef 단계를 반복합니다.

    8. 매핑이 완료되면 데이터 매핑 편집기를 닫습니다. 모든 변경사항이 자동 저장됩니다.

데이터 변환기(스크립트) 태스크 추가 및 구성

데이터 변환기 태스크는 데이터 매핑 태스크에서 추출된 변수를 입력으로 받아 최종 사용자가 사용할 메시지 본문으로 변환합니다.

데이터 변환기 태스크를 구성하려면 다음 단계를 따르세요.

  1. 태스크를 선택하여 사용 가능한 태스크 목록을 표시합니다.
  2. 데이터 변환기(스크립트) 요소를 클릭하고 통합 편집기에 배치합니다.
  3. 디자이너에서 데이터 변환기 태스크를 클릭하여 태스크의 구성 창을 엽니다.
  4. 데이터 매핑 태스크에서 데이터 변환기 태스크로 에지 연결을 추가하려면 데이터 매핑의 제어 지점 위로 포인터를 가져간 다음 데이터 변환기 태스크의 제어 지점으로 선을 드래그합니다. 에지는 데이터 매핑 태스크에서 데이터 변환기 태스크로의 제어 흐름을 나타냅니다.
  5. 데이터 변환기 편집기 열기를 클릭합니다. 데이터 변환기 편집기를 사용하면 커스텀 Jsonnet 템플릿을 작성, 수정, 평가하여 통합에서 데이터 매핑을 수행할 수 있습니다. 그러면 출력을 다른 통합 태스크 또는 트리거에 변수로 사용할 수 있습니다. 이 변환기 태스크에 관한 자세한 내용은 데이터 변환기 태스크를 참조하세요. 이 빠른 시작에서는 다음 단계에 따라 스크립트를 만듭니다.

    1. 변수 왼쪽 패널에서 만들기를 클릭합니다. 그러면 오른쪽에 변수 만들기 패널이 열립니다. 다음 입력란을 작성하세요.

      • 이름: full_message를 입력합니다.
      • 변수 유형 드롭다운 상자에서 Output from integration를을선택합니다.
      • 데이터 유형 드롭다운 상자에서 String을 선택합니다.
      • 만들기를 클릭하여 변수를 만들고 창을 닫습니다. 새 full_message 변수가 변수 목록에 나타납니다.
    2. 스크립트를 선택합니다.

    3. 클러스터에서 알림을 전송할 때 다음 스크립트 예시를 메시지 본문의 템플릿으로 사용하세요.

      local message_data = std.extVar("message_data");
      local cluster_name = std.extVar("cluster_name");
      local project_id = std.extVar("project_id");
      local cluster_location = std.extVar("cluster_location");
      local type_url = std.extVar("type_url");
      local payload = std.extVar("payload");
      
      {full_message: "Project ID: " + project_id + "\n" +
                    "Cluster Name: " + cluster_name + "\n" +
                    "Location: " + cluster_location + "\n" +
                    "Event Type: " + type_url + "\n" +
                    "Message: " + message_data + "\n" +
                    "Payload: " + std.manifestJson(std.parseJson(payload))}
      
    4. 매핑이 완료되면 데이터 매핑 편집기를 닫습니다. 모든 변경사항이 자동 저장됩니다.

이메일 보내기 태스크 추가 및 구성

이메일 보내기 태스크를 구성하려면 다음 안내를 따르세요.

  1. 통합 편집기에서 태스크를 선택하여 사용 가능한 태스크 목록을 표시합니다.
  2. 이메일 보내기 태스크 요소를 클릭하고 통합 편집기에 배치합니다.
  3. 데이터 변환기 태스크에서 이메일 보내기 태스크로 에지 연결을 추가하려면 데이터 변환기 태스크의 제어 지점 위로 포인터를 가져간 다음 이메일 보내기 태스크의 제어 지점으로 선을 드래그합니다. 에지는 데이터 변환기 태스크에서 이메일 보내기 태스크로의 제어 흐름을 나타냅니다.
  4. 디자이너에서 이메일 보내기 요소를 클릭하여 태스크 구성 창을 엽니다. 다음 속성을 설정합니다.
    1. 수신자: 이메일 주소를 입력합니다. 이 이메일을 사용하여 통합 완료를 확인합니다.
    2. 제목: GKE Notifications를 입력합니다.
    3. 일반 텍스트 본문: 앞서 데이터 변환기 태스크에서 만든 full_message 변수를 선택합니다.
    4. 나머지 옵션은 기본 구성에서 남겨둘 수 있습니다.

속성 변경사항은 자동으로 저장되며 캔버스는 다음과 같이 표시됩니다.

Application Integration 캔버스

통합 테스트

새 통합을 테스트하려면 통합 다이어그램 상단의 탐색 메뉴로 이동하여 테스트를 클릭합니다. 오른쪽에 패널이 열립니다. JSON 값 추가 섹션에서 다음 샘플 Pub/Sub 메시지를 사용할 수 있습니다.

{
  "data": "Node pool projects/my-project/locations/us-central1-c/clusters/cluster-1/nodePools/default-pool is upgrading to version 1.29.1-gke.1589017.",
  "attributes": {
    "cluster_location": "us-central1-c",
    "cluster_name": "cluster-1",
    "payload": "{\"resourceType\":\"NODE_POOL\",\"operation\":\"operation-upgrade\",\"operationStartTime\":\"2024-05-07T20:09:35.528855756Z\",\"currentVersion\":\"1.28.7-gke.1026000\",\"targetVersion\":\"1.29.1-gke.1589017\",\"resource\":\"projects/my-project/locations/us-central1-c/clusters/cluster-1/nodePools/default-pool\"}",
    "project_id": "my-project",
    "type_url": "type.googleapis.com/google.container.v1beta1.UpgradeEvent"
  }
}

통합 테스트 버튼을 클릭하면 이메일 보내기 태스크에서 구성한 이메일 주소로 이메일이 전송됩니다.

통합 게시

이 통합을 성공적으로 테스트한 후 통합의 게시를 클릭하여 메시지 처리를 시작합니다.

통합의 DRAFT 버전만 수정하고 통합의 ACTIVE 버전만 실행할 수 있습니다. 통합을 수정하려면 통합 디자이너 페이지에서 수정 사용 설정을 클릭한 다음 초안 버전을 만듭니다. 자세한 내용은 통합 수정 잠금을 참조하세요.

삭제

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

프로젝트 삭제

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

개별 리소스 삭제

  1. Application Integration을 삭제합니다.

  2. Pub/Sub 주제를 삭제합니다.

다음 단계