在 AWS 上使用 AutoMQ Cloud BYOC 环境,您首先需要安装 AutoMQ 控制台。控制台是一个部署在您账户下的 Web 应用,您将通过它来创建、管理和监控您的 AutoMQ 集群。
前置条件
AutoMQ 控制台支持直接部署到 Amazon EC2 或 Amazon EKS。请根据所选部署方式准备相应资源。
注册 AutoMQ 环境
首先,您需要在 AutoMQ 官网注册您的部署环境,以获取环境安装的元信息。
- 访问 AutoMQ Cloud,登录您的账户。
- 在控制台页面,点击 创建环境。
- 根据向导,输入以下信息:
- 环境名称:为您的环境设置一个自定义名称。
- 描述:输入环境的相关描述。
- 云厂商:选择 AWS。
- 地域:选择您计划部署 AutoMQ 的 AWS 地域。
- 完成创建后,您将获得用于部署的环境元信息。
在 EC2 上部署 AutoMQ 控制台
准备 EC2 实例并部署控制台
AutoMQ 控制台是管理 AutoMQ Cloud BYOC 环境的核心组件,它本身是部署在一台独立的 EC2 实例上。因此,在安装之前,您需要提前准备好这台 EC2 实例。
基本要求
为确保控制台的稳定运行,您准备的 EC2 实例需要满足以下基本要求:
- 实例规格:
- 配置:至少需要 2 核 CPU 和 8 GB 内存。
- 系统卷:至少需要 20 GiB 的存储空间。
- 数据卷:必须额外挂载一块数据卷用于存储元数据,空间不得少于 20 GiB。
重要提示:为了防止 EC2 实例迁移或故障导致控制台元数据丢失,请务必为 AutoMQ 控制台的 EC2 实例挂载额外的数据卷,并将元数据存储在该数据卷上。
-
网络位置:
- 该 EC2 实例必须和后续部署的 AutoMQ 集群位于同一个 VPC 内。
- 通常,这个 VPC 也应该与您的应用服务所在的 VPC 保持一致,以确保网络连通性。
-
公网访问:
- 该 EC2 实例必须能够访问互联网,以便下载安装包和同步必要的元数据。您可以通过关联 EIP(弹性公网 IP)或配置公网 NAT 网关来实现。
创建与部署步骤
-
登录 AWS EC2 控制台,点击 启动实例。
-
操作系统 (AMI):选择一个您熟悉的 Linux 发行版,例如 Amazon Linux 2023 或 Ubuntu。
-
实例类型:选择满足上述规格要求的实例类型(例如
t3.large 或更高配置)。
-
网络设置:
- 选择目标 VPC 和一个公网子网(如果使用 EIP)或私网子网(如果使用 NAT 网关)。
- 确保安全组开放了必要的端口,例如 SSH (22) 端口以便您登录和管理,以及控制台服务的服务端口(默认为 8080)。将访问来源限制为可信 IP 范围。
-
存储配置:
- 配置系统卷(根卷)大小至少为 20 GiB。
- 点击 添加新卷,额外添加一个数据卷,并确保其大小不小于 20 GiB。
-
完成其他配置后,启动实例。
-
挂载数据卷:
- 实例启动后,登录到 EC2 实例。
- 将您在存储配置中额外添加的数据卷挂载到操作系统的指定目录(例如
/data)。此路径将作为后续启动 Docker 容器时的数据挂载路径。
- 请确保挂载点具有正确的权限。
-
安装并启动 Docker 服务:
- 在 EC2 实例上安装 Docker。以下是针对 Amazon Linux 2023 的参考命令:
- 注意:如果您使用的是其他 Linux 发行版(如 Amazon Linux 2),请参考 Docker 官方文档或使用对应的包管理器进行安装。
-
部署 AutoMQ 控制台
- EC2 实例准备完成后,即可参考安装向导,复制安装命令,启动 AutoMQ 控制台。
配置控制台权限并完成初始化
AutoMQ 控制台启动成功后,您需要登录控制台,首次访问时需要为其授予必要的 AWS 云资源操作权限。
-
登录控制台
- 使用浏览器访问
http://<您的 EC2 公网 IP>:8080。
- 输入初始用户名和密码登录。
-
为控制台授予 IAM 权限
登录后,界面会引导您为 AutoMQ 控制台完成 IAM 授权。这是为了让控制台有权限在您的 AWS 账户中创建和管理集群资源。操作流程如下:
-
创建 IAM Policy:
- 根据控制台界面提供的策略 JSON,前往 AWS IAM 控制台创建一个新的客户管理策略(Customer managed policy)。
-
创建 IAM Role:
- 创建一个新的 IAM Role。
- 在选择信任实体时,选择 AWS service 和 EC2。
- 将上一步创建的 IAM Policy 附加到这个 Role 上。
-
关联 IAM Role 到 EC2 实例:
- 前往 AWS EC2 控制台,找到您用于部署控制台的 EC2 实例。
- 在 操作 -> 安全 -> 修改 IAM 角色 中,将上一步创建的 IAM Role 关联到该实例上。
-
完成初始化
- 返回 AutoMQ 控制台页面,点击 确认授权 或 下一步。
- 控制台会自动验证权限是否配置正确。验证通过后,您就可以正式进入 AutoMQ 控制台并开始创建您的第一个集群了。
在 EKS 上部署 AutoMQ 控制台
本节介绍如何将 AutoMQ 控制台作为 Helm release 部署到 Amazon EKS。开始前,请先完成准备 EKS 集群和计算资源,并保留环境安装向导生成的部署配置。
以下命令和清单使用 <...> 占位符,请将其替换为当前环境中对应的资源标识。
准备 ServiceAccount 和运行配置
安装 Chart 前,请确保目标命名空间和 ServiceAccount 已存在。您可以复用已有资源,也可以通过自己的资源管理流程进行准备。Chart 只引用 <console-namespace> 中的 <console-service-account>,不会创建或修改该 ServiceAccount。
环境安装向导提供与 EC2 Docker 部署相同的 base64 编码部署配置。
准备一个 Secret,将安装向导生成的完整 base64 字符串写入小写 config key。将 <config-secret-name> 替换为 Secret 名称,将 <console-namespace> 替换为控制台所在的命名空间,将 <base64-encoded-runtime-config> 替换为安装向导生成的配置:
将上述清单保存到本地文件,并将 <runtime-config-secret-file> 替换为该文件的路径:
配置工作负载身份
通过 EKS Pod Identity 或 IRSA 将 IAM Role 绑定到 ServiceAccount。新建 EKS 部署推荐使用 EKS Pod Identity。
- 确认集群已安装 EKS Pod Identity Agent。EKS Auto Mode 已包含该组件。
- 准备或选择配置了以下信任策略的 IAM Role:
- 确保 Role 已与 ServiceAccount 关联。如果尚未关联,请执行以下命令。其中
<eks-cluster-name> 是目标 EKS 集群名称,<console-namespace> 和 <console-service-account> 标识控制台使用的 ServiceAccount,<aws-account-id> 和 <console-role-name> 标识要关联的 IAM Role,<aws-region> 是 EKS 集群所在地域:
更多信息参考 AWS 文档:了解 EKS Pod Identity 如何向 Pod 授予 AWS 服务访问权限。
- 确认 EKS 集群已配置 IAM OIDC Provider。
- 准备或选择通过信任策略允许该 ServiceAccount 调用
sts:AssumeRoleWithWebIdentity 的 IAM Role。
- 确保 ServiceAccount 已添加 Role ARN 注解。如果尚未配置,请执行以下命令。其中
<console-service-account> 和 <console-namespace> 标识控制台使用的 ServiceAccount,<aws-account-id> 和 <console-role-name> 标识要关联的 IAM Role:
信任策略的配置方法参考 AWS 文档:适用于服务账户的 IAM 角色。
授予 EKS 集群访问权限
AutoMQ 控制台使用同一个 IAM Role 管理 Kubernetes 资源。请确保该 Role 已配置 Standard 类型的 EKS access entry,并授予集群级 AmazonEKSClusterAdminPolicy。如果尚未配置,请执行以下命令。其中 <eks-cluster-name> 是目标 EKS 集群名称,<aws-account-id> 和 <console-role-name> 标识 ServiceAccount 关联的 IAM Role,<aws-region> 是 EKS 集群所在地域:
配置 Helm values
在 Helm values 文件中设置以下参数:
<config-secret-name>:前面准备的运行配置 Secret。
<aws-account-id>:部署控制台的 AWS 账户 ID。
<vpc-id>:EKS 集群所在的 VPC。
<alb-subnet-id-1> 和 <alb-subnet-id-2>:用于创建 ALB 的不同可用区子网。
<console-service-account>:已经与 IAM Role 关联的 ServiceAccount。
<storage-class-name>:目标 EKS 集群中支持 ReadWriteOnce 动态供给的 StorageClass,通常由 Amazon EBS CSI 驱动提供。可通过 kubectl get storageclass 查询。
<console-domain-name>:用于访问控制台的域名。
<acm-certificate-arn>:与控制台域名匹配的 ACM 证书 ARN。
ALB 子网用于暴露 AutoMQ 控制台,与创建 AutoMQ 实例时选择的 NLB 子网相互独立。如需使用私网入口,将 ingress.alb.scheme 设置为 internal 并选择私网子网。
Chart 默认不限制 Pod 调度位置。如果 EKS 集群为 AutoMQ 控制台准备了专属节点,可以通过节点标签增加 required affinity。将 <node-label-key> 和 <node-label-value> 替换为目标节点上已有的标签键和值:
安装 AutoMQ 控制台
从 AutoMQ OCI 仓库安装 Chart。当前推荐使用最新正式 Chart 版本 8.3.7。将 <release-name> 替换为 Helm release 名称,<console-namespace> 替换为控制台所在的命名空间,<values-file> 替换为上一节准备的 values 文件路径:
等待 Pod 和 Ingress 就绪,将 <console-namespace> 替换为控制台所在的命名空间:
为 ingress.host 中的域名创建 DNS 记录,并将记录指向 Ingress 状态中显示的 ALB 地址。
完成初始化
访问 https://<console-domain-name>,使用临时引导凭据登录:
以上是公开的临时引导凭据。限制 ALB 的访问范围,并在首次登录后立即修改密码。
初始化页面会展示 AutoMQ 控制台所需的 IAM Policy。使用该 JSON 创建客户管理策略,并将策略附加到 ServiceAccount 关联的同一个 IAM Role。返回 AutoMQ 控制台并确认授权。
权限检查通过后,您可以创建和管理 AutoMQ 实例。
后续步骤
- 通过 WebUI 使用 AutoMQ: 继续通过环境控制台创建实例,并体验产品功能。体验 AutoMQ▸
- 通过 Terraform 使用 AutoMQ: 安装控制台后,用户可以通过 AutoMQ Terraform Provider 管理和使用 AutoMQ。通过 Terraform 方式使用 AutoMQ ,请参考文档。