클러스터 알림


이 페이지에서는 Google Kubernetes Engine(GKE)에서 클러스터 알림을 기본적으로 Cloud Logging에, 원하는 경우 Pub/Sub에 게시하는 방법을 설명합니다. 이러한 알림에는 사용 가능하거나 진행 중인 업그레이드, 보안 게시판, 지원 종료일과 같은 클러스터 구성과 관련된 이벤트에 대한 정보가 포함됩니다.

개요

중요한 사용 가능한 업그레이드 또는 보안 게시판과 같은 GKE 클러스터와 관련된 특정 이벤트가 발생하면 GKE는 이러한 알림을 Cloud Logging으로 전송합니다. Cloud Logging에서 이러한 로그를 찾으려면 Cloud Logging에서 클러스터 알림 보기를 참조하세요.

또한 GKE는 이러한 이벤트에 대한 알림을 구성한 Pub/Sub 주제에 메시지로 게시합니다. Pub/Sub 구독에서 이러한 알림을 수신하고 서드 파티 서비스와 통합하고 수신하려는 알림 유형을 필터링할 수 있습니다. Pub/Sub으로 클러스터 알림을 설정하는 방법에 대한 자세한 내용은 Pub/Sub을 통해 클러스터 알림 수신을 참조하세요.

이점

클러스터 알림은 다음과 같은 이점을 제공합니다.

  • 클러스터 관련 보안 게시판이 실행될 때 알림이 표시되어 정확한 위험 및 영향 정보가 제공됩니다.
  • 클러스터에 사용할 수 있는 새 GKE 버전이 있으면 알림이 전송되므로 테스트 및 검증을 더욱 효율적으로 계획하고 원활하고 예측 가능한 업그레이드 프로세스를 보장할 수 있습니다. 이전에는 새 GKE 버전이 ��시된 시기를 확인하려면 GKE 출시 노트 또는 GKE API를 확인해야 했습니다.
  • GKE 또는 사용자가 클러스터 업그레이드를 시작할 때와 업그레이드 작업이 완료되면 알림이 표시되므로 이를 통해 클러스터의 백그라운드 작업을 더 자세히 확인할 수 있습니다.
  • 클러스터에서 지원 종료 시점에 도달했거나 지원 종료가 임박한 GKE 부 버전을 실행하면 알림이 표시됩니다.
  • 사용할 Cloud Logging 또는 Pub/Sub을 선택할 수 있습니다.

    • 클러스터 알림은 기본적으로 Cloud Logging으로 전송됩니다. 로그 쿼리 및 보기, 로그 기반 알림 정책 구성을 포함하여 Cloud Logging의 모든 기능을 사용할 수 있습니다.
    • Pub/Sub는 확장성이 뛰어나므로 수신 알림을 유연하게 처리할 수 있습니다. 예를 들어 Slack과 통합하여 알림을 Slack 채널로 전달하거나 Cloud Run Functions를 시작하여 커스텀 프로세스를 실행할 수 있습니다. 커스텀 프로세스가 필요한 경우(예: 스테이징을 프로덕션 워크플로로 조정하여 업그레이드를 테스트하고 인증) 알림을 사용하여 이러한 워크플로를 자동으로 트리거할 수 있습니다.

업그레이드 알림 유형

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

Cloud Logging에서 클러스터 알림을 보는 경우 Cloud Logging 기능을 사용하여 로그를 필터링할 수 있습니다. Pub/Sub을 사용하는 경우 수신되는 알림을 필터링하여 관련 이벤트에 대한 알림만 받을 수 있습니다.

SecurityBulletinEvent

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

UpgradeAvailableEvent

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

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

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

UpgradeEvent

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

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

UpgradeInfoEvent

GKE는 다음 섹션에 설명된 다양한 유형의 이벤트에 대한 UpgradeInfoEvent 알림을 전송합니다.

특정 유형의 UpgradeInfoEvent를 필터링하는 방법에 대한 자세한 내용은 UpgradeInfoEvent 클러스터 알림 필터링을 참조하세요.

업그레이드 작업 완료

GKE에서 클러스터의 컨트롤 플레인이나 노드를 자동 또는 수동으로 업그레이드하면 작업 완료를 알리는 알림이 전송됩니다. 작업은 다음 상태 중 하나로 완료됩니다.

  • SUCCEEDED: GKE에서 컨트롤 플레인이나 노드를 업그레이드했습니다.
  • FAILED: GKE에서 컨트롤 플레인이나 노드를 업그레이드할 수 없습니다.
  • CANCELED: 기술적 또는 비즈니스적인 이유로 인해 GKE에서 업그레이드 작업을 취소했거나 개발자가 업그레이드 작업을 취소했습니다.

알림을 사용하여 업그레이드 작업 성공을 확인합니다.

지원 종료 시점에 도달하거나 지원 종료에 임박한 부 버전

클러스터에서 표준 지원 종료 또는 확장 지원 종료에 가깝거나 이러한 마일스톤에 도달한 GKE 부 버전을 실행하면 GKE는 클러스터 컨트롤 플레인이나 노드를 지원되는 다음 부 버전으로 업그레이드해야 한다는 알림을 전송합니다. 지원되는 부 버전을 실행하면 보안 패치, 버그 수정, 지원을 계속 받을 수 있습니다. 클러스터에서 계속 부 버전을 실행하면 GKE는 지원 종료 30일 전에 알림 하나를, 지원 종료 시 알림 하나를 전송합니다.

