Skip to content

Commit 61c05d3

Browse files
committed
Refactor uninstallation process
1 parent 4b98bf9 commit 61c05d3

22 files changed

+326
-743
lines changed

Dockerfile.kubectl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
FROM alpine:3 AS builder
2+
3+
RUN apk update && apk add curl
4+
RUN curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" && \
5+
chmod +x kubectl && \
6+
mv kubectl /usr/local/bin/kubectl
7+
8+
FROM alpine:3 AS final
9+
10+
COPY --from=builder /usr/local/bin/kubectl /usr/local/bin/kubectl

cmd/main.go

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -294,16 +294,6 @@ func main() {
294294
}
295295

296296
if enableWebhooks {
297-
if err = webhooknetbirdiov1.SetupNBResourceWebhookWithManager(mgr); err != nil {
298-
setupLog.Error(err, "unable to create webhook", "webhook", "NBResource")
299-
os.Exit(1)
300-
}
301-
302-
if err = webhooknetbirdiov1.SetupNBRoutingPeerWebhookWithManager(mgr); err != nil {
303-
setupLog.Error(err, "unable to create webhook", "webhook", "NBRoutingPeer")
304-
os.Exit(1)
305-
}
306-
307297
if err = webhooknetbirdiov1.SetupNBGroupWebhookWithManager(mgr); err != nil {
308298
setupLog.Error(err, "unable to create webhook", "webhook", "NBGroup")
309299
os.Exit(1)

helm/kubernetes-operator/templates/nbpolicies.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ metadata:
88
labels:
99
app.kubernetes.io/component: operator
1010
{{- include "kubernetes-operator.labels" $ | nindent 4 }}
11+
annotations:
12+
helm.sh/resource-policy: keep
1113
name: {{ $k }}
1214
spec:
1315
name: {{ $v.name }}

helm/kubernetes-operator/templates/nbroutingpeers.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ metadata:
1010
labels:
1111
app.kubernetes.io/component: operator
1212
{{- include "kubernetes-operator.labels" $ | nindent 4 }}
13+
annotations:
14+
helm.sh/resource-policy: keep
1315
name: router
1416
namespace: {{ $k }}
1517
{{ $spec := merge $defaults $v }}
@@ -51,6 +53,8 @@ metadata:
5153
labels:
5254
app.kubernetes.io/component: operator
5355
{{- include "kubernetes-operator.labels" $ | nindent 4 }}
56+
annotations:
57+
helm.sh/resource-policy: keep
5458
name: router
5559
{{- if or (or (or .replicas .resources) (or .labels .annotations)) (or .nodeSelector .tolerations) }}
5660
spec:
Lines changed: 41 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,41 @@
1-
apiVersion: batch/v1
2-
kind: Job
3-
metadata:
4-
name: {{ include "kubernetes-operator.fullname" . }}-delete-routers
5-
labels:
6-
app.kubernetes.io/component: operator
7-
{{- include "kubernetes-operator.labels" . | nindent 4 }}
8-
annotations:
9-
helm.sh/hook: pre-delete
10-
helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
11-
spec:
12-
backoffLimit: 3
13-
template:
14-
metadata:
15-
name: {{ include "kubernetes-operator.fullname" . }}
16-
labels:
17-
app.kubernetes.io/component: operator
18-
{{- include "kubernetes-operator.labels" . | nindent 8 }}
19-
{{- with .Values.operator.podLabels }}
20-
{{- toYaml . | nindent 8 }}
21-
{{- end }}
22-
spec:
23-
containers:
24-
- name: pre-delete
25-
image: "bitnami/kubectl:latest"
26-
args:
27-
- delete
28-
- --all
29-
- -A
30-
- --cascade=foreground
31-
- --ignore-not-found
32-
- NBRoutingPeer
33-
serviceAccountName: {{ include "kubernetes-operator.serviceAccountName" . }}
34-
restartPolicy: Never
35-
---
36-
apiVersion: batch/v1
37-
kind: Job
38-
metadata:
39-
name: {{ include "kubernetes-operator.fullname" . }}-delete-policies
40-
labels:
41-
app.kubernetes.io/component: operator
42-
{{- include "kubernetes-operator.labels" . | nindent 4 }}
43-
annotations:
44-
helm.sh/hook: pre-delete
45-
helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
46-
spec:
47-
backoffLimit: 3
48-
template:
49-
metadata:
50-
name: {{ include "kubernetes-operator.fullname" . }}
51-
labels:
52-
app.kubernetes.io/component: operator
53-
{{- include "kubernetes-operator.labels" . | nindent 8 }}
54-
{{- with .Values.operator.podLabels }}
55-
{{- toYaml . | nindent 8 }}
56-
{{- end }}
57-
spec:
58-
containers:
59-
- name: pre-delete
60-
image: "bitnami/kubectl:latest"
61-
args:
62-
- delete
63-
- --all
64-
- --cascade=foreground
65-
- --ignore-not-found
66-
- NBPolicy
67-
serviceAccountName: {{ include "kubernetes-operator.serviceAccountName" . }}
68-
restartPolicy: Never
69-
---
1+
{{/*apiVersion: batch/v1*/}}
2+
{{/*kind: Job*/}}
3+
{{/*metadata:*/}}
4+
{{/* name: {{ include "kubernetes-operator.fullname" . }}-delete-router-deployments*/}}
5+
{{/* labels:*/}}
6+
{{/* app.kubernetes.io/component: operator*/}}
7+
{{/* {{- include "kubernetes-operator.labels" . | nindent 4 }}*/}}
8+
{{/* annotations:*/}}
9+
{{/* helm.sh/hook: pre-delete*/}}
10+
{{/* helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded*/}}
11+
{{/*spec:*/}}
12+
{{/* backoffLimit: 3*/}}
13+
{{/* template:*/}}
14+
{{/* metadata:*/}}
15+
{{/* name: {{ include "kubernetes-operator.fullname" . }}*/}}
16+
{{/* labels:*/}}
17+
{{/* app.kubernetes.io/component: operator*/}}
18+
{{/* {{- include "kubernetes-operator.labels" . | nindent 8 }}*/}}
19+
{{/* {{- with .Values.operator.podLabels }}*/}}
20+
{{/* {{- toYaml . | nindent 8 }}*/}}
21+
{{/* {{- end }}*/}}
22+
{{/* spec:*/}}
23+
{{/* containers:*/}}
24+
{{/* - name: pre-delete*/}}
25+
{{/* image: "netbirdio/kubectl:latest"*/}}
26+
{{/* imagePullPolicy: {{ .Values.operator.image.pullPolicy }}*/}}
27+
{{/* command:*/}}
28+
{{/* - sh*/}}
29+
{{/* - -c*/}}
30+
{{/* args:*/}}
31+
{{/* - 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*/}}
32+
{{/* - name: delete-wait*/}}
33+
{{/* image: "netbirdio/kubectl:latest"*/}}
34+
{{/* imagePullPolicy: {{ .Values.operator.image.pullPolicy }}*/}}
35+
{{/* command:*/}}
36+
{{/* - sh*/}}
37+
{{/* - -c*/}}
38+
{{/* args:*/}}
39+
{{/* - 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*/}}
40+
{{/* serviceAccountName: {{ include "kubernetes-operator.serviceAccountName" . }}*/}}
41+
{{/* restartPolicy: Never*/}}

helm/kubernetes-operator/templates/webhook.yaml

Lines changed: 0 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -96,84 +96,6 @@ webhooks:
9696
apiVersion: admissionregistration.k8s.io/v1
9797
kind: ValidatingWebhookConfiguration
9898
metadata:
99-
{{- if $.Values.webhook.enableCertManager }}
100-
annotations:
101-
cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ template "kubernetes-operator.fullname" . }}-serving-cert
102-
{{- end }}
103-
name: {{ include "kubernetes-operator.fullname" . }}-vnbresource-webhook
104-
labels:
105-
{{- include "kubernetes-operator.labels" . | nindent 4 }}
106-
webhooks:
107-
- clientConfig:
108-
{{- if not $.Values.webhook.enableCertManager }}
109-
caBundle: {{ $tls.caCert }}
110-
{{ end }}
111-
service:
112-
name: {{ template "kubernetes-operator.webhookService" . }}
113-
namespace: {{ $.Release.Namespace }}
114-
path: /validate-netbird-io-v1-nbresource
115-
failurePolicy: {{ .Values.webhook.failurePolicy }}
116-
name: vnbresource-v1.netbird.io
117-
admissionReviewVersions:
118-
- v1
119-
{{- if .Values.webhook.namespaceSelectors }}
120-
namespaceSelector:
121-
matchExpressions:
122-
{{ toYaml .Values.webhook.namespaceSelectors | nindent 4 }}
123-
{{ end }}
124-
rules:
125-
- apiGroups:
126-
- netbird.io
127-
apiVersions:
128-
- v1
129-
operations:
130-
- DELETE
131-
resources:
132-
- "nbresources"
133-
sideEffects: None
134-
---
135-
apiVersion: admissionregistration.k8s.io/v1
136-
kind: ValidatingWebhookConfiguration
137-
metadata:
138-
{{- if $.Values.webhook.enableCertManager }}
139-
annotations:
140-
cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ template "kubernetes-operator.fullname" . }}-serving-cert
141-
{{- end }}
142-
name: {{ include "kubernetes-operator.fullname" . }}-vnbroutingpeer-webhook
143-
labels:
144-
{{- include "kubernetes-operator.labels" . | nindent 4 }}
145-
webhooks:
146-
- clientConfig:
147-
{{- if not $.Values.webhook.enableCertManager }}
148-
caBundle: {{ $tls.caCert }}
149-
{{ end }}
150-
service:
151-
name: {{ template "kubernetes-operator.webhookService" . }}
152-
namespace: {{ $.Release.Namespace }}
153-
path: /validate-netbird-io-v1-nbroutingpeer
154-
failurePolicy: {{ .Values.webhook.failurePolicy }}
155-
name: vnbroutingpeer-v1.netbird.io
156-
admissionReviewVersions:
157-
- v1
158-
{{- if .Values.webhook.namespaceSelectors }}
159-
namespaceSelector:
160-
matchExpressions:
161-
{{ toYaml .Values.webhook.namespaceSelectors | nindent 4 }}
162-
{{ end }}
163-
rules:
164-
- apiGroups:
165-
- netbird.io
166-
apiVersions:
167-
- v1
168-
operations:
169-
- DELETE
170-
resources:
171-
- "nbroutingpeers"
172-
sideEffects: None
173-
---
174-
apiVersion: admissionregistration.k8s.io/v1
175-
kind: ValidatingWebhookConfiguration
176-
metadata:
17799
{{- if $.Values.webhook.enableCertManager }}
178100
annotations:
179101
cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ template "kubernetes-operator.fullname" . }}-serving-cert

