Description
What help do you need?
We are migrating from kops cluster to eks cluster and we have to use our custom AMI images, based on these requirements i Think best option is to use EKS managed node group using launch template with custom AMI(I dont want to create new node group and delete old node group everytime we need to change AMI).
I am not able to create managed node group using precreated launch template with correct AMI :
eksctl create nodegroup --name=managed-ng-custom-3 --cluster=my-eks-cluster --region=eu-west-1 --verbose=4
cfg.json =
{
"kind": "ClusterConfig",
"apiVersion": "eksctl.io/v1alpha5",
"metadata": {
"name": "my-eks-cluster",
"region": "eu-west-1",
"version": "1.30"
},
"kubernetesNetworkConfig": {
"serviceIPv4CIDR": "10.100.0.0/16"
},
"iam": {
"withOIDC": false,
"vpcResourceControllerPolicy": true
},
"vpc": {
"id": "vpc-xx",
"cidr": "172.31.0.0/16",
"securityGroup": "sg-xx",
"subnets": {
"public": {
"eu-west-1a": {
"id": "subnet-xx",
"az": "eu-west-1a",
"cidr": "172.31.32.0/20"
},
"eu-west-1b": {
"id": "subnet-xx",
"az": "eu-west-1b",
"cidr": "172.31.0.0/20"
},
"eu-west-1c": {
"id": "subnet-xx",
"az": "eu-west-1c",
"cidr": "172.31.16.0/20"
}
}
},
"sharedNodeSecurityGroup": "sg-xx",
"manageSharedNodeSecurityGroupRules": true,
"autoAllocateIPv6": false,
"nat": {
"gateway": "Single"
},
"clusterEndpoints": {
"privateAccess": false,
"publicAccess": true
}
},
"privateCluster": {
"enabled": false,
"skipEndpointCreation": false
},
"managedNodeGroups": [
{
"name": "managed-ng",
"amiFamily": "AmazonLinux2",
"instanceType": "m5.large",
"desiredCapacity": 2,
"minSize": 2,
"maxSize": 2,
"volumeSize": 80,
"ssh": {
"allow": false,
"publicKeyPath": ""
},
"labels": {
"alpha.eksctl.io/cluster-name": "my-eks-cluster",
"alpha.eksctl.io/nodegroup-name": "managed-ng"
},
"privateNetworking": false,
"tags": {
"alpha.eksctl.io/nodegroup-name": "managed-ng",
"alpha.eksctl.io/nodegroup-type": "managed"
},
"iam": {
"withAddonPolicies": {
"imageBuilder": false,
"autoScaler": false,
"externalDNS": false,
"certManager": false,
"appMesh": false,
"appMeshPreview": false,
"ebs": false,
"fsx": false,
"efs": false,
"awsLoadBalancerController": false,
"albIngress": false,
"xRay": false,
"cloudWatch": false
}
},
"securityGroups": {
"withShared": null,
"withLocal": null
},
"volumeType": "gp3",
"volumeIOPS": 3000,
"volumeThroughput": 125,
"disableIMDSv1": true,
"disablePodIMDS": false,
"instanceSelector": {},
"releaseVersion": ""
}
],
"availabilityZones": [
"eu-west-1c",
"eu-west-1a",
"eu-west-1b"
],
"cloudWatch": {
"clusterLogging": {}
}
}
Manifest :
``apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: my-eks-cluster
region: eu-west-1
version: "1.30"
vpc:
id: "vpc-xx"
subnets:
public:
eu-west-1a: { id: "subnet-xx" }
eu-west-1b: { id: "subnet-xx" }
eu-west-1c: { id: "subnet-xx" }
managedNodeGroups:
- name: managed-ng
launchTemplate:
id: lt-1234``
It seems that launchTemplate in this manifest is ignored. Managed node group is successfully created, but it completely ignored pre-created launch template and instead created its own launch template. Am I missing something ?
I tried to deploy managed node group using same launch template with same AMI image and when i used AWS CLI it was deployed without any issues, so i suppose launch template and ami image is not an issue here.
eksctl version
0.194.0
Thank you for help.