From 4b42a9bf49bfadaf5a992a921f27ce163dc71495 Mon Sep 17 00:00:00 2001 From: Yajo Date: Wed, 21 Jul 2021 12:37:17 +0000 Subject: [PATCH] fix: restore clustering feature MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For some weird reason, string booleans were set on `k3s_control_node` and `k3s_primary_control_node`, making their behavior non-obvious (for python `bool("false") == True`). This fixes that problem, and BTW restores the ability to create clusters, which got lost with this bug. After running the role against a cluster, see: ```sh ❯ ansible -i inventories/testing.yaml k8s_node -m command -ba 'kubectl get node' vm0 | CHANGED | rc=0 >> NAME STATUS ROLES AGE VERSION vm0 Ready control-plane,etcd,master 9m19s v1.21.2+k3s1 vm2 | CHANGED | rc=0 >> NAME STATUS ROLES AGE VERSION vm2 Ready control-plane,etcd,master 9m22s v1.21.2+k3s1 vm1 | CHANGED | rc=0 >> NAME STATUS ROLES AGE VERSION vm1 Ready control-plane,etcd,master 9m22s v1.21.2+k3s1 ``` Now, after the patch: ```sh ❯ ansible -i inventories/testing.yaml k8s_node -m command -ba 'kubectl get node' vm0 | CHANGED | rc=0 >> NAME STATUS ROLES AGE VERSION vm0 Ready control-plane,etcd,master 2m2s v1.21.2+k3s1 vm1 Ready control-plane,etcd,master 58s v1.21.2+k3s1 vm2 Ready control-plane,etcd,master 80s v1.21.2+k3s1 vm1 | CHANGED | rc=0 >> NAME STATUS ROLES AGE VERSION vm0 Ready control-plane,etcd,master 2m2s v1.21.2+k3s1 vm1 Ready control-plane,etcd,master 58s v1.21.2+k3s1 vm2 Ready control-plane,etcd,master 80s v1.21.2+k3s1 vm2 | CHANGED | rc=0 >> NAME STATUS ROLES AGE VERSION vm0 Ready control-plane,etcd,master 2m2s v1.21.2+k3s1 vm1 Ready control-plane,etcd,master 58s v1.21.2+k3s1 vm2 Ready control-plane,etcd,master 80s v1.21.2+k3s1 ``` @Tecnativa TT2541 --- tasks/build/preconfigure-k3s.yml | 4 ++-- templates/k3s.service.j2 | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tasks/build/preconfigure-k3s.yml b/tasks/build/preconfigure-k3s.yml index dc278df..68eaa1a 100644 --- a/tasks/build/preconfigure-k3s.yml +++ b/tasks/build/preconfigure-k3s.yml @@ -9,12 +9,12 @@ - name: Ensure k3s control node fact is set ansible.builtin.set_fact: - k3s_control_node: "{{ 'false' if k3s_build_cluster else 'true' }}" + k3s_control_node: "{{ false if k3s_build_cluster else true }}" when: k3s_control_node is not defined - name: Ensure k3s primary control node fact is set ansible.builtin.set_fact: - k3s_primary_control_node: "{{ 'false' if k3s_build_cluster else 'true' }}" + k3s_primary_control_node: "{{ false if k3s_build_cluster else true }}" when: k3s_primary_control_node is not defined - name: Ensure k3s control plane port is captured diff --git a/templates/k3s.service.j2 b/templates/k3s.service.j2 index 7fca63b..add8bca 100644 --- a/templates/k3s.service.j2 +++ b/templates/k3s.service.j2 @@ -29,7 +29,7 @@ ExecStart={{ k3s_install_dir }}/k3s {% if k3s_control_node %} server {% if (k3s_etcd_datastore is defined and k3s_etcd_datastore) and (k3s_primary_control_node is not defined or not k3s_primary_control_node) and k3s_controller_list | length > 1 %} - --server https://{{ k3s_registration_address }}:{{ k3s_control_plane_port | default(6443) }} + --server https://{{ k3s_registration_address }}:{{ k3s_control_plane_port | default(6443) | string }} --token-file {{ k3s_token_location }} {% endif %} {% if k3s_server is defined %} @@ -37,7 +37,7 @@ ExecStart={{ k3s_install_dir }}/k3s {% endif %} {% else %} agent - --server https://{{ k3s_registration_address }}:{{ k3s_control_plane_port | default(6443) }} + --server https://{{ k3s_registration_address }}:{{ k3s_control_plane_port | default(6443) | string }} --token-file {{ k3s_token_location }} {% if k3s_agent is defined %} --config {{ k3s_config_file }}