Skip to content

Commit 4db3502

Browse files
authored
kube generic: fix feature_gates extraArgs format for kubeadm v1beta3 (#851)
The kubeadm v1beta3 API expects extraArgs as a map (key: value) not an array of objects (name/value). This was causing cluster creation to fail with: "json: cannot unmarshal array into Go struct field APIServer.apiServer.extraArgs of type map[string]string" Changes: - config_bootstrap.yaml: Use map format for extraArgs instead of array - __init__.py: Remove premature "=true" append since template handles it
1 parent ea18b6f commit 4db3502

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

kvirt/cluster/kubeadm/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -243,9 +243,9 @@ def create(config, plandir, cluster, overrides):
243243
insecure=True, cmd=urlcmd, vmport=disconnected_vmport)
244244
disconnected_url = os.popen(urlcmd).read().strip()
245245
data['disconnected_url'] = disconnected_url
246-
feature_gates = data['feature_gates']
247-
if feature_gates:
248-
data['feature_gates'] = [f"{feature_gate}=true" for feature_gate in feature_gates]
246+
# Note: feature_gates is passed as-is to the template.
247+
# The template handles formatting for both extraArgs (comma-separated key=true)
248+
# and KubeletConfiguration featureGates (YAML map with key: true)
249249
result = config.plan(plan, inputfile=f'{plandir}/bootstrap.yml', overrides=data)
250250
if result['result'] != "success":
251251
return result

kvirt/cluster/kubeadm/config_bootstrap.yaml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -65,22 +65,22 @@ proxy:
6565
apiServer:
6666
certSANs:
6767
- {{ api_fqdn }}
68-
{% if feature_gates %}
68+
{% if feature_gates or runtime_config %}
6969
extraArgs:
7070
{% if runtime_config %}
71-
- name: "runtime-config"
72-
value: "{{ runtime_config_string|join(',') }}"
71+
runtime-config: "{{ runtime_config_string|join(',') }}"
72+
{% endif %}
73+
{% if feature_gates %}
74+
feature-gates: "{{ feature_gates_string|join(',') }}"
7375
{% endif %}
74-
- name: "feature-gates"
75-
value: "{{ feature_gates_string|join(',') }}"
76+
{% endif %}
77+
{% if feature_gates %}
7678
controllerManager:
7779
extraArgs:
78-
- name: "feature-gates"
79-
value: "{{ feature_gates_string|join(',') }}"
80+
feature-gates: "{{ feature_gates_string|join(',') }}"
8081
scheduler:
8182
extraArgs:
82-
- name: "feature-gates"
83-
value: "{{ feature_gates_string|join(',') }}"
83+
feature-gates: "{{ feature_gates_string|join(',') }}"
8484
---
8585
apiVersion: kubelet.config.k8s.io/v1beta1
8686
cgroupDriver: systemd

0 commit comments

Comments
 (0)