클러스터 업그레이드 알림 수신

Google Kubernetes Engine(GKE)은 Pub/Sub에 업그레이드 알림을 게시하여 GKE에서 클러스터에 대한 정보를 수신할 수 있는 채널을 제공하고 이를 통해 예정된 중요한 클러스터 업데이트 예측 가능성을 더 높입니다.

GKE 업그레이드 알림은 다음과 같은 이점이 있습니다.

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

업그레이드 알림 유형

GKE는 클러스터 업그레이드에 대해 UpgradeAvailableEventUpgradeEvent 알림을 전송합니다.

UpgradeAvailableEvent

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

출시 채널에 없는 클러스터의 경우 GKE는 클러스터가 업그레이드할 수 있는 새 버전(현재 부 버전 및 다음 부 버전에 대한 패치)에 대한 알림을 전송합니다. 출시 채널에 없는 클러스터에 대해 사용 가능/기본값의 개념이 없으므로 이 알림을 받은 직후에 노드 자동 업그레이드가 사용 설정된 클러스터와 제어 영역이 업그레이드될 수 있습니다.

UpgradeEvent

사용자 또는 GKE가 업그레이드를 시작하면 GKE는 UpgradeEvent 알림을 보내 업그레이드가 진행 중임을 알립니다. 업그레이드는 UpgradeAvailableEvent 알림을 통해 수신되며 미리 업그레이드하거나, 준비를 위한 필요한 조치를 취하거나, 유지보수 기간을 설정하는 등의 작업을 수행할 수 있다는 점에 유의해야 합니다.

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

업그레이드 알림 사용 설정

다음 작업을 수행하여 새 클러스터 또는 기존 클러스터에서 GKE 업그레이드 알림을 사용 설정할 수 있습니다.

  1. 프로젝트에서 Pub/Sub 주제를 만들고 주제 이름을 지정합니다.

  2. 다음 명령어 중 하나를 사용하여 클러스터에서 GKE 업그레이드 알림을 사용 설정합니다.

    새 클러스터의 경우:

    gcloud container clusters create CLUSTER_NAME \
        --notification-config=pubsub=ENABLED,pubsub-topic=projects/PROJECT/topics/TOPIC_NAME
    

    기존 클러스터의 경우:

    gcloud container clusters update CLUSTER_NAME \
        --notification-config=pubsub=ENABLED,pubsub-topic=projects/PROJECT/topics/TOPIC_NAME
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터 이름입니다.
    • PROJECT: 클러스터 및 주제의 프로젝트 ID 또는 번호입니다. 프로젝트는 클러스터와 주제에 대해 동일해야 합니다.
    • TOPIC_NAME: Pub/Sub 주제의 이름입니다.
  3. 주제의 Pub/Sub 구독을 만듭니다.

GKE는 주제가 클러스터와 동일한 프로젝트에 있는 한 주제를 클러스터에 연관시키는 방식에 제한이 없습니다. 모든 클러스터에 하나의 주제를 만들거나 클러스터 그룹에 대해 여러 주제를 만들 수 있습니다.

알림 설정 확인

클러스터에 업그레이드 알림이 올바르게 설정되었는지 확인하려면 다음을 수행합니다.

  1. 클러스터의 노드 풀을 업그레이드합니다.

    gcloud container clusters upgrade CLUSTER_NAME \
        --cluster-version VERSION \
        --node-pool NODE_POOL_NAME
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 노드 풀이 포함된 클러스터의 이름입니다.
    • VERSION: 노드 풀을 업그레이드할 버전입니다. 노드 풀 버전을 업그레이드하지 않으려면 대신 노드 풀의 현재 버전을 지정합니다.
    • NODE_POOL_NAME: 노드 풀의 이름입니다.
  2. Pub/Sub 구독에서 알림 메시지를 확인합니다.

업그레이드 알림 사용 중지

GKE 업그레이드 알림을 중지하려면 다음 작업을 수행합니다.

  1. 클러스터를 업데이트하여 알림을 사용 중지합니다.

    gcloud container clusters update CLUSTER_NAME \
        --notification-config=pubsub=DISABLED
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 기존 클러스터의 이름입니다.
  2. 선택사항으로 알림을 위해 만든 Pub/Sub 주제를 삭제합니다.

알림 구성 읽기

알림 구성을 읽으려면 다음 명령어를 사용합니다.

gcloud container clusters describe CLUSTER_NAME

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

name: c1
location: us-central1-c
notificationConfig:
  enabled: True
  topic: AnotherTopic

알림 사용

Pub/Sub 메시지에는 데이터(문자열)와 속성(문자열 간 맵)이라는 2개의 필드가 포함됩니다.

GKE 알림의 경우 GKE는 데이터 입력란에 사람이 읽을 수 있는 메시지를 보냅니다. 속성에는 특정 알림 유형(예: UpgradeAvailableEvent 또는 UpgradeEvent)과 함께 일반 알림 정보(예: 프로젝트 번호, 클러스터 이름, 클러스터 위치)가 포함됩니다.

페이로드에 관계없이 알림에는 항상 다음 속성이 포함됩니다.

속성 설명 예시
project_number 클러스터를 소유한 프로젝트 번호입니다. 123456789
cluster_name 클러스터의 이름입니다. my-cluster
type_url 알림의 유형입니다. type.googleapis.com/google.container.v1beta1.UpgradeEvent
payload 알림별 정보를 전달하는 JSON 파싱 가능 문자열입니다. 표시되는 예시는 UpgradeEvent 알림과 관련이 있습니다.

{ "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는 항상 베타 알림 유형을 전송하지만 페이로드는 해당 GA(v1) 유형(사용 가능한 경우)으로 파싱될 수 있습니다.

알림 필터링

사용하려는 알림 유형만 필터링하도록 Pub/Sub 구독을 구성해야 합니다. 예를 들어 다음 필터링 구문을 사용하여 UpgradeAvailableEvent 알림만 수신하도록 구독을 구성할 수 있습니다.

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

자세한 내용은 Pub/Sub 필터링을 참조하세요.

다음 단계