AutoMQ 将在产品的完整生命周期 内,始终保持与 Amazon Elastic Kubernetes Service (EKS) 及 EKS Anywhere (EKS-A) 的深度、持续集成。为践行该承诺,我们保证:持续的版本兼容: 我们确保 AutoMQ 的每一个新版本,都能兼容当前及未来的 EKS 与 EKS-A 版本。同时,我们主动适配 AWS 平台的更新,为用户提供无缝的、前向兼容的流畅体验。及时的响应与修复: 我们建立了清晰的响应机制,能够快速定位并修复由客户或 AWS 报告的任何配置、安全及非安全问题。
操作流程
步骤 1:安装环境控制台
参考概述▸,AutoMQ 支持部署到 EKS 集群。在 EKS 部署模式下,首先仍然需要安装 AutoMQ 控制台,再通过控制台界面操作 EKS,将集群部署到 EKS。 在 AWS 上,同时支持基于 Marketplace 和 Terraform 安装环境控制台。- 通过 Marketplace 安装控制台**(推荐)** ,参考从 AWS Marketplace 安装环境▸。
- 通过 Terraform 安装控制台,参考使用 Terraform Module 安装环境▸。
注意:在上述安装环境控制台时,从 AWS Marketplace 安装环境▸ 集群部署类型必须设置为 Kubernetes 。这样才能支持后续的步骤 2-4,将 AutoMQ 集群安装到 EKS 上。
步骤 2:创建 EKS 集群 IAM Role 和 AutoMQ 节点池 IAM Role
AWS 每个 EKS 集群需要绑定 IAM Role,以实现被授权访问用户的 AWS 云资源。因此,创建 EKS 集群前需要先创建 EKS 集群专用的 IAM Role。- 访问 IAM 控制台。点击创建 Role。选择如下参数:
- Trusted entity type:选择 AWS Service。
- Service Use case:选择 EKS和 EKS-Cluster。

- 点击下一步,输入自定义的角色名称,并创建 IAM Role, 该 Role 用于创建 EKS 集群。
- 访问 IAM 控制台。点击创建 Role。选择如下参数:
- Trusted entity type:选择 AWS Service。
- Service Use case:选择 EC2。

- 点击下一步,添加 EKS 节点池所需的系统权限。
- 点击下一步,输入自定义的角色名称,并创建 IAM Role 。
步骤 3:创建 EKS 集群
参考概述▸,用户需要提前创建独立的 EKS 集群分配给 AutoMQ 使用。用户可访问AWS EKS 产品控制台按下方步骤操作。- 登录AWS EKS 控制台。点击创建集群 。

-
配置集群基础信息 ,需要关注的配置项,其他配置项保持默认即可。
- 选择自定义配置模式。
- 关闭 EKS Auto Mode。
- 绑定步骤 1 创建的 EKS 集群 IAM Role。

- 配置 VPC 网络。 选择目标VPC 和子网。
安全组建议选择 VPC 默认安全组,子网选择所有需要部署集群的私网子网。

- 保持其他默认配置,创建 EKS 集群。

- EKS 集群创建完成后,需要将 AutoMQ 控制台所在的安全组加入 EKS 集群安全组入站规则。以便 AutoMQ 控制台调用访问 EKS 集群。


步骤 4:创建 EKS 公共节点组
参考概述▸,用户需要为 EKS 集群创建一个公共节点组,用于部署 EKS 系统组件。参考以下步骤创建符合要求的节点组。- 进入步骤 3 创建的 EKS 集群详情,点击计算菜单 ,创建节点组 。

- 选选择节点组 IAM Role, 参考下方截图,选择 IAM Role(可以复用 AutoMQ 控制台创建的IAMRoleforAutoMQDedicatedNodeGroup, 也可以按照 EKS 推荐创建 Role)。

