From d105410b6bc6c7b854c2aa770605aa1c94e917d8 Mon Sep 17 00:00:00 2001 From: Stephen Bonnell Date: Wed, 6 Mar 2024 08:19:51 -0500 Subject: [PATCH] feat!(kube-vip): Enable flux taking over kube-vip post-deployment. (#1357) * feat!(kube-vip): Enable flux taking over kube-vip post-deployment. * Update bootstrap/templates/kubernetes/apps/kube-system/kube-vip/app/kustomization.yaml.j2 * Update bootstrap/templates/kubernetes/apps/kube-system/kube-vip/app/kustomization.yaml.j2 * Update daemonset.yaml.j2 * Update rbac.yaml.j2 * Update bootstrap/templates/kubernetes/apps/kube-system/kustomization.yaml.j2 * Update kustomization.yaml.j2 * Update kustomization.yaml.j2 * Create .mjfilter.py * Update bootstrap/templates/ansible/playbooks/cluster-installation.yaml.j2 * Update bootstrap/templates/kubernetes/apps/kube-system/kube-vip/ks.yaml.j2 --------- Co-authored-by: Devin Buhl --- .../group_vars/kubernetes/main.yaml.j2 | 4 ++-- .../playbooks/cluster-installation.yaml.j2 | 1 + .../playbooks/cluster-kube-vip.yaml.j2 | 24 ------------------- ...-ds.yaml.j2 => custom-kube-vip-ds.yaml.j2} | 0 ...c.yaml.j2 => custom-kube-vip-rbac.yaml.j2} | 0 .../apps/kube-system/kube-vip/.mjfilter.py | 1 + .../kube-vip/app/daemonset.yaml.j2 | 2 ++ .../kube-vip/app/kustomization.yaml.j2 | 6 +++++ .../kube-system/kube-vip/app/rbac.yaml.j2 | 2 ++ .../apps/kube-system/kube-vip/ks.yaml.j2 | 20 ++++++++++++++++ .../apps/kube-system/kustomization.yaml.j2 | 9 +++---- 11 files changed, 39 insertions(+), 30 deletions(-) delete mode 100644 bootstrap/templates/ansible/playbooks/cluster-kube-vip.yaml.j2 rename bootstrap/templates/ansible/playbooks/templates/{kube-vip-ds.yaml.j2 => custom-kube-vip-ds.yaml.j2} (100%) rename bootstrap/templates/ansible/playbooks/templates/{kube-vip-rbac.yaml.j2 => custom-kube-vip-rbac.yaml.j2} (100%) create mode 100644 bootstrap/templates/kubernetes/apps/kube-system/kube-vip/.mjfilter.py create mode 100644 bootstrap/templates/kubernetes/apps/kube-system/kube-vip/app/daemonset.yaml.j2 create mode 100644 bootstrap/templates/kubernetes/apps/kube-system/kube-vip/app/kustomization.yaml.j2 create mode 100644 bootstrap/templates/kubernetes/apps/kube-system/kube-vip/app/rbac.yaml.j2 create mode 100644 bootstrap/templates/kubernetes/apps/kube-system/kube-vip/ks.yaml.j2 diff --git a/bootstrap/templates/ansible/inventory/group_vars/kubernetes/main.yaml.j2 b/bootstrap/templates/ansible/inventory/group_vars/kubernetes/main.yaml.j2 index bf1aeb1b..01ec2ba5 100644 --- a/bootstrap/templates/ansible/inventory/group_vars/kubernetes/main.yaml.j2 +++ b/bootstrap/templates/ansible/inventory/group_vars/kubernetes/main.yaml.j2 @@ -18,6 +18,6 @@ k3s_registries: k3s_release_version: v1.29.1+k3s2 k3s_server_manifests_templates: - custom-cilium-helmchart.yaml - - kube-vip-ds.yaml - - kube-vip-rbac.yaml + - custom-kube-vip-ds.yaml + - custom-kube-vip-rbac.yaml k3s_use_unsupported_config: true diff --git a/bootstrap/templates/ansible/playbooks/cluster-installation.yaml.j2 b/bootstrap/templates/ansible/playbooks/cluster-installation.yaml.j2 index 54c2f87a..ccbeaba6 100644 --- a/bootstrap/templates/ansible/playbooks/cluster-installation.yaml.j2 +++ b/bootstrap/templates/ansible/playbooks/cluster-installation.yaml.j2 @@ -50,6 +50,7 @@ wait_timeout: 360 loop: - { name: cilium, kind: HelmChart, namespace: kube-system } + - { name: kube-vip, kind: DaemonSet, namespace: kube-system } - name: Cilium when: k3s_primary_control_node diff --git a/bootstrap/templates/ansible/playbooks/cluster-kube-vip.yaml.j2 b/bootstrap/templates/ansible/playbooks/cluster-kube-vip.yaml.j2 deleted file mode 100644 index db8ce71c..00000000 --- a/bootstrap/templates/ansible/playbooks/cluster-kube-vip.yaml.j2 +++ /dev/null @@ -1,24 +0,0 @@ ---- -- name: Cluster kube-vip - hosts: controllers - serial: 1 - become: true - gather_facts: true - any_errors_fatal: true - pre_tasks: - - name: Pausing for 5 seconds... - ansible.builtin.pause: - seconds: 5 - tasks: - - name: Ensure Kubernetes is running - ansible.builtin.include_role: - name: xanmanning.k3s - public: true - vars: - k3s_state: started - - - name: Upgrade kube-vip - ansible.builtin.template: - src: templates/kube-vip-ds.yaml - dest: "{{ k3s_server_manifests_dir }}/kube-vip-ds.yaml" - mode: preserve diff --git a/bootstrap/templates/ansible/playbooks/templates/kube-vip-ds.yaml.j2 b/bootstrap/templates/ansible/playbooks/templates/custom-kube-vip-ds.yaml.j2 similarity index 100% rename from bootstrap/templates/ansible/playbooks/templates/kube-vip-ds.yaml.j2 rename to bootstrap/templates/ansible/playbooks/templates/custom-kube-vip-ds.yaml.j2 diff --git a/bootstrap/templates/ansible/playbooks/templates/kube-vip-rbac.yaml.j2 b/bootstrap/templates/ansible/playbooks/templates/custom-kube-vip-rbac.yaml.j2 similarity index 100% rename from bootstrap/templates/ansible/playbooks/templates/kube-vip-rbac.yaml.j2 rename to bootstrap/templates/ansible/playbooks/templates/custom-kube-vip-rbac.yaml.j2 diff --git a/bootstrap/templates/kubernetes/apps/kube-system/kube-vip/.mjfilter.py b/bootstrap/templates/kubernetes/apps/kube-system/kube-vip/.mjfilter.py new file mode 100644 index 00000000..0979f9a6 --- /dev/null +++ b/bootstrap/templates/kubernetes/apps/kube-system/kube-vip/.mjfilter.py @@ -0,0 +1 @@ +main = lambda data: data.get("bootstrap_distribution", "k3s") in ["k3s"] diff --git a/bootstrap/templates/kubernetes/apps/kube-system/kube-vip/app/daemonset.yaml.j2 b/bootstrap/templates/kubernetes/apps/kube-system/kube-vip/app/daemonset.yaml.j2 new file mode 100644 index 00000000..f62cab4d --- /dev/null +++ b/bootstrap/templates/kubernetes/apps/kube-system/kube-vip/app/daemonset.yaml.j2 @@ -0,0 +1,2 @@ +--- +#% include 'partials/kube-vip-ds.partial.yaml.j2' %# diff --git a/bootstrap/templates/kubernetes/apps/kube-system/kube-vip/app/kustomization.yaml.j2 b/bootstrap/templates/kubernetes/apps/kube-system/kube-vip/app/kustomization.yaml.j2 new file mode 100644 index 00000000..cbede828 --- /dev/null +++ b/bootstrap/templates/kubernetes/apps/kube-system/kube-vip/app/kustomization.yaml.j2 @@ -0,0 +1,6 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./rbac.yaml + - ./daemonset.yaml diff --git a/bootstrap/templates/kubernetes/apps/kube-system/kube-vip/app/rbac.yaml.j2 b/bootstrap/templates/kubernetes/apps/kube-system/kube-vip/app/rbac.yaml.j2 new file mode 100644 index 00000000..481c2e82 --- /dev/null +++ b/bootstrap/templates/kubernetes/apps/kube-system/kube-vip/app/rbac.yaml.j2 @@ -0,0 +1,2 @@ +--- +#% include 'partials/kube-vip-rbac.partial.yaml.j2' %# diff --git a/bootstrap/templates/kubernetes/apps/kube-system/kube-vip/ks.yaml.j2 b/bootstrap/templates/kubernetes/apps/kube-system/kube-vip/ks.yaml.j2 new file mode 100644 index 00000000..fcd2c8ad --- /dev/null +++ b/bootstrap/templates/kubernetes/apps/kube-system/kube-vip/ks.yaml.j2 @@ -0,0 +1,20 @@ +--- +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: &app kube-vip + namespace: flux-system +spec: + targetNamespace: kube-system + commonMetadata: + labels: + app.kubernetes.io/name: *app + path: ./kubernetes/apps/kube-system/kube-vip/app + prune: true + sourceRef: + kind: GitRepository + name: home-kubernetes + wait: false + interval: 30m + retryInterval: 1m + timeout: 5m diff --git a/bootstrap/templates/kubernetes/apps/kube-system/kustomization.yaml.j2 b/bootstrap/templates/kubernetes/apps/kube-system/kustomization.yaml.j2 index f1547936..289af80e 100644 --- a/bootstrap/templates/kubernetes/apps/kube-system/kustomization.yaml.j2 +++ b/bootstrap/templates/kubernetes/apps/kube-system/kustomization.yaml.j2 @@ -4,11 +4,12 @@ kind: Kustomization resources: - ./namespace.yaml - ./cilium/ks.yaml + - ./metrics-server/ks.yaml + - ./reloader/ks.yaml #% if bootstrap_distribution in ["talos"] %# - ./kubelet-csr-approver/ks.yaml - #% endif %# - - ./metrics-server/ks.yaml - #% if bootstrap_distribution in ["talos"] %# - ./spegel/ks.yaml #% endif %# - - ./reloader/ks.yaml + #% if bootstrap_distribution in ["k3s"] %# + - ./kube-vip/ks.yaml + #% endif %#