部署到AWS EKS
参考 概述▸,AutoMQ 支持部署到 Kubernetes 上。本文介绍 AutoMQ 部署到AWS EKS 平台的安装过程。
本文中提及 AutoMQ 产品服务方、AutoMQ 服务方、AutoMQ,均特指 AutoMQ HK Limited及其附属公司。
操作流程
步骤 1:安装环境控制台
参考概述▸,AutoMQ 支持部署到 EKS 集群。在 EKS 部署模式下,首先仍然需要安装 AutoMQ 控制台,再通过控制台界面操作 EKS,将集群部署到 EKS。
在 AWS 上,同时支持基于 Marketplace 和 Terraform 安装环境控制台。
通过 Marketplace 安装控制台(推荐) ,参考从 AWS Marketplace 安装环境▸。
通过 Terraform 安装控制台,参考使用 Terraform Module 安装环境▸。
注意:
在上述安装环境控制台时,从 AWS Marketplace 安装环境▸ 集群部署类型必须设置为 Kubernetes 。这样才能支持后续的步骤 2-4,将 AutoMQ 集群安装到 EKS 上。
AutoMQ 控制台安装完成后,需要从控制台界面或者 Terraform output 输出菜单获取环境控制台地址、初始用户名、密码以及 AutoMQ 所需的 IAMRoleforAutoMQEnvironmentConsole 和 IAMRoleforAutoMQDedicatedNodeGroup 。前者用于配置控制台的访问权限,后者用于创建 AutoMQ 独享节点组。
步骤 2:创建 EKS 集群 IAM Role
参考 AWS EKS 文档,每个 EKS 集群需要绑定 IAM Role,以实现被授权访问用户的 AWS 云资源。因此,创建 EKS 集群前需要先创建 EKS 集群专用的 IAM Role。
- 访问 IAM 控制台。点击创建 Role。选择如下参数:
Trusted entity type:选择 AWS Service。
Service Use case:选择 EKS和 EKS-Cluster。
- 点击下一步,输入自定义的角色名称,并创建 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 集群。
编辑入站规则,将 AutoMQ 控制台所在的安全组加入入站规则中,协议选全部流量。
步骤 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, 参考下方截图,选择 AutoMQ 控制台创建的IAMRoleforAutoMQDedicatedNodeGroup, 并配置污点。污点的键是dedicated ,值是 automq ,效果是 NO_SCHEDULE 。
- 选择 AutoMQ 专享节点组的机型、数量和可用区子网。完成节点组创建 。
创建节点组时,只支持单可用区 或者三可用区 ,如果选择了其他数量的可用区,后期无法创建实例。
设置参数 | 取值说明 |
---|---|
机型配置 |
注意:AutoMQ 必须运行在指定机型的 VM 中,创建节点组如果选择了非预设的机型,后续无法使用该节点组。 |
AMI Type | 注意:AMI Type 务必选择Amazon Linux 2,默认的 Amazon Linux 2023 暂不支持。 |
子网 |
注意: AutoMQ 要求后续创建集群的可用区和节点组必须完全一致。因此,如果需要创建单可用区的 AutoMQ 集群,则此处创建单可用区节点组;如果需要创建三可用区 AutoMQ 集群,则此处同样创建三可用区节点组,两者不可混用。 |
数量 |
|
步骤 6:初始化本地 Kubectl 和 AWS CLI 工具
AWS EKS 集群创建完成后,一些系统插件例如 CSI、NetworkPolicy 组件默认并不安装,需要手工配置,按照 EKS 插件之前。需要在本地安装 AWS CLI 和 Kubectl 工具。
安装 AWS CLI 和 Kubectl 工具。参考文档如下:
输入下方命令生成 KubeConfig 配置文件,这会生成配置文件到默认路径(
~/.kube/config
)。用户也可以指定生成的配置文件路径,但需要注意配置环境变量 KUBECONFIG。
// replace the region and cluster-name param
aws eks update-kubeconfig --region <region> --name <cluster-name>
步骤 7:配置 EKS AutoScaler
在创建 AutoMQ 实例以及扩缩容场景下自动扩展 EKS Node,需要配置 EKS AutoScaler 实现节点按需扩展。配置方式如下:
从 下载链接 下载 AutoScaler 的配置文件。
修改配置文件中的,EKS 集群名称参数,保存并执行安装命令。
- 执行安装命令,安装 AutoScaler。
// Check the config yaml path
kubectl apply -f cluster-autoscaler-autodiscover.yaml
安装完成后,可以检查 EKS AutoScaler 组件的运行状态,如果找到对应的 Running Deployment 则说明安装成功。
步骤 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。
"oidc.eks.{RegionCode}.amazonaws.com/id/{ProviderID}:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa"
- 进入 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 模式并保存。
{
"enableNetworkPolicy": "true"
}
步骤 10:安装 AWS Load Balancer Controller
AWS 默认不提供 Load Balancer Controller 的安装,需要用户手动安装插件。安装步骤如下:
- 添加 Helm 仓库,并安装 AWS Load Balancer CRD。
helm repo add eks https://aws.github.io/eks-charts
kubectl apply -k "github.com/aws/eks-charts/stable/aws-load-balancer-controller/crds?ref=master"
- 修改下方命令中的 eks-cluster-id,设置为实际的集群 ID,并执行。
helm upgrade -i aws-load-balancer-controller eks/aws-load-balancer-controller -n kube-system --set clusterName=<eks-cluster-id>
- 验证安装效果。
步骤 11:进入环境控制台,配置 Kubernetes 集群信息
首次进入 AutoMQ BYOC 控制台,需要配置 Kubernetes 集群信息和授权才可正常使用。按照控制台指引页面填写步骤 2 创建的 EKS 集群 ID 以及 Kubeconfig ,完成环境初始化。
- 前往 EKS 集群,点击 Access 菜单,创建 Access Entry。
- 选择步骤 1 安装环境控制台生成的 AutoMQ 专用的 IAM Role,类型设置为 Standard。
选择授权的 Policy 为 AmazonEKSClusterAdminPolicy ,范围为 Cluster ,创建。
- 复制步骤3 创建的 EKS 集群的集群 Name 。录AutoMQ 控制台,录入集群 Name ,完成初始化。