AutoMQ 将在产品的完整生命周期 内,始终保持与 Amazon Elastic Kubernetes Service (EKS) 及 EKS Anywhere (EKS-A) 的深度、持续集成。为践行该承诺,我们保证:持续的版本兼容: 我们确保 AutoMQ 的每一个新版本,都能兼容当前及未来的 EKS 与 EKS-A 版本。同时,我们主动适配 AWS 平台的更新,为用户提供无缝的、前向兼容的流畅体验。及时的响应与修复: 我们建立了清晰的响应机制,能够快速定位并修复由客户或 AWS 报告的任何配置、安全及非安全问题。
准备 EKS 集群和计算资源
如果您期望将在 Kubernetes 上运行 AutoMQ 集群,您需要准备一个 EKS 集群以供 AutoMQ 使用。如果期望在 EC2 上部署 AutoMQ 集群,则无需准备 EKS 集群。步骤 1:创建所需的 IAM Role
在创建 EKS 集群和计算资源之前,需要先创建专用的 IAM Role。此 Role 用于 EKS 集群自身的服务授权。- 访问 IAM 控制台,点击创建 Role。
- Trusted entity type:选择 AWS Service。
- Service Use case:选择 EKS-Cluster。
- 点击下一步,输入自定义的角色名称,并创建 IAM Role。
步骤 2:创建 EKS 集群
- 登录 AWS EKS 控制台,点击创建集群,选择自定义创建模式。
-
配置集群基础信息:
- 绑定上一步创建的 EKS 集群 IAM Role。
- 选择 EKS 支持且符合 AutoMQ 版本要求的 Kubernetes 版本。
-
配置 VPC 网络:
- 选择您为 AutoMQ 准备的 VPC,这个 VPC 应该与应用所在的 VPC 保持一致。
- 选择用于部署集群的私网子网。
- 安全组建议选择 VPC 的默认安全组。
- 保持其他默认配置,创建 EKS 集群。
-
授权控制台访问。
为了让 AutoMQ 控制台能够管理 EKS 集群,需要为控制台使用的 IAM Role 授权。
- 前往 EKS 集群的 Access 菜单,点击 Create Access Entry。
- 选择 AutoMQ 控制台使用的 IAM Role(通常在安装控制台时创建)。
- Type 设置为 Standard。
- 点击下一步,在 Add access policy 页面,选择 AmazonEKSClusterAdminPolicy 策略。
- Scope 选择 Cluster,点击添加。
- 完成创建。
-
设置安全组规则,允许 EKS 集群外访问 Pod 以及 EKS API Server 服务。。
AutoMQ 控制台需要调用 EKS 集群的 API Server,因此需要确保控制台所在网络可以访问 API Server 的 443 端口。此外,AutoMQ Broker 需要对外暴露服务端口。如果集群外的组件(包括 AutoMQ 控制台和 Producer/Consumer 应用)需要访问 AutoMQ,需要为 EKS 集群安全组添加入站规则。
- 端口:
443,9090,9092,9102,9122,9112,8083。 - 来源:根据 AutoMQ 控制台和应用所在位置设置对应的 CIDR 或安全组。
- 端口:
步骤 3:准备 EKS 计算资源
为 Kubernetes 系统组件准备稳定计算资源,并为 AutoMQ 工作负载准备专属计算资源。AutoMQ 专属计算资源可以使用 EKS 托管节点组或 Karpenter。1. 创建系统节点组
- 进入 EKS 集群详情页,点击 计算 菜单,选择 创建节点组。
- IAM Role:选择在 步骤 1 中创建的节点组 IAM Role。
- 机型配置:选择
t3.medium或同等规格的机型,数量建议为 2-3 台。 - 子网:选择 EKS 部署所需的所有私网子网。
- 完成节点组创建。
2. 准备 AutoMQ 专属计算资源
选择以下任一种计算资源形态。 EKS 托管节点组- 进入 计算 菜单,选择 创建节点组。
- IAM Role:选择在 步骤 1 中创建的节点组 IAM Role。
- 自定义标签:添加
node-type=automq。 - 污点:添加键
dedicated、值automq、效果NO_SCHEDULE。 - 机型配置:选择 AutoMQ 控制台支持的实例机型。
- 子网:根据 AutoMQ 实例规划,选择一个或三个可用区的私网子网。
- 扩缩容配置:设置能够满足规划节点数的最大节点数,建议期望节点数从 3 个节点起步。
- 完成节点组创建。
- 在
spec.template中添加自定义标签node-type=automq和污点dedicated=automq:NoSchedule。 - 确保
spec.template.spec.requirements允许 AutoMQ 控制台中选择的实例机型和可用区。 - 配置能够满足 AutoMQ 规划节点数的 CPU 和内存上限。
3. 准备 Kafka Connector 计算资源(可选)
如果期望使用 AutoMQ 提供的托管 Kafka Connect 服务,还需要为 Connector 准备节点资源。可以参考系统节点组的操作方法创建独立节点池,或者扩容系统节点组,确保拥有充足的计算资源。步骤 4:初始化本地工具并配置 EKS 插件
新创建的 EKS 集群需要安装一些必要的系统插件才能配合 AutoMQ 工作。1. 初始化本地工具
2. 为托管节点组配置 Cluster Autoscaler(可选)
EKS 托管节点组需要按需扩缩容时,配置 Cluster Autoscaler。使用 Karpenter 时跳过此步骤,Karpenter 通过自身控制器创建节点。- 从下载链接下载 AutoScaler 的配置文件。
- 修改配置文件,将其中的
<YOUR CLUSTER NAME>替换为您的 EKS 集群名称。 - 执行安装命令:
3. 准备 EKS 插件所需的 IAM 授权
Amazon EBS CSI Driver 和 AWS Load Balancer Controller 需要 IAM 权限来操作 AWS 资源。下方示例命令使用 IRSA 和eksctl,因此需要先为 EKS 集群创建 IAM OIDC Provider。详细操作请参考 AWS 官方文档《为您的集群创建 IAM OIDC 提供商》。
这里的 OIDC Provider 用于后续 EKS 插件安装。AutoMQ 工作负载 Pod 可以使用 EKS Pod Identity 或 IRSA 获取 IAM Role 权限,请在步骤 5中准备对应的 IAM Role 和 ServiceAccount。
4. 配置 Amazon EBS CSI Driver
EKS 集群需要此插件来管理存储卷。- 参考 AWS 官方文档《Amazon EBS CSI driver》的步骤,在上述创建 OIDC Provider 后,创建一个专用于 CSI Driver 的 IAM Role。
- 完成 IAM Role 和 Trust Policy 的配置后,进入 EKS 集群控制台的 Add-ons 标签页,添加 Amazon EBS CSI Driver,并选择上一步创建的 IAM Role。
5. 安装 AWS Load Balancer Controller
此插件用于管理 Load Balancer,为 AutoMQ 提供 EKS 集群外部访问入口。安装 Load Balancer Controller 可以参考官方文档。- 执行以下命令,生成 IAM Policy。
- 创建一个 IAM Role,并将上一步创建的 Policy 附加到该 Role。
- 添加 Helm 仓库并安装 CRD:
- 执行安装命令,注意将
<eks-cluster-id>替换为您的集群名称,将<Your RegionID>替换为您的区域 ID,将<Your VPCID>替换为您的 VPC ID:
步骤 5:准备 AutoMQ 工作负载的 IAM Role 和 ServiceAccount
AutoMQ 数据面 Pod 需要访问 S3 等云资源。创建 AutoMQ 实例前,您需要为 AutoMQ 工作负载准备一个 IAM Role 和一个 Kubernetes ServiceAccount。 ServiceAccount 与 IAM Role 的绑定可以使用以下任一方式:安装环境控制台
完成 EKS 集群和计算资源准备后,根据运维需求选择在 EC2 上部署 AutoMQ 控制台▸或在 EKS 上部署 AutoMQ 控制台▸。控制台的部署方式不限制 AutoMQ 数据面在 EKS 上运行。创建 Kubernetes 形态的 AutoMQ 实例
登录 AutoMQ 控制台并创建实例,配置以下字段:- 部署类型:选择 Kubernetes。
- VPC 和可用区:选择 EKS 使用的 VPC,并选择一个或三个工作负载可用区。
- Kubernetes 集群:选择目标 EKS 集群。
- 负载均衡子网:选择覆盖工作负载可用区的 NLB 子网。
- 实例机型:选择托管节点组或 Karpenter NodePool 允许的机型。
- 调度配置 YAML:如果专属计算资源池配置了标签或污点,填写对应的 SchedulingSpec。
- 预览配置并创建实例。
附录:为 AutoMQ 工作负载配置 EKS Pod Identity
完整操作请参考 AWS 官方文档《了解 EKS Pod Identity 如何向 Pod 授予 AWS 服务访问权限》。 开始前,请确认集群已安装 EKS Pod Identity Agent。如果集群已启用 EKS Auto Mode,则无需执行该步骤。用于直接创建 Pod Identity Association 的 IAM Role 必须与 EKS 集群属于同一个 AWS 账号。同时,创建 Association 的 AWS 主体需要拥有该 IAM Role 的iam:PassRole 权限。
- 创建 IAM Role,并挂载 AutoMQ 所需的 IAM 权限策略。
-
为 EKS Pod Identity 配置 Role Trust Policy:
-
创建命名空间和 ServiceAccount:
-
创建 Pod Identity Association:
- 创建 AutoMQ 实例前,确认关联状态正常,并且 ServiceAccount 已存在于目标命名空间。
附录:为 AutoMQ 工作负载配置 IRSA
完整操作请参考 AWS 官方文档《适用于服务账户的 IAM 角色》。-
为 EKS 集群创建 IAM OIDC Provider。每个集群只需要执行一次。
- 创建 IAM Role,并挂载 AutoMQ 所需的 IAM 权限策略。
-
为 IRSA 配置 Role Trust Policy:
-
创建命名空间和 ServiceAccount,并为 ServiceAccount 添加 IAM Role ARN 注解:
- 创建 AutoMQ 实例前,确认带有注解的 ServiceAccount 已存在于目标命名空间。