클러스터 알림


이 페이지에서는 Google Kubernetes Engine(GKE)이 사용 가능한 업그레이드 및 보안 게시판과 같은 클러스터 구성과 관련된 이벤트 정보를 사용하여 클러스터 알림을 Pub/Sub에 게시하는 방법을 설명합니다.

클러스터 알림을 설정하는 방법을 알아보려면 클러스터 알림 수신을 참조하세요.

개요

중요한 예약 업그레이드 또는 사용 가능한 보안 게시판과 같이 GKE 클러스터와 관련된 특정 이벤트가 발생하면 GKE는 해당 이벤트에 대한 알림을 구성한 Pub/Sub 주제에 메시지로 게시합니다. Pub/Sub 구독에서 이러한 알림을 수신하고 , 타사 서비스와 통합하고, 수신하려는 알림 유형을 필터링할 수 있습니다.

혜택

Pub/Sub를 사용하여 클러스터 알림을 수신할 때 이점은 다음과 같습니다.

  • 클러스터에 예약된 업데이트에 대한 사전 정보를 받으므로 테스트 및 검증을 더욱 효율적으로 계획할 수 있도록 하며 원활하고 예측 가능한 업그레이드 프로세스를 보장할 수 있습니다.
  • 클러스터 관련 보안 게시판이 실행될 때 알림이 표시되어 정확한 위험 및 영향 정보가 제공됩니다.
  • 업그레이드할 수 있는 새 GKE 버전이 있으면 알림이 전송됩니다. 이전에는 언제 새 GKE 버전이 출시됐는지 확인하려면 GKE 출시 노트 또는 GKE API를 확인해야 했습니다.
  • GKE 또는 사용자가 클러스터 업그레이드를 시작할 때 알림이 표시되어 클러스터의 백그라운드 작업을 더 자세히 확인할 수 있습니다.
  • Pub/Sub는 확장성이 뛰어나므로 수신 알림을 유연하게 처리할 수 있습니다. 예를 들어 Slack과 통합하여 Slack 채널로 알림을 전달하거나 Cloud Functions를 시작하여 커스텀 프로세스를 실행할 수 있습니다.
  • 커스텀 프로세스가 필요한 경우(예: 스테이징을 프로덕션 워크플로로 조정하여 업그레이드를 테스트하고 인증) 알림을 사용하여 이러한 워크플로를 자동으로 트리거할 수 있습니다.

업그레이드 알림 유형

GKE는 다음 클러스터 알림 유형을 전송합니다.

자신에게만 관련 이벤트 알림이 표시되도록 수신되는 알림을 필터링할 수 있습니다. 클러스터 알림을 사용 설정할 때 --notification-config 플래그에 filter 값을 지정하거나 Pub/Sub 구독을 구성하여 클러스터 알림을 필터링할 수 있습니다.

SecurityBulletinEvent

GKE에서 클러스터 구성 또는 버전과 직접 연관되는 보안 게시판이 실행될 때 GKE는 SecurityBulletinEvent 알림을 전송하여, 취약점, 영향, 수행 가능한 조치에 대한 정보를 제공합니다.

UpgradeAvailableEvent

출시 채널에서 새 버전을 사용할 수 있게 되면 GKE는 해당 출시 채널의 클러스터에 UpgradeAvailableEvent 알림을 보내 새 버전을 사용할 수 있음을 클러스터에 알립니다. 이 알림은 패치 버전에 대해 일주일 전에 사전 알림을 제공하며, 채널의 버전에 따라 최소 2~4주 정도의 사전 알림을 제공합니다. 자세한 내용은 채널에 사용 가능한 버전을 참조하세요.

출시 채널에 없는 클러스터의 경우 GKE는 현재 마이너 버전 및 다음 마이너 버전에 대한 패치를 포함하여 클러스터가 업그레이드할 수 있는 새 버전에 대한 UpgradeAvailableEvent 알림을 전송합니다.

Windows Server 노드 풀을 사용하는 경우 Windows 버전 정보가 UpgradeAvailableEvent 알림의 일부로 전송됩니다.

UpgradeEvent

사용자 또는 GKE가 업그레이드를 시작하면 GKE가 UpgradeEvent 알림을 전송하여 업그레이드가 시작되었음을 알립니다. 이상적으로는 사전에 업그레이드를 수행하거나 유지보수 기간 설정과 같은 필요한 준비 작업을 수행할 수 있도록 UpgradeAvailableEvent 알림 유형을 사용해서 예정된 업그레이드를 확인할 수 있습니다.

업그레이드 작업 시작 시 UpgradeEvent 알림이 전송됩니다. 작업 ID는 메시지에 전달됩니다.

알림 필터링

원하는 알림만 수신되도록 클러스터 알림을 필터링할 수 있습니다. 다음 방법 중 하나로 필터링을 적용할 수 있습니다.

GKE에서 알림 필터링

--notification-config 플래그에 filter에 대한 값을 지정하여 클러스터 알림을 사용 설정할 때 하나 이상의 사용 가능한 알림 유형에 대해 필터링을 설정할 수 있습니다. filter는 수신하려는 알림 유형에 대해 파이프(|)로 구분된 목록을 가져옵니다.

예를 들어 filter="UpgradeEvent|SecurityBulletinEvent"를 지정하면 GKE가 UpgradeEventSecurityBulletinEvent 알림 유형에 대해서만 알림을 전송합니다.

filter를 사용하는 알림 필터링은 다음과 같은 이점이 있습니다.

  • 특정 구문을 사용하지 않고 알림 유형을 필터링하므로 쉽게 사용할 수 있습니다.
  • 필터로 제외한 알림은 Pub/Sub로 전송되지 않으므로 전달되지 않은 메시지에 대해 비용이 부과되지 않습니다.
  • 언제든지 필터 구성을 수정할 수 있습니다.

