From e2cab980f73e673d0a2a2703a0b95c1d3b76b6d6 Mon Sep 17 00:00:00 2001 From: Victor Morales Date: Wed, 15 Jan 2025 17:54:41 -0800 Subject: [PATCH] Include vmi removal in arc garbage collector --- resources/arc-cleanup.yml | 53 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 50 insertions(+), 3 deletions(-) diff --git a/resources/arc-cleanup.yml b/resources/arc-cleanup.yml index f9f4e17c..f878f589 100644 --- a/resources/arc-cleanup.yml +++ b/resources/arc-cleanup.yml @@ -16,7 +16,7 @@ metadata: kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: - name: cleaner + name: ephemeralrunners-cleaner rules: - apiGroups: ["actions.github.com"] resources: ["ephemeralrunners"] @@ -25,10 +25,32 @@ rules: kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: - name: cleaner-to-cleaner + name: ephemeralrunners-cleaner roleRef: kind: ClusterRole - name: cleaner + name: ephemeralrunners-cleaner + apiGroup: rbac.authorization.k8s.io +subjects: + - kind: ServiceAccount + name: cleaner + namespace: arc-system +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: virtualmachineinstances-cleaner +rules: + - apiGroups: ["kubevirt.io"] + resources: ["virtualmachineinstances"] + verbs: ["delete", "get", "watch", "list"] +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: virtualmachineinstances-cleaner +roleRef: + kind: ClusterRole + name: virtualmachineinstances-cleaner apiGroup: rbac.authorization.k8s.io subjects: - kind: ServiceAccount @@ -59,3 +81,28 @@ spec: - -c - | kubectl get -A ephemeralrunner -o jsonpath='{range .items[?(@.status.reason=="TooManyPodFailures")]}{.metadata.namespace}{" "}{.metadata.name}{"\n"}{end}'|awk '{ print "kubectl delete ephemeralrunner" " -n " $1 " " $2 }'|xargs -P4 -I{} sh -c "{}" +--- +apiVersion: batch/v1 +kind: CronJob +metadata: + name: virtualmachineinstances-garbage-collector + namespace: arc-system +spec: + schedule: "*/15 * * * *" + concurrencyPolicy: Forbid + failedJobsHistoryLimit: 1 + successfulJobsHistoryLimit: 3 + jobTemplate: + spec: + template: + spec: + restartPolicy: OnFailure + serviceAccount: cleaner + containers: + - name: kubectl + image: alpine/k8s:1.32.0 + command: + - /bin/bash + - -c + - | + kubectl get -A virtualmachineinstance -o jsonpath='{range .items[?(@.status.phase=="Succeeded")]}{.metadata.namespace}{" "}{.metadata.name}{"\n"}{end}'|awk '{ print "kubectl delete virtualmachineinstance" " -n " $1 " " $2 }'|xargs -P4 -I{} sh -c "{}"