From 777864f826a1025ba66232bf70a13000fd871905 Mon Sep 17 00:00:00 2001 From: Jacob Weinstock Date: Mon, 10 Jun 2024 21:52:09 -0600 Subject: [PATCH] Update kube version, add kubevip version, handle kubevip for k8s > 1.29: Move the default k8s version to 1.29. Upgrade to kubevip 0.8.0. Handle the super-admin.conf in kubevip for k8s versions >= 1.29. Signed-off-by: Jacob Weinstock --- capt/config.yaml | 3 ++- capt/tasks/Taskfile-capi.yaml | 8 ++++++++ capt/templates/kustomization.tmpl | 11 ++++++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/capt/config.yaml b/capt/config.yaml index b09f4da0..edc29ac3 100644 --- a/capt/config.yaml +++ b/capt/config.yaml @@ -9,8 +9,9 @@ counts: versions: capt: 0.5.3 chart: 0.4.4 - kube: v1.28.3 + kube: v1.29.4 os: 20.04 + kubevip: 0.8.0 os: registry: ghcr.io/jacobweinstock/capi-images distro: ubuntu diff --git a/capt/tasks/Taskfile-capi.yaml b/capt/tasks/Taskfile-capi.yaml index d69d2a98..0a82ab8b 100644 --- a/capt/tasks/Taskfile-capi.yaml +++ b/capt/tasks/Taskfile-capi.yaml @@ -115,7 +115,15 @@ tasks: sh: yq eval '.tinkerbell.vip' {{.STATE_FILE_FQ_PATH}} CLUSTER_NAME: sh: yq eval '.clusterName' {{.STATE_FILE_FQ_PATH}} + KUBEVIP_VERSION: + sh: yq eval '.versions.kubevip' {{.STATE_FILE_FQ_PATH}} + CONTROL_PLANE_VIP: + sh: yq eval '.cluster.controlPlane.vip' {{.STATE_FILE_FQ_PATH}} + CONF_PATH: # https://github.com/kube-vip/kube-vip/issues/684 + sh: "[[ $(echo {{.KUBE_VERSION}} | awk -F. '{print $2}') -gt 28 ]] && echo /etc/kubernetes/super-admin.conf || echo /etc/kubernetes/admin.conf" vars: + KUBE_VERSION: + sh: yq eval '.versions.kube' {{.STATE_FILE_FQ_PATH}} OUTPUT_DIR: sh: yq eval '.outputDir' config.yaml sources: diff --git a/capt/templates/kustomization.tmpl b/capt/templates/kustomization.tmpl index 7d1e6b89..da20bae3 100644 --- a/capt/templates/kustomization.tmpl +++ b/capt/templates/kustomization.tmpl @@ -224,4 +224,13 @@ patches: sudo: ALL=(ALL) NOPASSWD:ALL sshAuthorizedKeys: - $SSH_AUTH_KEY - + - target: + group: controlplane.cluster.x-k8s.io + kind: KubeadmControlPlane + name: "$CLUSTER_NAME-.*" + version: v1beta1 + patch: |- + - op: add + path: /spec/kubeadmConfigSpec/preKubeadmCommands + value: + - mkdir -p /etc/kubernetes/manifests && ctr images pull ghcr.io/kube-vip/kube-vip:v$KUBEVIP_VERSION && ctr run --rm --net-host ghcr.io/kube-vip/kube-vip:v$KUBEVIP_VERSION vip /kube-vip manifest pod --arp --interface $(ip -4 -j route list default | jq -r .[0].dev) --address $CONTROL_PLANE_VIP --controlplane --leaderElection --k8sConfigPath $CONF_PATH > /etc/kubernetes/manifests/kube-vip.yaml