Refactor uninstallation process (#74)

Docs PR: https://github.com/netbirdio/docs/pull/457

Changes:
* Split kubernetes-operator Chart to operator only chart
(kubernetes-operator) and configuration chart (netbird-operator-config)
* Remove delete validation webhooks for non-needed resources
* Allow abandoning Groups when still linked to a resource for over a
minute after deletion
* Fix duplciate Network Resource retrying heavily
* Fix SetupKey creation duplication
* Skip deleting routing peer since deleting network automatically
deletes it anyway
This commit is contained in:
M. Essam
2025-11-25 20:36:17 +02:00
committed by GitHub
parent 6c855c5d4e
commit f1b131be7d
31 changed files with 580 additions and 721 deletions
@@ -1,69 +1,41 @@
apiVersion: batch/v1
kind: Job
metadata:
name: {{ include "kubernetes-operator.fullname" . }}-delete-routers
labels:
app.kubernetes.io/component: operator
{{- include "kubernetes-operator.labels" . | nindent 4 }}
annotations:
helm.sh/hook: pre-delete
helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
spec:
backoffLimit: 3
template:
metadata:
name: {{ include "kubernetes-operator.fullname" . }}
labels:
app.kubernetes.io/component: operator
{{- include "kubernetes-operator.labels" . | nindent 8 }}
{{- with .Values.operator.podLabels }}
{{- toYaml . | nindent 8 }}
{{- end }}
spec:
containers:
- name: pre-delete
image: "bitnami/kubectl:latest"
args:
- delete
- --all
- -A
- --cascade=foreground
- --ignore-not-found
- NBRoutingPeer
serviceAccountName: {{ include "kubernetes-operator.serviceAccountName" . }}
restartPolicy: Never
---
apiVersion: batch/v1
kind: Job
metadata:
name: {{ include "kubernetes-operator.fullname" . }}-delete-policies
labels:
app.kubernetes.io/component: operator
{{- include "kubernetes-operator.labels" . | nindent 4 }}
annotations:
helm.sh/hook: pre-delete
helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
spec:
backoffLimit: 3
template:
metadata:
name: {{ include "kubernetes-operator.fullname" . }}
labels:
app.kubernetes.io/component: operator
{{- include "kubernetes-operator.labels" . | nindent 8 }}
{{- with .Values.operator.podLabels }}
{{- toYaml . | nindent 8 }}
{{- end }}
spec:
containers:
- name: pre-delete
image: "bitnami/kubectl:latest"
args:
- delete
- --all
- --cascade=foreground
- --ignore-not-found
- NBPolicy
serviceAccountName: {{ include "kubernetes-operator.serviceAccountName" . }}
restartPolicy: Never
---
{{/*apiVersion: batch/v1*/}}
{{/*kind: Job*/}}
{{/*metadata:*/}}
{{/* name: {{ include "kubernetes-operator.fullname" . }}-delete-router-deployments*/}}
{{/* labels:*/}}
{{/* app.kubernetes.io/component: operator*/}}
{{/* {{- include "kubernetes-operator.labels" . | nindent 4 }}*/}}
{{/* annotations:*/}}
{{/* helm.sh/hook: pre-delete*/}}
{{/* helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded*/}}
{{/*spec:*/}}
{{/* backoffLimit: 3*/}}
{{/* template:*/}}
{{/* metadata:*/}}
{{/* name: {{ include "kubernetes-operator.fullname" . }}*/}}
{{/* labels:*/}}
{{/* app.kubernetes.io/component: operator*/}}
{{/* {{- include "kubernetes-operator.labels" . | nindent 8 }}*/}}
{{/* {{- with .Values.operator.podLabels }}*/}}
{{/* {{- toYaml . | nindent 8 }}*/}}
{{/* {{- end }}*/}}
{{/* spec:*/}}
{{/* containers:*/}}
{{/* - name: pre-delete*/}}
{{/* image: "netbirdio/kubectl:latest"*/}}
{{/* imagePullPolicy: {{ .Values.operator.image.pullPolicy }}*/}}
{{/* command:*/}}
{{/* - sh*/}}
{{/* - -c*/}}
{{/* args:*/}}
{{/* - kubectl get NBRoutingPeer -A --no-headers -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name | while read "L"; do kubectl patch --type=json -p '[{"op":"replace","path":"/spec/disableDeployment","value":true}]' NBRoutingPeer -n $(echo "$L" | awk '{print $1}') $(echo "$L" | awk '{print $2}'); done*/}}
{{/* - name: delete-wait*/}}
{{/* image: "netbirdio/kubectl:latest"*/}}
{{/* imagePullPolicy: {{ .Values.operator.image.pullPolicy }}*/}}
{{/* command:*/}}
{{/* - sh*/}}
{{/* - -c*/}}
{{/* args:*/}}
{{/* - kubectl get NBRoutingPeer -A --no-headers -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name | while read "L"; do kubectl wait --for=delete deployment -n $(echo "$L" | awk '{print $1}') $(echo "$L" | awk '{print $2}'); done*/}}
{{/* serviceAccountName: {{ include "kubernetes-operator.serviceAccountName" . }}*/}}
{{/* restartPolicy: Never*/}}