diff --git a/pkg/actions/cluster/upgrade.go b/pkg/actions/cluster/upgrade.go
index 4dbc825147..f2bf0e5ad3 100644
--- a/pkg/actions/cluster/upgrade.go
+++ b/pkg/actions/cluster/upgrade.go
@@ -128,6 +128,8 @@ func getNextVersion(currentVersion string) (string, error) {
return api.Version1_28, nil
case api.Version1_28:
return api.Version1_29, nil
+ case api.Version1_29:
+ return api.Version1_30, nil
default:
// version of control plane is not known to us, maybe we are just too old...
return "", fmt.Errorf("control plane version %q is not known to this version of eksctl, try to upgrade eksctl first", currentVersion)
diff --git a/pkg/actions/cluster/upgrade_test.go b/pkg/actions/cluster/upgrade_test.go
index c3691ad965..cb89e1f975 100644
--- a/pkg/actions/cluster/upgrade_test.go
+++ b/pkg/actions/cluster/upgrade_test.go
@@ -87,9 +87,9 @@ var _ = Describe("upgrade cluster", func() {
}),
Entry("fails when the version is still not supported", upgradeCase{
- givenVersion: "1.29",
+ givenVersion: "1.30",
eksVersion: api.LatestVersion,
- expectedErrorText: "control plane version \"1.29\" is not known to this version of eksctl",
+ expectedErrorText: "control plane version \"1.30\" is not known to this version of eksctl",
}),
)
})
diff --git a/pkg/actions/nodegroup/testdata/al2-updated-template.json b/pkg/actions/nodegroup/testdata/al2-updated-template.json
index b076f09e8f..19ebd16bd0 100644
--- a/pkg/actions/nodegroup/testdata/al2-updated-template.json
+++ b/pkg/actions/nodegroup/testdata/al2-updated-template.json
@@ -140,7 +140,7 @@
]
},
"NodegroupName": "amazonlinux2",
- "ReleaseVersion": "1.28-20201212",
+ "ReleaseVersion": "1.29-20201212",
"ScalingConfig": {
"DesiredSize": 4,
"MaxSize": 4,
diff --git a/pkg/addons/default/assets/coredns-1.29.json b/pkg/addons/default/assets/coredns-1.29.json
new file mode 100644
index 0000000000..9d1e4a48a9
--- /dev/null
+++ b/pkg/addons/default/assets/coredns-1.29.json
@@ -0,0 +1,367 @@
+{
+ "apiVersion": "v1",
+ "items": [
+ {
+ "apiVersion": "v1",
+ "kind": "Service",
+ "metadata": {
+ "annotations": {
+ "prometheus.io/port": "9153",
+ "prometheus.io/scrape": "true"
+ },
+ "labels": {
+ "eks.amazonaws.com/component": "kube-dns",
+ "k8s-app": "kube-dns",
+ "kubernetes.io/cluster-service": "true",
+ "kubernetes.io/name": "CoreDNS"
+ },
+ "name": "kube-dns",
+ "namespace": "kube-system"
+ },
+ "spec": {
+ "internalTrafficPolicy": "Cluster",
+ "ipFamilies": [
+ "IPv4"
+ ],
+ "ipFamilyPolicy": "SingleStack",
+ "ports": [
+ {
+ "name": "dns",
+ "port": 53,
+ "protocol": "UDP",
+ "targetPort": 53
+ },
+ {
+ "name": "dns-tcp",
+ "port": 53,
+ "protocol": "TCP",
+ "targetPort": 53
+ },
+ {
+ "name": "metrics",
+ "port": 9153,
+ "protocol": "TCP",
+ "targetPort": 9153
+ }
+ ],
+ "selector": {
+ "k8s-app": "kube-dns"
+ },
+ "sessionAffinity": "None",
+ "type": "ClusterIP"
+ }
+ },
+ {
+ "apiVersion": "v1",
+ "kind": "ServiceAccount",
+ "metadata": {
+ "labels": {
+ "eks.amazonaws.com/component": "coredns",
+ "k8s-app": "kube-dns"
+ },
+ "name": "coredns",
+ "namespace": "kube-system"
+ }
+ },
+ {
+ "apiVersion": "v1",
+ "data": {
+ "Corefile": ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n kubernetes cluster.local in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n }\n prometheus :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n"
+ },
+ "kind": "ConfigMap",
+ "metadata": {
+ "labels": {
+ "eks.amazonaws.com/component": "coredns",
+ "k8s-app": "kube-dns"
+ },
+ "name": "coredns",
+ "namespace": "kube-system"
+ }
+ },
+ {
+ "apiVersion": "apps/v1",
+ "kind": "Deployment",
+ "metadata": {
+ "annotations": {},
+ "labels": {
+ "eks.amazonaws.com/component": "coredns",
+ "k8s-app": "kube-dns",
+ "kubernetes.io/name": "CoreDNS"
+ },
+ "name": "coredns",
+ "namespace": "kube-system"
+ },
+ "spec": {
+ "progressDeadlineSeconds": 600,
+ "replicas": 2,
+ "revisionHistoryLimit": 10,
+ "selector": {
+ "matchLabels": {
+ "eks.amazonaws.com/component": "coredns",
+ "k8s-app": "kube-dns"
+ }
+ },
+ "strategy": {
+ "rollingUpdate": {
+ "maxSurge": "25%",
+ "maxUnavailable": 1
+ },
+ "type": "RollingUpdate"
+ },
+ "template": {
+ "metadata": {
+ "creationTimestamp": null,
+ "labels": {
+ "eks.amazonaws.com/component": "coredns",
+ "k8s-app": "kube-dns"
+ }
+ },
+ "spec": {
+ "affinity": {
+ "nodeAffinity": {
+ "requiredDuringSchedulingIgnoredDuringExecution": {
+ "nodeSelectorTerms": [
+ {
+ "matchExpressions": [
+ {
+ "key": "kubernetes.io/os",
+ "operator": "In",
+ "values": [
+ "linux"
+ ]
+ },
+ {
+ "key": "kubernetes.io/arch",
+ "operator": "In",
+ "values": [
+ "amd64",
+ "arm64"
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "podAntiAffinity": {
+ "preferredDuringSchedulingIgnoredDuringExecution": [
+ {
+ "podAffinityTerm": {
+ "labelSelector": {
+ "matchExpressions": [
+ {
+ "key": "k8s-app",
+ "operator": "In",
+ "values": [
+ "kube-dns"
+ ]
+ }
+ ]
+ },
+ "topologyKey": "kubernetes.io/hostname"
+ },
+ "weight": 100
+ }
+ ]
+ }
+ },
+ "containers": [
+ {
+ "args": [
+ "-conf",
+ "/etc/coredns/Corefile"
+ ],
+ "image": "%s.dkr.ecr.%s.%s/eks/coredns:v1.11.1-eksbuild.4",
+ "imagePullPolicy": "IfNotPresent",
+ "livenessProbe": {
+ "failureThreshold": 5,
+ "httpGet": {
+ "path": "/health",
+ "port": 8080,
+ "scheme": "HTTP"
+ },
+ "initialDelaySeconds": 60,
+ "periodSeconds": 10,
+ "successThreshold": 1,
+ "timeoutSeconds": 5
+ },
+ "name": "coredns",
+ "ports": [
+ {
+ "containerPort": 53,
+ "name": "dns",
+ "protocol": "UDP"
+ },
+ {
+ "containerPort": 53,
+ "name": "dns-tcp",
+ "protocol": "TCP"
+ },
+ {
+ "containerPort": 9153,
+ "name": "metrics",
+ "protocol": "TCP"
+ }
+ ],
+ "readinessProbe": {
+ "failureThreshold": 3,
+ "httpGet": {
+ "path": "/ready",
+ "port": 8181,
+ "scheme": "HTTP"
+ },
+ "periodSeconds": 10,
+ "successThreshold": 1,
+ "timeoutSeconds": 1
+ },
+ "resources": {
+ "limits": {
+ "memory": "170Mi"
+ },
+ "requests": {
+ "cpu": "100m",
+ "memory": "70Mi"
+ }
+ },
+ "securityContext": {
+ "allowPrivilegeEscalation": false,
+ "capabilities": {
+ "add": [
+ "NET_BIND_SERVICE"
+ ],
+ "drop": [
+ "ALL"
+ ]
+ },
+ "readOnlyRootFilesystem": true
+ },
+ "terminationMessagePath": "/dev/termination-log",
+ "terminationMessagePolicy": "File",
+ "volumeMounts": [
+ {
+ "mountPath": "/etc/coredns",
+ "name": "config-volume",
+ "readOnly": true
+ }
+ ]
+ }
+ ],
+ "dnsPolicy": "Default",
+ "priorityClassName": "system-cluster-critical",
+ "restartPolicy": "Always",
+ "schedulerName": "default-scheduler",
+ "securityContext": {},
+ "serviceAccount": "coredns",
+ "serviceAccountName": "coredns",
+ "terminationGracePeriodSeconds": 30,
+ "tolerations": [
+ {
+ "effect": "NoSchedule",
+ "key": "node-role.kubernetes.io/control-plane"
+ },
+ {
+ "key": "CriticalAddonsOnly",
+ "operator": "Exists"
+ }
+ ],
+ "volumes": [
+ {
+ "configMap": {
+ "defaultMode": 420,
+ "items": [
+ {
+ "key": "Corefile",
+ "path": "Corefile"
+ }
+ ],
+ "name": "coredns"
+ },
+ "name": "config-volume"
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "apiVersion": "rbac.authorization.k8s.io/v1",
+ "kind": "ClusterRole",
+ "metadata": {
+ "labels": {
+ "eks.amazonaws.com/component": "coredns",
+ "k8s-app": "kube-dns",
+ "kubernetes.io/bootstrapping": "rbac-defaults"
+ },
+ "name": "system:coredns"
+ },
+ "rules": [
+ {
+ "apiGroups": [
+ ""
+ ],
+ "resources": [
+ "endpoints",
+ "services",
+ "pods",
+ "namespaces"
+ ],
+ "verbs": [
+ "list",
+ "watch"
+ ]
+ },
+ {
+ "apiGroups": [
+ ""
+ ],
+ "resources": [
+ "nodes"
+ ],
+ "verbs": [
+ "get"
+ ]
+ },
+ {
+ "apiGroups": [
+ "discovery.k8s.io"
+ ],
+ "resources": [
+ "endpointslices"
+ ],
+ "verbs": [
+ "list",
+ "watch"
+ ]
+ }
+ ]
+ },
+ {
+ "apiVersion": "rbac.authorization.k8s.io/v1",
+ "kind": "ClusterRoleBinding",
+ "metadata": {
+ "annotations": {
+ "rbac.authorization.kubernetes.io/autoupdate": "true"
+ },
+ "labels": {
+ "eks.amazonaws.com/component": "coredns",
+ "k8s-app": "kube-dns",
+ "kubernetes.io/bootstrapping": "rbac-defaults"
+ },
+ "name": "system:coredns"
+ },
+ "roleRef": {
+ "apiGroup": "rbac.authorization.k8s.io",
+ "kind": "ClusterRole",
+ "name": "system:coredns"
+ },
+ "subjects": [
+ {
+ "kind": "ServiceAccount",
+ "name": "coredns",
+ "namespace": "kube-system"
+ }
+ ]
+ }
+ ],
+ "kind": "List"
+}
\ No newline at end of file
diff --git a/pkg/apis/eksctl.io/v1alpha5/assets/schema.json b/pkg/apis/eksctl.io/v1alpha5/assets/schema.json
index c111376dc1..694e01e6ff 100755
--- a/pkg/apis/eksctl.io/v1alpha5/assets/schema.json
+++ b/pkg/apis/eksctl.io/v1alpha5/assets/schema.json
@@ -715,8 +715,8 @@
},
"version": {
"type": "string",
- "description": "Valid variants are: `\"1.23\"`, `\"1.24\"`, `\"1.25\"`, `\"1.26\"`, `\"1.27\"` (default), `\"1.28\"`.",
- "x-intellij-html-description": "Valid variants are: "1.23", "1.24", "1.25", "1.26", "1.27" (default), "1.28".",
+ "description": "Valid variants are: `\"1.23\"`, `\"1.24\"`, `\"1.25\"`, `\"1.26\"`, `\"1.27\"` (default), `\"1.28\"`, `\"1.29\"`.",
+ "x-intellij-html-description": "Valid variants are: "1.23", "1.24", "1.25", "1.26", "1.27" (default), "1.28", "1.29".",
"default": "1.27",
"enum": [
"1.23",
@@ -724,7 +724,8 @@
"1.25",
"1.26",
"1.27",
- "1.28"
+ "1.28",
+ "1.29"
]
}
},
diff --git a/pkg/apis/eksctl.io/v1alpha5/types.go b/pkg/apis/eksctl.io/v1alpha5/types.go
index 59f98b8513..e3766f177e 100644
--- a/pkg/apis/eksctl.io/v1alpha5/types.go
+++ b/pkg/apis/eksctl.io/v1alpha5/types.go
@@ -41,10 +41,12 @@ const (
Version1_28 = "1.28"
+ Version1_29 = "1.29"
+
// DefaultVersion (default)
DefaultVersion = Version1_27
- LatestVersion = Version1_28
+ LatestVersion = Version1_29
DockershimDeprecationVersion = Version1_24
)
@@ -93,8 +95,8 @@ const (
// Not yet supported versions
const (
- // Version1_29 represents Kubernetes version 1.29.x
- Version1_29 = "1.29"
+ // Version1_30 represents Kubernetes version 1.30.x
+ Version1_30 = "1.30"
)
const (
@@ -575,6 +577,7 @@ func SupportedVersions() []string {
Version1_26,
Version1_27,
Version1_28,
+ Version1_29,
}
}
diff --git a/userdocs/src/getting-started.md b/userdocs/src/getting-started.md
index 8ce10a2422..8c45422716 100644
--- a/userdocs/src/getting-started.md
+++ b/userdocs/src/getting-started.md
@@ -109,7 +109,7 @@ To create a basic cluster, but with a different name, run:
eksctl create cluster --name=cluster-1 --nodes=4
```
-EKS supports versions `1.23`, `1.24`, `1.25`, `1.26`, `1.27` (default) and `1.28`.
+EKS supports versions `1.23`, `1.24`, `1.25`, `1.26`, `1.27` (default), `1.28` and `1.29`.
With `eksctl` you can deploy any of the supported versions by passing `--version`.
```sh