本页面介绍 Google Kubernetes Engine (GKE) 如何将包含集群配置相关事件(如可用升级和安全公告)信息的集群通知发布到 Pub/Sub。
如需了解如何设置集群通知,请参阅接收集群通知。
概览
当发生与 GKE 集群相关的特定事件时,例如重要的计划升级或可用安全公告,GKE 会使用消息的形式,将这些事件的通知发布到您配置的 Pub/Sub 主题。您可以在 Pub/Sub 订阅上接收这些通知,与第三方服务集成,并且可以过滤要接收的通知类型。
优势
使用 Pub/Sub 接收集群通知具有以下好处:
- 您会收到有关为您的集群安排的更新的主动信息,便于您更好地规划测试和资格审核,并且有助于确保顺畅、可预测的升级过程。
- 我们会在有针对您的集群的安全公告发放时通知您,为您提供准确的风险和影响信息。
- 在有可以升级的新 GKE 版本时,您会收到通知。以前,您必须查看 GKE 版本说明或 GKE API 才能了解新 GKE 版本的发布时间。
- 在 GKE 或用户启动集群升级时,您都会收到通知,从而更深入地了解集群的后台操作。
- Pub/Sub 的可扩展性很强,让您可以灵活地处理传入通知。 例如,您可以集成 Slack 以将通知转发到 Slack 频道,或者启动 Cloud Run functions 来运行自定义进程。
- 如果需要自定义流程(例如,编排从预演环境到生产环境的工作流,以测试和认证升级),您可以使用通知自动触发这些工作流。
升级通知的类型
GKE 会发送如下类型的集群通知:
您可以过滤收到的通知,以便仅接收相关事件通知。如需过滤集群通知,您可以在启用集群通知时,在 --notification-config
标志中为 filter
指定一个值,也可以配置 Pub/Sub 订阅。
SecurityBulletinEvent
当 GKE 发出与集群配置或版本直接相关的安全公告时,GKE 会发送 SecurityBulletinEvent
通知,为您提供漏洞相关信息、影响以及您可以采取的行动。
UpgradeAvailableEvent
在通过发布版本推出新版本时,GKE 会向使用该发布版本的集群发送 UpgradeAvailableEvent
通知,以告知集群已推出一个新版本。此通知针对补丁程序版本提供一周的提前通知,针对次要版本至少提前 2-4 周(具体取决于渠道)。如需了解详情,请参阅一个渠道提供哪些版本。
UpgradeAvailableEvent
通知。
如果您使用 Windows Server 节点池,则 Windows 版本信息将包含在所发布的 UpgradeAvailableEvent
通知内。
UpgradeEvent
当您或 GKE 启动升级时,GKE 会发送 UpgradeEvent
通知,告知您升级已经开始。理想情况下,您应该使用 UpgradeAvailableEvent
通知类型了解即将进行的升级,以便您可以提前升级或采取必要的行动,例如设置维护窗口。
UpgradeEvent
通知会在升级操作开始时发送。操作 ID 会在消息中传递。
过滤通知
您可以过滤集群通知,以确保只接收所需通知。您可以通过以下某种方式应用过滤:
在 GKE 中过滤通知
通过在 --notification-config
标志中指定 filter
的值,您可以在启用集群通知时为一种或多种可用通知类型设置过滤。filter
接受以竖线 (|) 分隔的通知类型列表。
例如,指定 filter="UpgradeEvent|SecurityBulletinEvent"
可指示 GKE 仅发送 UpgradeEvent
和 SecurityBulletinEvent
通知类型的通知。
使用 filter
过滤通知具有以下好处:
- 更方便易用,因为您过滤通知类型时不必使用特定语法。
- 您过滤掉的通知绝不会发送到 Pub/Sub,因此您无需为未传送的消息付费。
- 您可以随时修改过滤条件配置。
如需了解如何在 GKE 中过滤通知,请参阅接收集群通知。
在 Pub/Sub 中过滤通知
Pub/Sub 支持使用过滤语法过滤您的订阅中的消息。使用这种方法时,GKE 会将所有通知类型传送到您的 Pub/Sub 主题。Pub/Sub 会根据您的订阅配置过滤消息,并传送您要接收的消息。
例如,您可以在订阅中使用以下语法以过滤 UpgradeEvent
和 UpgradeAvailableEvent
通知:
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 发送到 Pub/Sub 的每条消息在 attributes.type_url
和 attributes.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"} |
后续步骤
- 了解如何接收集群通知。
- 了解如何为第三方服务配置集群通知。