apiVersion: v1
kind: ServiceAccount
metadata:
  name: longhorn-uninstall-service-account
  namespace: longhorn-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: longhorn-uninstall-role
rules:
  - apiGroups:
      - apiextensions.k8s.io
    resources:
      - customresourcedefinitions
    verbs:
      - "*"
  - apiGroups:
      - ""
    resources:
      - pods
      - persistentvolumes
      - persistentvolumeclaims
      - nodes
      - configmaps
      - secrets
      - services
      - endpoints
    verbs:
      - "*"
  - apiGroups:
      - apps
    resources:
      - daemonsets
      - statefulsets
      - deployments
    verbs:
      - "*"
  - apiGroups:
      - batch
    resources:
      - jobs
      - cronjobs
    verbs:
      - "*"
  - apiGroups:
      - policy
    resources:
      - poddisruptionbudgets
    verbs:
      - "*"
  - apiGroups:
      - scheduling.k8s.io
    resources:
      - priorityclasses
    verbs:
      - watch
      - list
  - apiGroups:
      - storage.k8s.io
    resources:
      - csidrivers
      - storageclasses
      - volumeattachments
    verbs:
      - "*"
  - apiGroups:
      - longhorn.io
    resources:
      - backingimagedatasources
      - backingimagemanagers
      - backingimages
      - backupbackingimages
      - backups
      - backuptargets
      - backupvolumes
      - enginefrontends
      - engineimages
      - engines
      - instancemanagers
      - nodes
      - orphans
      - recurringjobs
      - replicas
      - settings
      - sharemanagers
      - snapshots
      - supportbundles
      - systembackups
      - systemrestores
      - volumeattachments
      - volumes
    verbs:
      - "*"
  - apiGroups:
      - coordination.k8s.io
    resources:
      - leases
    verbs:
      - "*"
  - apiGroups:
      - admissionregistration.k8s.io
    resources:
      - mutatingwebhookconfigurations
      - validatingwebhookconfigurations
    verbs:
      - get
      - delete
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: longhorn-uninstall-bind
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: longhorn-uninstall-role
subjects:
  - kind: ServiceAccount
    name: longhorn-uninstall-service-account
    namespace: longhorn-system
---
apiVersion: batch/v1
kind: Job
metadata:
  name: longhorn-uninstall
  namespace: longhorn-system
spec:
  activeDeadlineSeconds: 900
  backoffLimit: 1
  template:
    metadata:
      name: longhorn-uninstall
    spec:
      containers:
        - command:
            - longhorn-manager
            - uninstall
            - --force
          env:
            - name: LONGHORN_NAMESPACE
              value: longhorn-system
          image: docker.io/longhornio/longhorn-manager:v1.12.0
          imagePullPolicy: IfNotPresent
          name: longhorn-uninstall
      restartPolicy: Never
      serviceAccountName: longhorn-uninstall-service-account
---
