Throughout the product’s full lifecycle, AutoMQ will maintain deep and continuous integration with Amazon Elastic Kubernetes Service (EKS) and EKS Anywhere (EKS-A).To uphold this commitment, we ensure:Continuous version compatibility: We guarantee that each new version of AutoMQ will be compatible with both current and future versions of EKS and EKS-A. Additionally, we proactively adapt to updates on the AWS platform, offering users a forward-compatible experience.Timely response and resolution: We have established a clear response mechanism to quickly identify and resolve any configuration, security, and non-security issues reported by customers or AWS.
Prepare EKS Cluster and Compute Resources
If you expect to run the AutoMQ cluster on Kubernetes, you need to prepare an EKS cluster for AutoMQ to use. If you expect to deploy the AutoMQ cluster on EC2, you do not need to prepare an EKS cluster.Step 1: Create the Required IAM Roles
Before creating the EKS cluster and compute resources, create a dedicated IAM Role. This Role is used for the EKS cluster’s own service authorization.- Access the IAM console and click Create Role.
- Trusted entity type: Select AWS Service.
- Service Use case: Select EKS-Cluster.
- Click Next, enter a custom role name, and create the IAM Role.
Step 2: Create EKS Cluster
- Log in to the AWS EKS console, click Create cluster, and select the custom creation mode.
-
Configure basic cluster information:
- Bind the EKS cluster IAM Role created in the previous step.
- Select an EKS-supported Kubernetes version that meets the AutoMQ release requirements.
-
Configure VPC network:
- Select the VPC you have prepared for AutoMQ; this VPC should be consistent with the VPC where the application is located.
- Select the private subnets for deploying the cluster.
- It is recommended to select the default security group for the VPC.
- Keep other default configurations and create the EKS cluster.
-
Authorize console access.
To allow AutoMQ Console to manage the EKS cluster, authorize the IAM Role used by the console.
- Go to the Access menu of the EKS cluster and click Create Access Entry.
- Select the IAM Role used by AutoMQ Console.
- Set Type to Standard.
- Click Next, and on the Add access policy page, select the AmazonEKSClusterAdminPolicy policy.
- Select Cluster for the Scope and click Add.
- Complete the creation.
-
Set security group rules to allow access to Pods and the EKS API Server service from outside the EKS cluster.
AutoMQ Console needs to call the EKS cluster API Server, so ensure that the network where the console runs can access the API Server on port 443. In addition, AutoMQ Brokers expose service ports. If components outside the cluster, including AutoMQ Console and Producer/Consumer applications, need to access AutoMQ, add inbound rules to the EKS cluster security group.
- Ports:
443,9090,9092,9102,9122,9112,8083. - Source: Set the CIDR ranges or security groups according to where AutoMQ Console and your applications run.
- Ports:
Step 3: Prepare EKS Compute Capacity
Prepare stable capacity for Kubernetes system components and dedicated capacity for AutoMQ workloads. Dedicated AutoMQ capacity can use EKS managed node groups or Karpenter.1. Create a System Node Group
- Go to the EKS cluster details page, click the Compute menu, and Create node group.
- IAM Role: Select the node group IAM Role you created in Step 1.
- Instance Configuration: Select
t3.mediumor equivalent instances, with a recommended quantity of 2-3. - Subnet: Select all private subnets required for EKS deployment.
- Complete the node group creation.
2. Prepare Dedicated AutoMQ Capacity
Choose one of the following capacity types. EKS managed node group- Go to the Compute menu and Create node group.
- IAM Role: Select the node group IAM Role created in Step 1.
- Custom label: Add
node-type=automq. - Taints: Add key
dedicated, valueautomq, and effectNO_SCHEDULE. - Instance Configuration: Select an instance type supported by AutoMQ Console.
- Subnet: Select private subnets in the one or three Availability Zones planned for the AutoMQ instance.
- Scaling Configuration: Set a maximum size that can satisfy the planned AutoMQ node count. A starting desired size of 3 nodes is recommended.
- Complete the node group creation.
- Add the custom label
node-type=automqand taintdedicated=automq:NoScheduleunderspec.template. - Ensure that
spec.template.spec.requirementspermits the instance types and Availability Zones selected in AutoMQ Console. - Set CPU and memory limits that can satisfy the planned AutoMQ node count.
3. Prepare Kafka Connector Capacity (Optional)
If you plan to use the managed Kafka Connect service provided by AutoMQ, prepare node resources for Connector. Create a separate node pool by referring to the system node group steps, or scale up the system node group to ensure sufficient compute resources.Step 4: Initialize Local Tools and Configure EKS Plugins
The newly created EKS cluster needs to have some necessary system plugins installed to work with AutoMQ.1. Initialize Local Tools
- Install and configure AWS CLI, kubectl, and Helm in your local environment.
- Execute the following command to generate the KubeConfig configuration file so that
kubectlcan connect to your EKS cluster.
2. Configure Cluster Autoscaler for managed node groups (optional)
Use Cluster Autoscaler when EKS managed node groups need to scale on demand. Skip this step when you use Karpenter, which provisions nodes through its own controllers.- Download the AutoScaler configuration file from the download link.
- Modify the configuration file, replacing
<YOUR CLUSTER NAME>with your EKS cluster name. - Execute the installation command:
3. Prepare IAM authorization for EKS add-ons
The Amazon EBS CSI Driver and AWS Load Balancer Controller need IAM permissions to operate AWS resources. The example commands below use IRSA andeksctl, so create an IAM OIDC provider for the EKS cluster first. For details, see the AWS documentation Create an IAM OIDC provider for your cluster.
This OIDC provider is used by the EKS add-ons in the following steps. AutoMQ workload Pods can use either EKS Pod Identity or IRSA. Prepare that workload IAM Role and ServiceAccount in Step 5.
4. Configure Amazon EBS CSI Driver
The EKS cluster needs this plugin to manage storage volumes.- Refer to the official AWS documentation “Amazon EBS CSI driver” to create a dedicated IAM Role for the CSI Driver after creating the OIDC Provider above.
- After completing the IAM Role and Trust Policy configuration, go to the Add-ons tab of the EKS cluster console, add the Amazon EBS CSI Driver, and select the IAM Role created in the previous step.
5. Install AWS Load Balancer Controller
This plugin is used to manage Load Balancers and provide an external access entry for AutoMQ to the EKS cluster. To install the Load Balancer Controller, you can refer to the official documentation.- Execute the following command to generate the IAM Policy.
- Create an IAM Role and attach the Policy created in the previous step to this Role.
- Add the Helm repository and install the CRD:
- Execute the installation command, paying attention to replace
<eks-cluster-id>with your cluster name,<Your RegionID>with your region ID, and<Your VPCID>with your VPC ID:
Step 5: Prepare the AutoMQ Workload IAM Role and ServiceAccount
AutoMQ data plane Pods need AWS permissions to access cloud resources such as S3. Before you create an AutoMQ instance, prepare an IAM Role and a Kubernetes ServiceAccount for the AutoMQ workload. You can bind the ServiceAccount to the IAM Role in either of these ways:Install the Environment Console
After preparing the EKS cluster and compute resources, choose either Deploy AutoMQ Console on EC2▸ or Deploy AutoMQ Console on EKS▸ based on your operational requirements. The console deployment mode does not restrict running the AutoMQ data plane on EKS.Create an AutoMQ instance on Kubernetes
Sign in to AutoMQ Console, create an instance, and configure these fields:- Deployment type: Select Kubernetes.
- VPC and Availability Zones: Select the VPC used by EKS and either one or three workload Availability Zones.
- Kubernetes cluster: Select the EKS cluster.
- Load balancer subnets: Select NLB subnets that cover the workload Availability Zones.
- Instance type: Select a type permitted by the managed node group or Karpenter NodePool.
- Scheduling YAML: If the dedicated compute pool has labels or taints, enter the corresponding SchedulingSpec.
- Preview the configuration and create the instance.
Appendix: Configure EKS Pod Identity for AutoMQ workloads
For the complete AWS procedure, see Learn how EKS Pod Identity grants pods access to AWS services. Before you start, make sure the EKS Pod Identity Agent is installed in the cluster. You do not need this step if EKS Auto Mode is enabled. The IAM Role must belong to the same AWS account as the EKS cluster for a direct Pod Identity association. Also make sure the AWS principal that creates the association hasiam:PassRole permission for the IAM Role.
- Create an IAM Role and attach the IAM permission policy required by AutoMQ.
-
Configure the role trust policy for EKS Pod Identity:
-
Create the namespace and ServiceAccount:
-
Create the Pod Identity association:
- Before creating the AutoMQ instance, confirm that the association is active and the ServiceAccount exists in the target namespace.
Appendix: Configure IRSA for AutoMQ workloads
For the complete AWS procedure, see IAM roles for service accounts.-
Create an IAM OIDC provider for the EKS cluster. You only need to do this once for each cluster.
- Create an IAM Role and attach the IAM permission policy required by AutoMQ.
-
Configure the role trust policy for IRSA:
-
Create the namespace and ServiceAccount, and annotate the ServiceAccount with the IAM Role ARN:
- Before creating the AutoMQ instance, confirm that the annotated ServiceAccount exists in the target namespace.