클러스터의 여러 구성요소가 영향을 받을 수 있고 클러스터에서 동시에 서로 다른 부 버전을 실행할 수 있지만 GKE는 클러스터 수준 알림을 전송합니다. 부 버전의 표준 지원이 종료되고 지원되는 버전으로 업그레이드하기 위해 준비할 시간이 필요한 경우 확장 출시 채널로 전환하여 장기적 지원을 받으면 됩니다. 그렇지 않으면 GKE에서 지원 종료 시 자동 업그레이드를 예약합니다. 이러한 알림을 통해 지원 종료 정책 시행에 대비할 수 있습니다.

알림에는 다음 세부정보가 포함됩니다.

  • 영향을 받는 클러스터
  • 지원 종료 시점에 도달했거나 지원 종료에 임박한 현재 버전
  • 지원 종료일

GKE 부 버전 지원 타임라인에 대한 자세한 내용은 GKE 부 버전 수명 주기를 참조하세요.

확장 지원 기간 중에 새 Container-Optimized OS 마일스톤으로 변경된 새 패치 버전

확장 지원 기간 중에 클러스터가 확장 채널에 등록되어 있고 GKE 부 버전에서 사용하는 Container-Optimized OS 마일스톤이 부 버전보다 먼저 지원 종료 시점에 도달하면 GKE에서 클러스터 알림을 전송합니다. 확장 채널에서 새 마일스톤을 사용하는 첫 번째 패치 버전이 사용 가능하게 되면 GKE는 이 알림을 전송합니다.

이 알림에는 다음 세부정보가 포함됩니다.

  • 영향을 받는 클러스터
  • 새 마일스톤을 사용하는 패치 버전
  • 기존 마일스톤과 새 마일스톤
  • GKE에서 노드의 자동 패치 업그레이드를 일시중지하는 방법

새 마일스톤을 사용하는 패치 버전은 결국 클러스터의 패치 자동 업그레이드 대상이 되고 노드 자동 업그레이드가 일시중지됩니다. 클러스터 관리자는 다음 중 수행할 다음 단계를 결정해야 합니다.

  • 수동으로 클러스터 노드를 다음 Container-Optimized OS 마일스톤을 사용하는 다음 패치 버전으로 업그레이드합니다.
  • 수동으로 클러스터를 다음 부 버전으로 업그레이드합니다.
  • GKE가 확장 지원 종료 시점에 클러스터를 다음 부 버전으로 업그레이드할 때까지 패치 업그레이드를 건너뜁니다.

자세한 내용은 Container-Optimized OS 마일스톤이 부 버전의 확장 지원 종료 전에 지원 종료에 도달을 참조하세요.

Cloud Logging에서 클러스터 알림 보기

GKE 클러스터 로그를 보려면 로그 액세스를 참조하세요.

이러한 로그를 저장하지 않으려면 제외 필터를 구성하면 됩니다.

모든 유형의 클러스터 알림을 보려면 다음 필터를 사용하여 Cloud Logging에서 로그를 봅니다.

logName=projects/PROJECT_ID/logs/container.googleapis.com%2Fnotifications

PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿉니다.

특정 클러스터 알림 유형(예: UpgradeEvent)을 보려면 다음 필터를 사용하여 로그를 봅니다.

jsonPayload.@type=type.googleapis.com/google.container.v1beta1.NOTIFICATION_TYPE

NOTIFICATION_TYPE을 보려는 로그의 클러스터 알림 유형으로 바꿉니다.

UpgradeInfoEvent 클러스터 알림 필터링

업그레이드 작업이 완료된 위치에 대한 알림과 같은 특정 UpgradeInfoEvent를 보려면 다음 필터를 사용하여 로그를 봅니다.

jsonPayload.@type=type.googleapis.com/google.container.v1beta1.UpgradeInfoEvent
jsonPayload.eventType=EVENT_TYPE

EVENT_TYPE를 다음 중 하나로 바꿉니다.

Pub/Sub에 대한 알림 필터링

클러스터 알림을 필터링하여 Pub/Sub에서 원하는 알림만 수신할 수 있습니다. 다음 방법 중 하나를 사용하여 Pub/Sub에 알림 필터링을 적용할 수 있습니다.

Cloud Logging에서 알림을 보고 필터링하려면 Cloud Logging에서 클러스터 알림 보기를 참조하세요.

GKE에서 Pub/Sub에 대한 알림 필터링

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

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

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

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

GKE에서 알림을 필터링하는 방법은 Pub/Sub를 통해 클러스터 알림 수신을 참조하세요.

GKE에서 알림을 필터링해도 Cloud Logging에 표시되는 로그는 영향을 받지 않습니다.

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
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에서 Cloud Logging 또는 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"}
      

UpgradeInfoEvent

노드 풀 업그레이드 예시와 같이 업그레이드 작업 완료UpgradeInfoEvent 메시지의 경우 출력은 다음과 비슷합니다.

속성
type_url type.googleapis.com/google.container.v1beta1.UpgradeInfoEvent
payload
{ "currentVersion":"1.31.1-gke.1846000",
  "endTime":"2024-11-06T17:12:54.111640650Z",
  "operation":"operation-1730912205658-de2f88a8-6290-4718-b2c1-fb19611060b8",
  "resource":"projects/PROJECT_ID/locations/CLUSTER_LOCATION/clusters/CLUSTER_NAME/nodePools/NODE_POOL_NAME",
  "resourceType":"NODE_POOL"
  "startTime":"2024-11-06T16:56:45.658321844Z",
  "state":"SUCCEEDED",
  "targetVersion":"1.31.1-gke.2105000"}
      

이 출력은 지원 종료 시점에 도달하거나 종료 시점이 임박한 부 버전에 대한 메시지인 경우 또는 확장 지원 중에 새 패치 버전이 새 Container-Optimized OS 마일스톤으로 변경되는 경우와는 다릅니다.

다음 단계