From 44ab38baaeff78ac498b044663cbe1eb82485a29 Mon Sep 17 00:00:00 2001 From: Seena Fallah Date: Thu, 10 Sep 2026 09:42:37 +0200 Subject: [PATCH] control-plane: fix kubeadm ops when advertiseAddress cannot be derived from default gateway (#13156) * download: add apiserver ip in InitConfiguration In setups where the advertiseAddress cannot be derived from the default gateway, setting localAPIEndpoint.advertiseAddress will eliminate the error caused by that. this is like other kubeadm configs that we have. Signed-off-by: Seena Fallah * control-plane: pass kubeadm config when creating token kubeadm token create subcommand will generate a default config when nothing as --config is passed. therefore if we have setups that need the config values to let kubeadm work (like if the ip cannot be derived by the default gateway) it will fail. Signed-off-by: Seena Fallah --------- Signed-off-by: Seena Fallah --- roles/download/templates/kubeadm-images.yaml.j2 | 2 ++ roles/kubernetes/control-plane/tasks/kubeadm-setup.yml | 4 ++-- roles/kubernetes/kubeadm/tasks/main.yml | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/roles/download/templates/kubeadm-images.yaml.j2 b/roles/download/templates/kubeadm-images.yaml.j2 index d14e1958d..3a49d45fb 100644 --- a/roles/download/templates/kubeadm-images.yaml.j2 +++ b/roles/download/templates/kubeadm-images.yaml.j2 @@ -1,5 +1,7 @@ apiVersion: kubeadm.k8s.io/v1beta4 kind: InitConfiguration +localAPIEndpoint: + advertiseAddress: "{{ kube_apiserver_address }}" nodeRegistration: criSocket: {{ cri_socket }} --- diff --git a/roles/kubernetes/control-plane/tasks/kubeadm-setup.yml b/roles/kubernetes/control-plane/tasks/kubeadm-setup.yml index 3c692245c..7c431fd17 100644 --- a/roles/kubernetes/control-plane/tasks/kubeadm-setup.yml +++ b/roles/kubernetes/control-plane/tasks/kubeadm-setup.yml @@ -221,7 +221,7 @@ - name: Create hardcoded kubeadm token for joining nodes with 24h expiration (if defined) shell: >- {{ bin_dir }}/kubeadm --kubeconfig {{ kube_config_dir }}/admin.conf token delete {{ kubeadm_token }} || :; - {{ bin_dir }}/kubeadm --kubeconfig {{ kube_config_dir }}/admin.conf token create {{ kubeadm_token }} + {{ bin_dir }}/kubeadm --kubeconfig {{ kube_config_dir }}/admin.conf token create {{ kubeadm_token }} --config={{ kube_config_dir }}/kubeadm-config.yaml changed_when: false when: - inventory_hostname == first_kube_control_plane @@ -235,7 +235,7 @@ when: inventory_hostname == first_kube_control_plane and remove_anonymous_access - name: Create kubeadm token for joining nodes with 24h expiration (default) - command: "{{ bin_dir }}/kubeadm --kubeconfig {{ kube_config_dir }}/admin.conf token create" + command: "{{ bin_dir }}/kubeadm --kubeconfig {{ kube_config_dir }}/admin.conf token create --config={{ kube_config_dir }}/kubeadm-config.yaml" changed_when: false register: temp_token retries: 5 diff --git a/roles/kubernetes/kubeadm/tasks/main.yml b/roles/kubernetes/kubeadm/tasks/main.yml index 1191b9986..5364c7b2c 100644 --- a/roles/kubernetes/kubeadm/tasks/main.yml +++ b/roles/kubernetes/kubeadm/tasks/main.yml @@ -40,7 +40,7 @@ run_once: true - name: Create kubeadm token for joining nodes with 24h expiration (default) - command: "{{ bin_dir }}/kubeadm token create" + command: "{{ bin_dir }}/kubeadm token create --config={{ kube_config_dir }}/kubeadm-config.yaml" register: temp_token delegate_to: "{{ groups['kube_control_plane'][0] }}" when: kubeadm_token is not defined