helm/kubernetes-operator/values.yaml

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -147,42 +147,6 @@ ingress:
147147
# - group2
148148
policies: []
149149
# - default
150-
router:
151-
# Deploy routing peer(s)
152-
enabled: false
153-
# replicas: 3
154-
# resources:
155-
# requests:
156-
# cpu: 100m
157-
# memory: 100Mi
158-
# limits:
159-
# cpu: 100m
160-
# memory: 100Mi
161-
# labels: {}
162-
# annotations: {}
163-
# nodeSelector: {}
164-
# tolerations: []
165-
# Only needed if namespacedNetworks is set to true
166-
namespaces: {}
167-
# default:
168-
# replicas: 3
169-
# resources:
170-
# requests:
171-
# cpu: 100m
172-
# memory: 100Mi
173-
# limits:
174-
# cpu: 100m
175-
# memory: 100Mi
176-
# labels: {}
177-
# annotations: {}
178-
# nodeSelector: {}
179-
# tolerations: []
180-
# NetBird Policies for use with exposed services
181-
policies: {}
182-
# default:
183-
# name: Kubernetes Default Policy
184-
# sourceGroups:
185-
# - All
186150

187151
cluster:
188152
# Cluster DNS name (used for webhooks certificates and for network resource DNS names)

helm/operator-config/.helmignore

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Patterns to ignore when building packages.
2+
# This supports shell glob matching, relative path matching, and
3+
# negation (prefixed with !). Only one pattern per line.
4+
.DS_Store
5+
# Common VCS dirs
6+
.git/
7+
.gitignore
8+
.bzr/
9+
.bzrignore
10+
.hg/
11+
.hgignore
12+
.svn/
13+
# Common backup files
14+
*.swp
15+
*.bak
16+
*.tmp
17+
*.orig
18+
*~
19+
# Various IDEs
20+
.project
21+
.idea/
22+
*.tmproj
23+
.vscode/

