From 67fd6098c12281df8590701dfa96442ba46addde Mon Sep 17 00:00:00 2001 From: William Wang Date: Mon, 1 Dec 2025 19:04:46 +0800 Subject: [PATCH] fix: some failed version check when create cluster (#2877) * fix: runc version check failed Signed-off-by: William Wang * fix: kubectl version check failed Signed-off-by: William Wang * fix: helm version check failed Signed-off-by: William Wang * fix: use .kube_version in capkk task Signed-off-by: William Wang * fix: helm version check in capkk Signed-off-by: William Wang --------- Signed-off-by: William Wang --- .../capkk/roles/install/kubernetes/tasks/main.yaml | 11 ++++++++--- builtin/core/roles/cri/containerd/tasks/main.yaml | 2 +- .../pre-kubernetes/tasks/install_binaries.yaml | 11 ++++++++--- pkg/converter/tmpl/template_test.go | 8 ++++++++ 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/builtin/capkk/roles/install/kubernetes/tasks/main.yaml b/builtin/capkk/roles/install/kubernetes/tasks/main.yaml index a7a2e1e5..355e823e 100644 --- a/builtin/capkk/roles/install/kubernetes/tasks/main.yaml +++ b/builtin/capkk/roles/install/kubernetes/tasks/main.yaml @@ -1,7 +1,7 @@ --- - name: Check if helm is installed ignore_errors: true - command: helm version --template "{{ .Version }}" + command: helm version --template "{{ "{{" }} .Version {{ "}}" }}" register: helm_install_version - name: Install helm when: or (.helm_install_version.error | empty | not) (.helm_install_version.stdout | ne .helm_version) @@ -30,12 +30,17 @@ - name: Check if kubectl is installed ignore_errors: true - command: kubectl version --short + command: | + {{- if .kube_version | semverCompare ">=v1.28.0" -}} + kubectl version --client + {{- else -}} + kubectl version --client --short + {{- end -}} register: kubectl_install_version register_type: yaml - name: Sync kubectl to remote when: | - or (.kubectl_install_version.error | empty | not) ((get .kubectl_install_version.stdout "Server Version") | ne .kube_version) + or (.kubectl_install_version.error | empty | not) ((get .kubectl_install_version.stdout "Client Version") | ne .kube_version) copy: src: >- {{ .binary_dir }}/kube/{{ .kube_version }}/{{ .binary_type }}/kubectl diff --git a/builtin/core/roles/cri/containerd/tasks/main.yaml b/builtin/core/roles/cri/containerd/tasks/main.yaml index cfb9c04b..e97f359c 100644 --- a/builtin/core/roles/cri/containerd/tasks/main.yaml +++ b/builtin/core/roles/cri/containerd/tasks/main.yaml @@ -5,7 +5,7 @@ register: runc_install_version - name: Containerd | Ensure the runc binary is present on the remote node - when: or (.runc_install_version.error | empty | not) (.runc_install_version.stdout | contains (printf "runc version %s\n" (.cri.runc_version | default "" | trimPrefix "v" )) | not) + when: or (.runc_install_version.error | empty | not) (.runc_install_version.stdout | regexMatch (printf "runc version %s\\s+" (.cri.runc_version | default "" | trimPrefix "v" )) | not) copy: src: >- {{ .binary_dir }}/runc/{{ .cri.runc_version }}/{{ .binary_type }}/runc.{{ .binary_type }} diff --git a/builtin/core/roles/kubernetes/pre-kubernetes/tasks/install_binaries.yaml b/builtin/core/roles/kubernetes/pre-kubernetes/tasks/install_binaries.yaml index 0b1c8e62..2a5957da 100644 --- a/builtin/core/roles/kubernetes/pre-kubernetes/tasks/install_binaries.yaml +++ b/builtin/core/roles/kubernetes/pre-kubernetes/tasks/install_binaries.yaml @@ -1,7 +1,7 @@ --- - name: Binary | Verify if Helm is already installed ignore_errors: true - command: helm version --template "{{ .Version }}" + command: helm version --template "{{ "{{" }} .Version {{ "}}" }}" register: helm_install_version - name: Binary | Install Helm if not present or version mismatch @@ -32,13 +32,18 @@ - name: Binary | Check if kubectl is installed ignore_errors: true - command: kubectl version --short + command: | + {{- if .kubernetes.kube_version | semverCompare ">=v1.28.0" -}} + kubectl version --client + {{- else -}} + kubectl version --client --short + {{- end -}} register: kubectl_install_version register_type: yaml - name: Binary | Install kubectl if not present or version mismatch when: | - or (.kubectl_install_version.error | empty | not) ((get .kubectl_install_version.stdout "Server Version") | ne .kubernetes.kube_version) + or (.kubectl_install_version.error | empty | not) ((get .kubectl_install_version.stdout "Client Version") | ne .kubernetes.kube_version) copy: src: >- {{ .binary_dir }}/kube/{{ .kubernetes.kube_version }}/{{ .binary_type }}/kubectl diff --git a/pkg/converter/tmpl/template_test.go b/pkg/converter/tmpl/template_test.go index 70ca7712..ea6f5d10 100644 --- a/pkg/converter/tmpl/template_test.go +++ b/pkg/converter/tmpl/template_test.go @@ -294,6 +294,14 @@ func TestParseValue(t *testing.T) { }, excepted: []byte("bar"), }, + { + name: "{{ & }} character translation", + input: "helm version --template \"{{ \"{{\" }} .Version {{ \"}}\" }}\"", + variable: map[string]any{ + "foo": "bar", + }, + excepted: []byte("helm version --template \"{{ .Version }}\""), + }, } for _, tc := range testcases {