-
选择默认节点组的机型、数量和可用区子网。完成节点组创建。
- 机型:建议选择 2C4G 的默认机型即可。
- AMI Type:修改为 Amazon Linux 2(AL2_x86_64)。
- 数量:建议 2-3 台。满足 EKS 系统组件消耗即可。
- 子网:建议填写 EKS 部署需要的子网。
注意:AMI Type 务必选择Amazon Linux 2,默认的 Amazon Linux 2023 暂不支持。
步骤 5:创建 AutoMQ 专用 EKS 节点组
参考概述▸,用户需要为 AutoMQ 创建符合要求的专用节点组,以便后续部署实例申请机器。参考以下步骤创建符合要求的节点组,并完成 IAM 授权。- 进入步骤 3 创建的 EKS 集群详情,点击计算菜单 ,创建节点组 。

- 选择节点组 IAM Role, 参考下方截图,选择步骤 2 创建的节点组 IAM Role**,** 并配置污点。污点的键是dedicated ,值是 automq ,效果是 NO_SCHEDULE 。

- 选择 AutoMQ 专享节点组的机型、数量和可用区子网。完成节点组创建 。
创建节点组时,只支持单可用区 或者三可用区 ,如果选择了其他数量的可用区,后期无法创建实例。
设置参数 | 取值说明 |
---|---|
机型配置 |
注意:AutoMQ 必须运行在指定机型的 VM 中,创建节点组如果选择了非预设的机型,后续无法使用该节点组。 |
AMI Type | 注意:AMI Type 务必选择Amazon Linux 2,默认的 Amazon Linux 2023 暂不支持。 |
子网 |
注意: AutoMQ 要求后续创建集群的可用区和节点组必须完全一致。因此,如果需要创建单可用区的 AutoMQ 集群,则此处创建单可用区节点组;如果需要创建三可用区 AutoMQ 集群,则此处同样创建三可用区节点组,两者不可混用。 |
数量 |
|
AutoMQ 的技术架构具备存算分离和无状态特点。因此,在部分业务场景下节点池可以开启使用 Spot EC2 实例 特性,以进一步降低 AutoMQ 的计算成本。
- 为 AutoMQ 使用的节点组创建 Placeholder Deployment 用于加速节点故障场景的 Failover 速度。
工作原理:Placeholder Deployment 的作用是在 Kubernetes 集群的节点上部署一个低优先级的“占位符”应用,预先占用若干节点。当 AutoMQ 集群的 Pod 所在节点出现故障时,可以快速抢占该 Placeholder 的节点,实现快速恢复。
automq-low-priority.yaml
的优先级申明文件,执行以下命令,创建优先级申明。
automq-eks-placeholder.yaml
文件。需要根据实际部署的节点池,修改其中的参数:
-
metadata.name
: 建议修改成具有意义的 Placeholder 名称,例如placeholder-for-nodegroup-A
。 -
replicas
: Placeholder pod 预留数量,默认为 1,如果是多可用区部署,建议每个可用区保留 1 台机器,即数量设置为可用区的数量。 -
affinity.nodeAffinity
: 用于选择 Placeholder 部署的节点,需要修改matchExpressions
中的key
和values
来精确匹配 AutoMQ 的节点池。在示例的 yaml 文件中提供 2 个选项筛选节点。-
eks.amazonaws.com/nodegroup
:在 EKS 上使用eks.amazonaws.com/nodegroup
标签筛选指定的节点池。 -
node.kubernetes.io/instance-type
:在 EKS 上使用node.kubernetes.io/instance-type
标签筛选指定的节点机型。
-
-
resources
:- limits 的 cpu/memory 与 Node Group 具体的规格保持一致,比如2C16G 。
- requests 的 cpu/memory 略小于 Node Group 具体的规格,比如实际占用 3/4 比例,确保 Placeholder Pod 能调度到额外 Node 并保证独占效果,避免集群其他 Pod 非预期占用导致实际 Failover 时因资源不足调度失败。
Running
,并观察它是否被调度到了期望的节点上。
步骤 6:初始化本地 Kubectl 和 AWS CLI 工具
AWS EKS 集群创建完成后,一些系统插件例如 CSI、NetworkPolicy 组件默认并不安装,需要手工配置,按照 EKS 插件之前。需要在本地安装 AWS CLI 和 Kubectl 工具。- 安装 AWS CLI 和 Kubectl 工具。参考文档如下:
-
输入下方命令生成 KubeConfig 配置文件,这会生成配置文件到默认路径(
~/.kube/config
)。用户也可以指定生成的配置文件路径,但需要注意配置环境变量 KUBECONFIG。
步骤 7:配置 EKS AutoScaler
在创建 AutoMQ 实例以及扩缩容场景下自动扩展 EKS Node,需要配置 EKS AutoScaler 实现节点按需扩展。配置方式如下:- 从 下载链接 下载 AutoScaler 的配置文件。
- 修改配置文件中的,EKS 集群名称参数,保存并执行安装命令。

