From 7a1a6304fb42a90548eded034199ba258e983153 Mon Sep 17 00:00:00 2001
From: Sheogorath <sheogorath@shivering-isles.com>
Date: Fri, 14 Jan 2022 02:01:30 +0100
Subject: [PATCH] feat(system-upgrades): Add feature to run system-upgrades

---
 infrastructure/kustomization.yaml             |  1 +
 .../system-upgrades/calver-server.yaml        | 41 +++++++++++++++++++
 infrastructure/system-upgrades/fedora.yaml    | 38 +++++++++++++++++
 .../system-upgrades/kustomization.yaml        |  7 ++++
 4 files changed, 87 insertions(+)
 create mode 100644 infrastructure/system-upgrades/calver-server.yaml
 create mode 100644 infrastructure/system-upgrades/fedora.yaml
 create mode 100644 infrastructure/system-upgrades/kustomization.yaml

diff --git a/infrastructure/kustomization.yaml b/infrastructure/kustomization.yaml
index ccd7ac76c..9cd9c1444 100644
--- a/infrastructure/kustomization.yaml
+++ b/infrastructure/kustomization.yaml
@@ -9,3 +9,4 @@ resources:
   - prometheus
   - ingress-nginx
   - node-features
+  - system-upgrades
diff --git a/infrastructure/system-upgrades/calver-server.yaml b/infrastructure/system-upgrades/calver-server.yaml
new file mode 100644
index 000000000..6fcc0c16e
--- /dev/null
+++ b/infrastructure/system-upgrades/calver-server.yaml
@@ -0,0 +1,41 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: calver
+  labels:
+    app: calver
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: calver
+  template:
+    metadata:
+      labels:
+        app: calver
+    spec:
+      containers:
+      - name: calver-server
+        image: quay.io/shivering-isles/calver-server:v1
+        ports:
+        - containerPort: 8080
+        resources:
+          requests:
+            cpu: 10m
+            memory: 64MiB
+          limits:
+            cpu: 500m
+            memory: 128MiB
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: calver
+spec:
+  selector:
+    app: calver
+  ports:
+    - name: http
+      protocol: TCP
+      port: 80
+      targetPort: 8080
diff --git a/infrastructure/system-upgrades/fedora.yaml b/infrastructure/system-upgrades/fedora.yaml
new file mode 100644
index 000000000..08b09d5ba
--- /dev/null
+++ b/infrastructure/system-upgrades/fedora.yaml
@@ -0,0 +1,38 @@
+---
+apiVersion: v1
+kind: Secret
+metadata:
+  name: fedora-dnf-upgrade
+  namespace: system-upgrade
+type: Opaque
+stringData:
+  upgrade.sh: |
+    #!/bin/sh
+    set -e
+    set -x
+    dnf upgrade -y --best
+---
+apiVersion: upgrade.cattle.io/v1
+kind: Plan
+metadata:
+  name: fedora-35-latest
+  namespace: system-upgrade
+spec:
+  concurrency: 1
+  nodeSelector:
+    matchExpressions:
+      - {key: feature.node.kubernetes.io/system-os_release.ID, operator: In, values: ["fedora"]}
+      - {key: feature.node.kubernetes.io/system-os_release.VERSION_ID.major, operator: In, values: ["35"]}
+  serviceAccountName: system-upgrade
+  secrets:
+    - name: fedora-dnf-upgrade
+      path: /host/run/system-upgrade/secrets/fedora
+  drain:
+    deleteLocalData: true
+    ignoreDaemonSets: true
+    force: false
+  channel: http://calver/weekly
+  upgrade:
+    image: docker.io/library/fedora:35
+    command: ["chroot", "/host"]
+    args: ["sh", "/run/system-upgrade/secrets/fedora/upgrade.sh"]
diff --git a/infrastructure/system-upgrades/kustomization.yaml b/infrastructure/system-upgrades/kustomization.yaml
new file mode 100644
index 000000000..aa21fe819
--- /dev/null
+++ b/infrastructure/system-upgrades/kustomization.yaml
@@ -0,0 +1,7 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+namespace: system-upgrade
+resources:
+  - https://git.shivering-isles.com/github-mirror/rancher/system-upgrade-controller/-/raw/v0.8.1/manifests/system-upgrade-controller.yaml
+  - fedora.yaml
+  - calver-server.yaml
-- 
GitLab