helm/operator-config/Chart.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
apiVersion: v2
2+
name: operator-config
3+
description: A Helm chart for Kubernetes
4+
type: application
5+
version: 0.1.0
6+
appVersion: "0.0.0"
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
{{/*
2+
Expand the name of the chart.
3+
*/}}
4+
{{- define "operator-config.name" -}}
5+
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
6+
{{- end }}
7+
8+
{{/*
9+
Create chart name and version as used by the chart label.
10+
*/}}
11+
{{- define "operator-config.chart" -}}
12+
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
13+
{{- end }}
14+
15+
{{/*
16+
Common labels
17+
*/}}
18+
{{- define "operator-config.labels" -}}
19+
helm.sh/chart: {{ include "operator-config.chart" . }}
20+
{{ include "operator-config.selectorLabels" . }}
21+
{{- if .Chart.AppVersion }}
22+
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
23+
{{- end }}
24+
app.kubernetes.io/managed-by: {{ .Release.Service }}
25+
{{- end }}
26+
27+
{{/*
28+
Selector labels
29+
*/}}
30+
{{- define "operator-config.selectorLabels" -}}
31+
app.kubernetes.io/name: {{ include "operator-config.name" . }}
32+
app.kubernetes.io/instance: {{ .Release.Name }}
33+
{{- end }}

0 commit comments

Comments
 (0)