- 执行安装命令,安装 AutoScaler。

步骤 8:配置 EKS CSI 存储插件
创建 EKS 集群时默认不创建 EKS CSI 存储插件,需要用户手工配置。配置文档参考链接。- 参考 EKS 文档,复制 EKS 集群的 OIDC Connect Provider URL。

-
前往 IAM 控制台创建 OIDC Provider,用于 EKS 获取 IAM 身份。填写配置信息如下:
- Provider Type:选择 OpenID Connect。
- Provider URL:填写上一步复制的 URL。
- Audience:填写 sts.amazonaws.com 。

-
基于该Web Identity 创建 CSI 专用的 IAM Role。填写配置项如下:
- Trusted entity type: 选择 Web identity。
- Identity Provider:选择上一步创建的 Identity Provider。
- Audience:填写 sts.amazonaws.com 。
- Policy:选择 AmazonEBSCSIDriverPolicy 。
- 创建 IAM Role 后,进入该 Role 详情页,点击 Edit trust policy,在原有的 json 文件中添加如下一行。
需要注意修改其中的 RegionCode 和 ProviderID,ProviderID 类似EXAMPLED539D4633E53DE1B7XXXXAMPLE。
- 进入 EKS 集群,选择 AddOn Tab,添加 Amazon EBS CSI Driver。注意 IAM Role 选择上一步创建的 IAM Role。

步骤 9: 开启 EKS NetworkPolicy
AutoMQ 支持集群访问来源控制,即限定特定 IP 来源的客户端访问集群,该功能基于 NetworkPolicy 实现,因此需要开启 EKS NetworkPolicy。- 在 EKS 控制台 Add-on 标签内选择 AWS VPC CNI 并点击编辑 。

- 展开 Optional configuration settings,在 Configuration values 中添加如下 JSON,选择 Override 模式并保存。

步骤 10:安装 AWS Load Balancer Controller
AWS 默认不提供 Load Balancer Controller 的安装,需要用户手动安装插件。安装步骤如下:- 添加 Helm 仓库,并安装 AWS Load Balancer CRD。
- 修改下方命令中的 eks-cluster-id,设置为实际的集群 ID,并执行。
- 验证安装效果。

步骤 11: 授权 AutoMQ 控制台管理 EKS 集群
首次进入 AutoMQ BYOC 控制台,需要创建部署配置,设置 Kubernetes 集群信息和授权才可正常使用。- 前往 EKS 集群,点击 Access 菜单,创建 Access Entry。

- 选择步骤 1 安装环境控制台生成的 AutoMQ 专用的 IAM Role,类型设置为 Standard。


步骤 12:进入环境控制台,创建部署配置
登录控制台,录入集群名称等配置,点击下一步。- 部署类型:选择 Kubernetes。
- Kubernetes 集群:填写 EKS 集群的集群名称。
- DNS ZoneId:填写用于部署 AutoMQ 的 Route53 PrivateZone 的 ZoneId。
- Bucket 名称:填写用于部署 AutoMQ 存储消息的数据 Bucket,支持添加多个 S3 Bucket。

- 填写云资源信息后,生成数据面 GKE 节点池需要授权的权限。参考控制台指引,创建自定义授权策略 。然后将授权策略绑定到步骤 2 创建的 AutoMQ IAM 委托,并录入该节点池委托名称 ,点击下一步预览 。

- 预览部署配置信息,完成创建 。即可前往实例管理页面创建实例。