GKE에서 필터 알림에 대한 자세한 내용은 클러스터 알림 수신을 참조하세요.

Pub/Sub에서 알림 필터링

Pub/Sub는 구독에서 필터링 구문을 사용한 메시지 필터링을 지원합니다. 이 방법을 사용하면 GKE가 모든 알림 유형을 Pub/Sub 주제로 전달합니다. Pub/Sub는 구독 구성을 기반으로 메시지를 필터링하고 수신하려는 메시지를 전달합니다.

예를 들어 구독에서 다음 구문을 사용하여 UpgradeEventUpgradeAvailableEvent 알림을 필터링할 수 있습니다.

attributes.type_url = "type.googleapis.com/google.container.v1beta1.UpgradeEvent" OR "type.googleapis.com/google.container.v1beta1.UpgradeAvailableEvent"

구독으로 필터링되지 않은 전달되지 않은 메시지에 대해서는 여전히 비용이 부과됩니다. 또한 구독을 구성한 다음에는 필터를 수정할 수 없습니다. 하지만 GKE에서 필터링할 때보다 필터링 구문 확장성이 뛰어납니다.

Pub/Sub 구독 필터링에 대한 자세한 내용은 메시지 필터링을 참조하세요.

Pub/Sub 메시지 사용

Pub/Sub 메시지에는 data(문자열) 및 attributes(문자열 간 매핑)의 두 가지 필드가 포함되어 있습니다.

GKE 알림의 경우 data 필드에 인간이 읽을 수 있는 정보가 포함됩니다. attributes 필드에는 알림 유형, 프로젝트 ID, 클러스터 이름, 클러스터 위치와 같은 일반적인 알림 정보가 포함됩니다. attributes.payload 필드는 보안 게시판 세부정보와 같은 특정 알림 정보가 포함된 JSON으로 파싱 가능한 문자열입니다.

알림에는 항상 다음 속성이 포함됩니다.

속성 설명 예시
project_id 클러스터를 소유한 프로젝트 번호입니다. 123456789
cluster_location 클러스터의 위치입니다. us-central1-c example-location
cluster_name 클러스터의 이름입니다. example-cluster
type_url 알림의 유형입니다. type.googleapis.com/google.container.v1beta1.UpgradeEvent
payload 알림별 정보를 전달하는 JSON 파싱 가능 문자열입니다.
{ "resourceType":"MASTER",
  "operation":"operation-1595889094437-87b7254a",
  "operationStartTime":"2020-07-27T22:31:34.437652293Z",
  "currentVersion":"1.15.12-gke.2",
  "targetVersion":"1.15.12-gke.9"}

GKE는 항상 beta 알림 유형을 전송합니다. 하지만 사용 가능한 경우 해당 GA 알림 유형을 표시하도록 페이로드를 파싱할 수 있습니다.

샘플 클러스터 알림 메시지

data 필드의 텍스트 외에도 GKE가 Pub/Sub로 전송하는 각 메시지에는 attributes.type_urlattributes.payload 필드의 특정 값이 포함됩니다. 다음 표에서는 각 알림 유형에 대해 수신할 수 있는 정보 예시를 보여줍니다.

SecurityBulletinEvent

다음은 SecurityBulletinEvent 메시지의 몇 가지 샘플 출력입니다.

속성
type_url type.googleapis.com/google.container.v1beta1.SecurityBulletinEvent
payload
{    "resourceTypeAffected":"RESOURCE_TYPE_CONTROLPLANE",
         "bulletinId":"GCP-2021-001",
         "cveIds":[
            "CVE-2021-3156"
         ],
         "severity":"Medium",
         "briefDescription":"A vulnerability was recently discovered in the Linux utility sudo, described in CVE-2021-3156, that may allow an attacker with unprivileged local shell access on a system with sudo installed to escalate their privileges to root on the system.",
         "affectedSupportedMinors":["1.18", "1.19"],
         "patchedVersions":["1.18.9-gke.1900", "1.19.9-gke.1900"],
         "suggestedUpgradeTarget":"1.19.9-gke.1900",
         "bulletinUri":"https://cloud.google.com/anthos/clusters/docs/security-bulletins#gcp-2021-001"
      }
      

UpgradeAvailableEvent

다음은 UpgradeAvailableEvent 메시지의 몇 가지 샘플 출력입니다.

속성
type_url type.googleapis.com/google.container.v1beta1.UpgradeAvailableEvent
payload
{ "version":"1.17.15-gke.800",
  "resourceType":"MASTER",
  "releaseChannel":{"channel":"RAPID"},
  "windowsVersions": [
    {
      "imageType": "WINDOWS_SAC",
      "osVersion": "10.0.18363.1198",
      "supportEndDate": {
        "day": 10,
        "month": 5,
        "year": 2022
      }
    },
    {
      "imageType": "WINDOWS_LTSC",
      "osVersion": "10.0.17763.1577",
      "supportEndDate": {
        "day": 9,
        "month": 1,
        "year": 2024
      }
    }
  ]
}

      

UpgradeEvent

다음은 UpgradeEvent 메시지의 몇 가지 샘플 출력입니다.

속성
type_url type.googleapis.com/google.container.v1beta1.UpgradeEvent
payload
{ "resourceType":"MASTER",
  "operation":"operation-1595889094437-87b7254a",
  "operationStartTime":"2020-07-27T22:31:34.437652293Z",
  "currentVersion":"1.15.12-gke.2",
  "targetVersion":"1.15.12-gke.9"}
      

다음 단계