From d6e80ea087b8d4a34e538fa290e09dc5367b569d Mon Sep 17 00:00:00 2001 From: Devin Buhl Date: Wed, 31 Jan 2024 14:45:24 -0500 Subject: [PATCH] feat: update system-upgrade namespace and include support for k0s (#1278) * fest: k0s Autopilot * Create .mjfilter.py * Create kustomization.yaml.j2 * Create ks.yaml.j2 * Create kustomization.yaml.j2 * Create updaterconfig.yaml.j2 * feat: update system-upgrade namespace and include support for k0s Signed-off-by: Devin Buhl * fix: rename talos app folder Signed-off-by: Devin Buhl * fix: update k0s plan Signed-off-by: Devin Buhl --------- Signed-off-by: Devin Buhl --- .../apps/system-upgrade/k0s/.mjfilter.py | 1 + .../k0s/app/kustomization.yaml.j2 | 5 ++++ .../apps/system-upgrade/k0s/app/plan.yaml.j2 | 23 +++++++++++++++ .../apps/system-upgrade/k0s/ks.yaml.j2 | 24 ++++++++++++++++ .../apps/system-upgrade/k3s/.mjfilter.py | 1 + .../k3s/app/kustomization.yaml.j2 | 5 ++++ .../k3s.yaml.j2 => k3s/app/plan.yaml.j2} | 8 ++---- .../apps/system-upgrade/k3s/ks.yaml.j2 | 26 +++++++++++++++++ .../apps/system-upgrade/kustomization.yaml.j2 | 11 ++++++++ .../.mjfilter.py | 0 .../system-upgrade-controller/ks.yaml.j2 | 24 ---------------- .../plans/kustomization.yaml.j2 | 11 -------- .../apps/system-upgrade/talos/.mjfilter.py | 6 ++++ .../talos/app/kustomization.yaml.j2 | 5 ++++ .../talos.yaml.j2 => talos/app/plan.yaml.j2} | 13 +++------ .../apps/system-upgrade/talos/ks.yaml.j2 | 28 +++++++++++++++++++ 16 files changed, 141 insertions(+), 50 deletions(-) create mode 100644 bootstrap/templates/kubernetes/apps/system-upgrade/k0s/.mjfilter.py create mode 100644 bootstrap/templates/kubernetes/apps/system-upgrade/k0s/app/kustomization.yaml.j2 create mode 100644 bootstrap/templates/kubernetes/apps/system-upgrade/k0s/app/plan.yaml.j2 create mode 100644 bootstrap/templates/kubernetes/apps/system-upgrade/k0s/ks.yaml.j2 create mode 100644 bootstrap/templates/kubernetes/apps/system-upgrade/k3s/.mjfilter.py create mode 100644 bootstrap/templates/kubernetes/apps/system-upgrade/k3s/app/kustomization.yaml.j2 rename bootstrap/templates/kubernetes/apps/system-upgrade/{system-upgrade-controller/plans/k3s.yaml.j2 => k3s/app/plan.yaml.j2} (83%) create mode 100644 bootstrap/templates/kubernetes/apps/system-upgrade/k3s/ks.yaml.j2 rename bootstrap/templates/kubernetes/apps/system-upgrade/{ => system-upgrade-controller}/.mjfilter.py (100%) delete mode 100644 bootstrap/templates/kubernetes/apps/system-upgrade/system-upgrade-controller/plans/kustomization.yaml.j2 create mode 100644 bootstrap/templates/kubernetes/apps/system-upgrade/talos/.mjfilter.py create mode 100644 bootstrap/templates/kubernetes/apps/system-upgrade/talos/app/kustomization.yaml.j2 rename bootstrap/templates/kubernetes/apps/system-upgrade/{system-upgrade-controller/plans/talos.yaml.j2 => talos/app/plan.yaml.j2} (85%) create mode 100644 bootstrap/templates/kubernetes/apps/system-upgrade/talos/ks.yaml.j2 diff --git a/bootstrap/templates/kubernetes/apps/system-upgrade/k0s/.mjfilter.py b/bootstrap/templates/kubernetes/apps/system-upgrade/k0s/.mjfilter.py new file mode 100644 index 00000000..cd010a61 --- /dev/null +++ b/bootstrap/templates/kubernetes/apps/system-upgrade/k0s/.mjfilter.py @@ -0,0 +1 @@ +main = lambda data: data.get("distribution") in ['k0s'] diff --git a/bootstrap/templates/kubernetes/apps/system-upgrade/k0s/app/kustomization.yaml.j2 b/bootstrap/templates/kubernetes/apps/system-upgrade/k0s/app/kustomization.yaml.j2 new file mode 100644 index 00000000..c159f45b --- /dev/null +++ b/bootstrap/templates/kubernetes/apps/system-upgrade/k0s/app/kustomization.yaml.j2 @@ -0,0 +1,5 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./plan.yaml diff --git a/bootstrap/templates/kubernetes/apps/system-upgrade/k0s/app/plan.yaml.j2 b/bootstrap/templates/kubernetes/apps/system-upgrade/k0s/app/plan.yaml.j2 new file mode 100644 index 00000000..2b355233 --- /dev/null +++ b/bootstrap/templates/kubernetes/apps/system-upgrade/k0s/app/plan.yaml.j2 @@ -0,0 +1,23 @@ +--- +apiVersion: autopilot.k0sproject.io/v1beta2 +kind: Plan +metadata: + name: autopilot +spec: + id: not-used + timestamp: not-used + commands: + - k0supdate: + version: "${KUBE_VERSION}" + platforms: + linux-amd64: + url: "https://get.k0sproject.io/${KUBE_VERSION}/k0s-${KUBE_VERSION}-amd64" + linux-arm64: + url: "https://get.k0sproject.io/${KUBE_VERSION}/k0s-${KUBE_VERSION}-arm64" + targets: + controllers: + discovery: + selector: {} + workers: + discovery: + selector: {} diff --git a/bootstrap/templates/kubernetes/apps/system-upgrade/k0s/ks.yaml.j2 b/bootstrap/templates/kubernetes/apps/system-upgrade/k0s/ks.yaml.j2 new file mode 100644 index 00000000..16e0e0b8 --- /dev/null +++ b/bootstrap/templates/kubernetes/apps/system-upgrade/k0s/ks.yaml.j2 @@ -0,0 +1,24 @@ +--- +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: &app system-upgrade-k0s + namespace: flux-system +spec: + targetNamespace: system-upgrade + commonMetadata: + labels: + app.kubernetes.io/name: *app + path: ./kubernetes/apps/system-upgrade/k0s/app + prune: true + sourceRef: + kind: GitRepository + name: home-kubernetes + wait: false + interval: 30m + retryInterval: 1m + timeout: 5m + postBuild: + substitute: + # renovate: datasource=github-releases depName=k0sproject/k0s + KUBE_VERSION: v1.29.1+k0s.0 diff --git a/bootstrap/templates/kubernetes/apps/system-upgrade/k3s/.mjfilter.py b/bootstrap/templates/kubernetes/apps/system-upgrade/k3s/.mjfilter.py new file mode 100644 index 00000000..c42606ee --- /dev/null +++ b/bootstrap/templates/kubernetes/apps/system-upgrade/k3s/.mjfilter.py @@ -0,0 +1 @@ +main = lambda data: data.get("distribution") in ['k3s'] diff --git a/bootstrap/templates/kubernetes/apps/system-upgrade/k3s/app/kustomization.yaml.j2 b/bootstrap/templates/kubernetes/apps/system-upgrade/k3s/app/kustomization.yaml.j2 new file mode 100644 index 00000000..c159f45b --- /dev/null +++ b/bootstrap/templates/kubernetes/apps/system-upgrade/k3s/app/kustomization.yaml.j2 @@ -0,0 +1,5 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./plan.yaml diff --git a/bootstrap/templates/kubernetes/apps/system-upgrade/system-upgrade-controller/plans/k3s.yaml.j2 b/bootstrap/templates/kubernetes/apps/system-upgrade/k3s/app/plan.yaml.j2 similarity index 83% rename from bootstrap/templates/kubernetes/apps/system-upgrade/system-upgrade-controller/plans/k3s.yaml.j2 rename to bootstrap/templates/kubernetes/apps/system-upgrade/k3s/app/plan.yaml.j2 index 9f93eb22..5412ea57 100644 --- a/bootstrap/templates/kubernetes/apps/system-upgrade/system-upgrade-controller/plans/k3s.yaml.j2 +++ b/bootstrap/templates/kubernetes/apps/system-upgrade/k3s/app/plan.yaml.j2 @@ -1,12 +1,10 @@ -{% if distribution in ['k3s'] %} --- apiVersion: upgrade.cattle.io/v1 kind: Plan metadata: name: controllers spec: - # renovate: datasource=github-releases depName=k3s-io/k3s - version: v1.29.0+k3s1 + version: "${KUBE_VERSION}" upgrade: image: rancher/k3s-upgrade serviceAccountName: system-upgrade @@ -38,8 +36,7 @@ kind: Plan metadata: name: workers spec: - # renovate: datasource=github-releases depName=k3s-io/k3s - version: v1.29.0+k3s1 + version: "${KUBE_VERSION}" serviceAccountName: system-upgrade concurrency: 1 nodeSelector: @@ -51,4 +48,3 @@ spec: args: ["prepare", "server"] upgrade: image: rancher/k3s-upgrade -{% endif %} diff --git a/bootstrap/templates/kubernetes/apps/system-upgrade/k3s/ks.yaml.j2 b/bootstrap/templates/kubernetes/apps/system-upgrade/k3s/ks.yaml.j2 new file mode 100644 index 00000000..3f7dc452 --- /dev/null +++ b/bootstrap/templates/kubernetes/apps/system-upgrade/k3s/ks.yaml.j2 @@ -0,0 +1,26 @@ +--- +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: &app system-upgrade-k3s + namespace: flux-system +spec: + targetNamespace: system-upgrade + commonMetadata: + labels: + app.kubernetes.io/name: *app + dependsOn: + - name: system-upgrade-controller + path: ./kubernetes/apps/system-upgrade/k3s/app + prune: true + sourceRef: + kind: GitRepository + name: home-kubernetes + wait: false + interval: 30m + retryInterval: 1m + timeout: 5m + postBuild: + substitute: + # renovate: datasource=github-releases depName=k3s-io/k3s + KUBE_VERSION: v1.29.0+k3s1 diff --git a/bootstrap/templates/kubernetes/apps/system-upgrade/kustomization.yaml.j2 b/bootstrap/templates/kubernetes/apps/system-upgrade/kustomization.yaml.j2 index 9647fd04..bbf10e36 100644 --- a/bootstrap/templates/kubernetes/apps/system-upgrade/kustomization.yaml.j2 +++ b/bootstrap/templates/kubernetes/apps/system-upgrade/kustomization.yaml.j2 @@ -3,4 +3,15 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ./namespace.yaml + {% if distribution in ['k3s', 'talos'] %} - ./system-upgrade-controller/ks.yaml + {% endif %} + {% if distribution in ['k0s'] %} + - ./k0s/ks.yaml + {% endif %} + {% if distribution in ['k3s'] %} + - ./k3s/ks.yaml + {% endif %} + {% if distribution in ['talos'] and cluster.nodes.talos.schematics.enabled %} + - ./talos/ks.yaml + {% endif %} diff --git a/bootstrap/templates/kubernetes/apps/system-upgrade/.mjfilter.py b/bootstrap/templates/kubernetes/apps/system-upgrade/system-upgrade-controller/.mjfilter.py similarity index 100% rename from bootstrap/templates/kubernetes/apps/system-upgrade/.mjfilter.py rename to bootstrap/templates/kubernetes/apps/system-upgrade/system-upgrade-controller/.mjfilter.py diff --git a/bootstrap/templates/kubernetes/apps/system-upgrade/system-upgrade-controller/ks.yaml.j2 b/bootstrap/templates/kubernetes/apps/system-upgrade/system-upgrade-controller/ks.yaml.j2 index 50b0382c..7fe74b4a 100644 --- a/bootstrap/templates/kubernetes/apps/system-upgrade/system-upgrade-controller/ks.yaml.j2 +++ b/bootstrap/templates/kubernetes/apps/system-upgrade/system-upgrade-controller/ks.yaml.j2 @@ -18,27 +18,3 @@ spec: interval: 30m retryInterval: 1m timeout: 5m -{% if distribution in ['k3s'] or (distribution in ['talos'] and cluster.nodes.talos.schematics.enabled) %} ---- -apiVersion: kustomize.toolkit.fluxcd.io/v1 -kind: Kustomization -metadata: - name: &app system-upgrade-controller-plans - namespace: flux-system -spec: - targetNamespace: system-upgrade - commonMetadata: - labels: - app.kubernetes.io/name: *app - dependsOn: - - name: system-upgrade-controller - path: ./kubernetes/apps/system-upgrade/system-upgrade-controller/plans - prune: true - sourceRef: - kind: GitRepository - name: home-kubernetes - wait: false - interval: 30m - retryInterval: 1m - timeout: 5m -{% endif %} diff --git a/bootstrap/templates/kubernetes/apps/system-upgrade/system-upgrade-controller/plans/kustomization.yaml.j2 b/bootstrap/templates/kubernetes/apps/system-upgrade/system-upgrade-controller/plans/kustomization.yaml.j2 deleted file mode 100644 index f49d9593..00000000 --- a/bootstrap/templates/kubernetes/apps/system-upgrade/system-upgrade-controller/plans/kustomization.yaml.j2 +++ /dev/null @@ -1,11 +0,0 @@ -{% if distribution in ['k3s'] or (distribution in ['talos'] and cluster.nodes.talos.schematics.enabled) %} ---- -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization -resources: - {% if distribution in ['k3s'] %} - - ./k3s.yaml - {% elif distribution in ['talos'] and cluster.nodes.talos.schematics.enabled %} - - ./talos.yaml - {% endif %} -{% endif %} diff --git a/bootstrap/templates/kubernetes/apps/system-upgrade/talos/.mjfilter.py b/bootstrap/templates/kubernetes/apps/system-upgrade/talos/.mjfilter.py new file mode 100644 index 00000000..c016be5d --- /dev/null +++ b/bootstrap/templates/kubernetes/apps/system-upgrade/talos/.mjfilter.py @@ -0,0 +1,6 @@ +main = lambda data: data.get("distribution") in ['talos'] and ( + data.get("cluster", {}) + .get("nodes", {}) + .get("talos", {}) + .get("schematics", {}) + .get("enabled", False) == True) diff --git a/bootstrap/templates/kubernetes/apps/system-upgrade/talos/app/kustomization.yaml.j2 b/bootstrap/templates/kubernetes/apps/system-upgrade/talos/app/kustomization.yaml.j2 new file mode 100644 index 00000000..c159f45b --- /dev/null +++ b/bootstrap/templates/kubernetes/apps/system-upgrade/talos/app/kustomization.yaml.j2 @@ -0,0 +1,5 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./plan.yaml diff --git a/bootstrap/templates/kubernetes/apps/system-upgrade/system-upgrade-controller/plans/talos.yaml.j2 b/bootstrap/templates/kubernetes/apps/system-upgrade/talos/app/plan.yaml.j2 similarity index 85% rename from bootstrap/templates/kubernetes/apps/system-upgrade/system-upgrade-controller/plans/talos.yaml.j2 rename to bootstrap/templates/kubernetes/apps/system-upgrade/talos/app/plan.yaml.j2 index 5b705945..093a2294 100644 --- a/bootstrap/templates/kubernetes/apps/system-upgrade/system-upgrade-controller/plans/talos.yaml.j2 +++ b/bootstrap/templates/kubernetes/apps/system-upgrade/talos/app/plan.yaml.j2 @@ -1,12 +1,10 @@ -{% if distribution in ['talos'] and cluster.nodes.talos.schematics.enabled %} --- apiVersion: upgrade.cattle.io/v1 kind: Plan metadata: name: kubernetes spec: - # renovate: datasource=docker depName=ghcr.io/siderolabs/kubelet - version: v1.29.1 + version: "${KUBE_VERSION}" serviceAccountName: system-upgrade secrets: - name: talos @@ -19,7 +17,7 @@ spec: - key: node-role.kubernetes.io/control-plane operator: Exists prepare: &prepare - image: ghcr.io/siderolabs/talosctl:v1.6.3 + image: "ghcr.io/siderolabs/talosctl:${SYSTEM_VERSION}" envs: - name: NODE_IP valueFrom: @@ -41,8 +39,7 @@ kind: Plan metadata: name: talos spec: - # renovate: datasource=docker depName=ghcr.io/siderolabs/installer - version: v1.6.3 + version: "${SYSTEM_VERSION}" serviceAccountName: system-upgrade secrets: - name: talos @@ -59,8 +56,7 @@ spec: matchExpressions: - key: kubernetes.io/os operator: In - values: - - linux + values: ["linux"] tolerations: - key: CriticalAddonsOnly operator: Exists @@ -95,4 +91,3 @@ spec: - --image=factory.talos.dev/installer/{{ cluster.nodes.talos.schematics.id }}:$(SYSTEM_UPGRADE_PLAN_LATEST_VERSION) - --preserve=true - --wait=false -{% endif %} diff --git a/bootstrap/templates/kubernetes/apps/system-upgrade/talos/ks.yaml.j2 b/bootstrap/templates/kubernetes/apps/system-upgrade/talos/ks.yaml.j2 new file mode 100644 index 00000000..582a5868 --- /dev/null +++ b/bootstrap/templates/kubernetes/apps/system-upgrade/talos/ks.yaml.j2 @@ -0,0 +1,28 @@ +--- +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: &app system-upgrade-talos + namespace: flux-system +spec: + targetNamespace: system-upgrade + commonMetadata: + labels: + app.kubernetes.io/name: *app + dependsOn: + - name: system-upgrade-controller + path: ./kubernetes/apps/system-upgrade/talos/app + prune: true + sourceRef: + kind: GitRepository + name: home-kubernetes + wait: false + interval: 30m + retryInterval: 1m + timeout: 5m + postBuild: + substitute: + # renovate: datasource=docker depName=ghcr.io/siderolabs/kubelet + KUBE_VERSION: v1.29.1 + # renovate: datasource=docker depName=ghcr.io/siderolabs/installer + SYSTEM_VERSION: v1.6.3