IO+EKS Prerequisites Summary
IO+EKS Controller Requirements
EKS Cluster Requirements
Number | Component | Item | Detail | Requirements |
---|---|---|---|---|
| Cluster | Software | Kubernetes version | 1.29+ (Recommended) |
IAM | EKS cluster role | Required Policy: [AWS managed]
| ||
Permission | Cluster administrator access | Allow:
| ||
Cluster Endpoint Access | Kubernetes API server endpoint access | Allow:
| ||
Network | VPC | Virtual networking resources | IPv4 CIDR block:
Number of public subnets:
Number of private subnets:
NAT gateways:
| |
NAT Gateway | Network address translation service to connect private subnets to other internet |
| ||
Security Group | Virtual firewall to control inbound and outbound traffic | Created by CloudFormation Template. | ||
Compute | Node Groups IAM | Allows EC2 instances to call AWS services on your behalf | Required Policies: [AWS managed]
| |
Add-ons | Kube-proxy | Enables service networking | v.1.29.1-eksbuild.2+ (Latest Recommended) | |
Amazon VPC CNI | Enables pod networking | v1.16.3-eksbuild.2+ (Latest Recommended) | ||
Amazon EBS CSI Driver | Enables EBS within cluster | - | ||
Exostellar Karpenter | Integrates with X-IO | v0.0.6+ helm registry logout public.ecr.aws export HEADNODE="http://192.168.78.xxx:5000"
export CLUSTER_NAME="integration-new"
export ENV_NAME="k8s" helm upgrade --install karpenter oci://public.ecr.aws/x5d4i9x1/exostellar-karpenter/karpenter \
--version v0.0.6 \
--namespace karpenter \
--create-namespace \
--set "settings.clusterName=${CLUSTER_NAME}" \
--set controller.resources.requests.cpu=1 \
--set controller.resources.requests.memory=1Gi \
--set controller.resources.limits.cpu=1 \
--set controller.resources.limits.memory=1Gi \
--set headnode=$HEADNODE \
--set environmentName=$ENV_NAME \
--wait | ||
Kubernetes | ConfigMap |
| apiVersion: v1
kind: ConfigMap
data:
mapRoles: |
- groups:
- system:bootstrappers
- system:nodes
rolearn: <Ignore this ARN>
username: system:node:{{EC2PrivateDNSName}}
- groups:
- system:masters
rolearn: <Insert the Role ARN of your Worker IAM Role>
username: admin
- groups:
- system:masters
rolearn: <Insert the Role ARN of your Controller IAM Role>
username: admin
mapUsers: |
[] |
IO+EKS Requirements
Number | Component | Item | Detail | Requirements |
---|---|---|---|---|
| Controller | Instance Type | Instance type for the controller | m5d.xlarger (Recommended) |
VPC | Virtual networking resources | Select the virtual networking resources created above | ||
Security Group | Virtual firewall to control inbound and outbound traffic | Select the security group created above by the EKS cluster | ||
IAM | Instance profile | Required Policies: [Customer inline] {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:RunInstances",
"ec2:StopInstances",
"ec2:DescribeSpotPriceHistory",
"ec2:DescribeInstances",
"ec2:DescribeInstanceTypes",
"ec2:DescribeTags",
"ec2:CreateTags",
"ec2:CreateFleet",
"ec2:CreateLaunchTemplate",
"ec2:DeleteLaunchTemplate",
"ec2:TerminateInstances",
"ec2:AssignPrivateIpAddresses",
"ec2:UnassignPrivateIpAddresses",
"ec2:AttachNetworkInterface",
"ec2:DetachNetworkInterface",
"ec2:CreateNetworkInterface",
"ec2:DeleteNetworkInterface",
"ec2:ModifyNetworkInterfaceAttribute",
"ec2:DescribeRegions"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"iam:CreateServiceLinkedRole",
"iam:ListRoles",
"iam:ListInstanceProfiles",
"iam:PassRole",
"iam:GetRole"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ec2:DescribeSubnets",
"ec2:DescribeSecurityGroups",
"ec2:DescribeImages",
"ec2:DescribeKeyPairs",
"ec2:DescribeInstanceTypeOfferings",
"iam:GetInstanceProfile",
"iam:SimulatePrincipalPolicy",
"sns:Publish",
"ssm:GetParameters",
"ssm:GetParametersByPath"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ec2:CreateVolume",
"ec2:DescribeVolumes",
"ec2:AttachVolume",
"ec2:ModifyInstanceAttribute",
"ec2:DetachVolume",
"ec2:DeleteVolume"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ec2:CreateInstanceExportTask",
"ec2:DescribeExportTasks",
"ec2:RebootInstances",
"ec2:CreateSnapshot",
"ec2:DescribeSnapshots"
],
"Resource": "*"
}
]
} | ||
| Worker | IAM | Instance profile | Required Policies: [AWS managed]
[Customer inline] {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:ModifyInstanceMetadataOptions",
"Resource": "*"
}
]
} {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "ec2:UnassignPrivateIpAddresses",
"Resource": "*"
}
]
} |