Skip to main content

概述

在 AWS 上使用 AutoMQ Cloud BYOC 环境,您首先需要安装 AutoMQ 控制台。控制台是一个部署在您账户下的 Web 应用,您将通过它来创建、管理和监控您的 AutoMQ 集群。

前置条件

AutoMQ 控制台支持直接部署到 Amazon EC2 或 Amazon EKS。请根据所选部署方式准备相应资源。

注册 AutoMQ 环境

首先,您需要在 AutoMQ 官网注册您的部署环境,以获取环境安装的元信息。
  1. 访问 AutoMQ Cloud,登录您的账户。
  2. 在控制台页面,点击 创建环境
  3. 根据向导,输入以下信息:
    • 环境名称:为您的环境设置一个自定义名称。
    • 描述:输入环境的相关描述。
    • 云厂商:选择 AWS
    • 地域:选择您计划部署 AutoMQ 的 AWS 地域。
  4. 完成创建后,您将获得用于部署的环境元信息。

在 EC2 上部署 AutoMQ 控制台

准备 EC2 实例并部署控制台

AutoMQ 控制台是管理 AutoMQ Cloud BYOC 环境的核心组件,它本身是部署在一台独立的 EC2 实例上。因此,在安装之前,您需要提前准备好这台 EC2 实例。

基本要求

为确保控制台的稳定运行,您准备的 EC2 实例需要满足以下基本要求:
  1. 实例规格
    • 配置:至少需要 2 核 CPU8 GB 内存
    • 系统卷:至少需要 20 GiB 的存储空间。
    • 数据卷:必须额外挂载一块数据卷用于存储元数据,空间不得少于 20 GiB
重要提示:为了防止 EC2 实例迁移或故障导致控制台元数据丢失,请务必为 AutoMQ 控制台的 EC2 实例挂载额外的数据卷,并将元数据存储在该数据卷上。
  1. 网络位置
    • 该 EC2 实例必须和后续部署的 AutoMQ 集群位于同一个 VPC 内。
    • 通常,这个 VPC 也应该与您的应用服务所在的 VPC 保持一致,以确保网络连通性。
  2. 公网访问
    • 该 EC2 实例必须能够访问互联网,以便下载安装包和同步必要的元数据。您可以通过关联 EIP(弹性公网 IP)或配置公网 NAT 网关来实现。

创建与部署步骤

  1. 登录 AWS EC2 控制台,点击 启动实例
  2. 操作系统 (AMI):选择一个您熟悉的 Linux 发行版,例如 Amazon Linux 2023 或 Ubuntu。
  3. 实例类型:选择满足上述规格要求的实例类型(例如 t3.large 或更高配置)。
  4. 网络设置
    • 选择目标 VPC 和一个公网子网(如果使用 EIP)或私网子网(如果使用 NAT 网关)。
    • 确保安全组开放了必要的端口,例如 SSH (22) 端口以便您登录和管理,以及控制台服务的服务端口(默认为 8080)。将访问来源限制为可信 IP 范围。
  5. 存储配置
    • 配置系统卷(根卷)大小至少为 20 GiB。
    • 点击 添加新卷,额外添加一个数据卷,并确保其大小不小于 20 GiB。
  6. 完成其他配置后,启动实例。
  7. 挂载数据卷
    • 实例启动后,登录到 EC2 实例。
    • 将您在存储配置中额外添加的数据卷挂载到操作系统的指定目录(例如 /data)。此路径将作为后续启动 Docker 容器时的数据挂载路径。
    • 请确保挂载点具有正确的权限。
  8. 安装并启动 Docker 服务
    • 在 EC2 实例上安装 Docker。以下是针对 Amazon Linux 2023 的参考命令:
    • 注意:如果您使用的是其他 Linux 发行版(如 Amazon Linux 2),请参考 Docker 官方文档或使用对应的包管理器进行安装。
  9. 部署 AutoMQ 控制台
    • EC2 实例准备完成后,即可参考安装向导,复制安装命令,启动 AutoMQ 控制台。

配置控制台权限并完成初始化

AutoMQ 控制台启动成功后,您需要登录控制台,首次访问时需要为其授予必要的 AWS 云资源操作权限。
  1. 登录控制台
    • 使用浏览器访问 http://<您的 EC2 公网 IP>:8080
    • 输入初始用户名和密码登录。
  2. 为控制台授予 IAM 权限 登录后,界面会引导您为 AutoMQ 控制台完成 IAM 授权。这是为了让控制台有权限在您的 AWS 账户中创建和管理集群资源。操作流程如下:
    1. 创建 IAM Policy
      • 根据控制台界面提供的策略 JSON,前往 AWS IAM 控制台创建一个新的客户管理策略(Customer managed policy)。
    2. 创建 IAM Role
      • 创建一个新的 IAM Role。
      • 在选择信任实体时,选择 AWS serviceEC2
      • 将上一步创建的 IAM Policy 附加到这个 Role 上。
    3. 关联 IAM Role 到 EC2 实例
      • 前往 AWS EC2 控制台,找到您用于部署控制台的 EC2 实例。
      • 操作 -> 安全 -> 修改 IAM 角色 中,将上一步创建的 IAM Role 关联到该实例上。
  3. 完成初始化
    • 返回 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。
  1. 确认集群已安装 EKS Pod Identity Agent。EKS Auto Mode 已包含该组件。
  2. 准备或选择配置了以下信任策略的 IAM Role:
  1. 确保 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 集群访问权限

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 ,请参考文档