本文中提及 AutoMQ 产品服务方、AutoMQ 服务方、AutoMQ,均特指 AutoMQ HK Limited 及其附属公司。
安装环境控制台
参考概述▸,AutoMQ 支持部署到 GKE 集群。在 GKE 部署模式下,首先仍然需要安装 AutoMQ 控制台,再通过控制台界面操作 GKE,将集群部署到 GKE。 在 Google Cloud 上,8.x 版本的 AutoMQ 控制台通过 Docker 镜像安装和启动。安装控制台的操作文档请参考在 Google Cloud 上安装 AutoMQ▸。 AutoMQ 控制台安装完成后,请使用控制台地址、初始用户名和密码登录控制台,并按页面提示完成权限初始化。准备 GKE 集群和必要的节点池等资源
如果您期望在 Kubernetes 上运行 AutoMQ 集群,需要提前准备一个 GKE 集群。如果只期望在 IaaS 模式下部署 AutoMQ 集群,则无需准备 GKE 集群。步骤 1:创建 GKE Standard 集群
GKE Standard 集群的创建方式请参考 Google Cloud 官方文档《Creating a regional cluster》。本文不重复展开 GKE 的完整创建步骤,仅列出 AutoMQ 部署所需的关键配置。 AutoMQ 当前仅支持 GKE Standard 集群,不支持 GKE Autopilot。创建集群时建议确认以下配置:- 集群类型:选择 GKE Standard。
- 集群位置:建议选择 Regional 集群,以便后续创建跨多个可用区的 AutoMQ 实例。
- 网络模式:启用 VPC-native traffic routing,并为 Pod 和 Service 准备 Secondary IP range。
- Dataplane:建议启用 Dataplane V2。
- 身份模型:启用 Workload Identity Federation for GKE。
- 节点 metadata:不要关闭 GKE Metadata Server。AutoMQ Pod 通过 Kubernetes ServiceAccount 绑定到 Google Service Account(GSA)时,需要依赖 GKE Metadata Server。
- Service Project:创建 GKE 集群、Console VM、AutoMQ 实例、数据 Bucket、实例 GSA 等资源。
- Host Project:承载 VPC、子网、路由、NAT、防火墙等网络资源。
步骤 2:配置网络和防火墙
AutoMQ 控制台需要访问 GKE API Server,并在实例创建、升级、扩缩容等流程中操作 Kubernetes 资源。AutoMQ 控制台还需要访问 AutoMQ 数据面暴露的服务端口,用于执行生命周期管理、状态检查和运维操作。Kafka 客户端是否需要访问这些端口,取决于您的业务接入方式。 如果 AutoMQ 控制台、GKE 集群和 Kafka 客户端不在同一个子网或默认无法互通,需要在 VPC 防火墙中放行必要流量。建议至少确认以下访问关系:- AutoMQ 控制台可以访问 GKE API Server。
- AutoMQ 控制台可以访问 AutoMQ Pod 或 Service 暴露的端口。这是必需访问路径。
- Kafka 客户端网络可以访问业务需要的 AutoMQ 服务端口,例如 Kafka Bootstrap、Broker 或相关代理端口。
- 如果 GKE 节点不配置公网 IP,且需要访问 Cloud Storage、IAM、Cloud DNS 等 Google APIs,请为节点所在子网开启 Private Google Access,并确认访问 Google APIs 所需的路由和 DNS 配置正确。访问外部镜像仓库等非 Google 端点仍需要 Cloud NAT 或其他出网路径。
8083、9090、9092、9093、9102、9103、9112、9113。其中控制台所在子网是必要来源;Kafka 客户端来源网段按业务接入需要添加。实际来源 CIDR 应根据控制台所在子网和客户端所在网络范围收敛。如果 AutoMQ 工作负载节点池使用专用的节点 VM Service Account,也可以通过目标 Service Account 收敛到该节点池;否则应使用网络标签等方式收敛目标范围。
如下命令演示如何为控制台来源网段以及可选的客户端来源网段放行常见 AutoMQ 端口,并在使用专用节点 VM Service Account 的前提下收敛目标。Shared VPC 模式下,防火墙规则应创建在 Host Project。
步骤 3:准备 AutoMQ 工作负载节点池
AutoMQ Broker 应运行在专用节点池上。请提前准备该节点池,并在创建实例时选择或填写对应节点池名称。 准备 AutoMQ 工作负载节点池时,请确认以下配置:- GKE Metadata Server:必须启用。
- 污点:设置
dedicated=automq:NoSchedule,确保只有 AutoMQ 工作负载调度到该节点池。 - 机型和数量:参考概述▸中的节点池要求选择机型,并根据业务规模设置最小、期望和最大节点数。
- 自动扩缩容:建议开启 Cluster Autoscaler,并使用 Balanced 策略。
步骤 4:确认 AutoMQ 工作负载身份
AutoMQ 数据面 Pod 需要访问 GCS、Cloud DNS、Compute 等 Google Cloud 资源。创建实例时,您可以选择以下任一种身份模式:
如果使用已有身份,请同时准备 Kubernetes namespace 和 Kubernetes ServiceAccount,并确保该 ServiceAccount 可以通过 Workload Identity 使用对应 GSA。可参考附录:为 AutoMQ 工作负载配置 GKE Workload Identity。
创建 AutoMQ 实例,选择部署到 Kubernetes
登录 AutoMQ 控制台,创建实例,部署类型选择 Kubernetes,并按要求配置如下信息。- 部署类型:选择 Kubernetes。
-
Kubernetes 集群:选择目标 GKE 集群。通过 API 或自动化工具传参时,GKE 集群 ID 使用完整资源名称,格式为
projects/<project-id>/locations/<location>/clusters/<cluster-name>。 - 节点池:选择或填写用于部署 AutoMQ Broker 的节点池名称。节点池需要满足概述▸中的节点池要求。
- 数据 Bucket:选择由 AutoMQ 托管创建,或填写已有 GCS Bucket。
- Private DNS Zone:选择由 AutoMQ 托管创建,或填写已有 Cloud DNS private managed zone。
-
实例身份:
- 选择托管身份时,AutoMQ 控制台会创建实例 GSA 并配置所需 IAM 绑定。
- 选择已有身份时,填写已有 GSA 的完整资源名称,并确认权限已按控制台展示内容完成配置。
- 命名空间和 ServiceAccount:仅在自行管理 Kubernetes 身份时需要指定。该 ServiceAccount 需要和实例 GSA 完成 Workload Identity 绑定。
- 预览配置信息,完成创建。
附录:为 AutoMQ 工作负载配置 GKE Workload Identity
完整说明请参考 Google Cloud 官方文档《从 GKE 工作负载向 Google Cloud API 进行身份验证》。 如果您选择使用已有 GSA,需要确保 Kubernetes ServiceAccount 可以模拟该 GSA。示例步骤如下:-
创建 namespace 和 Kubernetes ServiceAccount。
-
为 GSA 添加
roles/iam.workloadIdentityUserbinding。 -
为 Kubernetes ServiceAccount 添加 GSA 注解。
附录:部署 AutoMQ Placeholder Deployment(可选)
如果您希望在 AutoMQ 工作负载节点池中预留故障恢复容量,可以为 AutoMQ 节点池部署 Placeholder Deployment。它会在节点池中运行低优先级的占位 Pod,预先占用一定资源;当 AutoMQ Broker 所在节点故障时,低优先级 Pod 可以被抢占,为 Broker 快速调度恢复让出资源。 部署 Placeholder Deployment 可以通过kubectl 或 Kubernetes 控制台完成。
-
下载并创建低优先级声明。
-
下载 GKE Placeholder Deployment 示例。
-
根据实际 AutoMQ 工作负载节点池修改
automq-gke-placeholder.yaml中的关键参数:metadata.name:建议修改为有业务含义的名称,例如placeholder-for-automq-nodepool-a。replicas:预留的 Placeholder Pod 数量。多可用区部署时,可按每个可用区 1 个 Pod 评估。affinity.nodeAffinity:用于匹配 AutoMQ 工作负载节点池。GKE 上常用cloud.google.com/gke-nodepool匹配节点池名称,也可以用node.kubernetes.io/instance-type匹配节点机型。resources:limits可按节点规格配置,requests建议略小于节点规格,避免 Placeholder 自身无法调度。
-
应用 Placeholder Deployment。
-
检查 Placeholder Pod 是否运行在预期节点池。