Skip to content

Commit 585ae44

Browse files
committed
feat(helm): Allow multiple versions of the operator to be installed
Signed-off-by: Jonathan Stacks <[email protected]>
1 parent 36b1193 commit 585ae44

File tree

6 files changed

+90
-45
lines changed

6 files changed

+90
-45
lines changed

helm/ngrok-operator/templates/controller-rbac.yaml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
apiVersion: rbac.authorization.k8s.io/v1
33
kind: Role
44
metadata:
5-
name: ngrok-operator-leader-election-role
5+
name: {{ include "ngrok-operator.fullname" . }}-leader-election-role
66
namespace: {{ .Release.Namespace }}
77
rules:
88
- apiGroups:
@@ -40,7 +40,7 @@ rules:
4040
apiVersion: rbac.authorization.k8s.io/v1
4141
kind: ClusterRole
4242
metadata:
43-
name: ngrok-operator-proxy-role
43+
name: {{ include "ngrok-operator.fullname" . }}-proxy-role
4444
rules:
4545
- apiGroups:
4646
- authentication.k8s.io
@@ -58,12 +58,12 @@ rules:
5858
apiVersion: rbac.authorization.k8s.io/v1
5959
kind: RoleBinding
6060
metadata:
61-
name: ngrok-operator-leader-election-rolebinding
61+
name: {{ include "ngrok-operator.fullname" . }}-leader-election-rolebinding
6262
namespace: {{ .Release.Namespace }}
6363
roleRef:
6464
apiGroup: rbac.authorization.k8s.io
6565
kind: Role
66-
name: ngrok-operator-leader-election-role
66+
name: {{ include "ngrok-operator.fullname" . }}-leader-election-role
6767
subjects:
6868
- kind: ServiceAccount
6969
name: {{ template "ngrok-operator.serviceAccountName" . }}
@@ -72,11 +72,11 @@ subjects:
7272
apiVersion: rbac.authorization.k8s.io/v1
7373
kind: ClusterRoleBinding
7474
metadata:
75-
name: ngrok-operator-manager-rolebinding
75+
name: {{ include "ngrok-operator.fullname" . }}-manager-rolebinding
7676
roleRef:
7777
apiGroup: rbac.authorization.k8s.io
7878
kind: ClusterRole
79-
name: ngrok-operator-manager-role
79+
name: {{ include "ngrok-operator.fullname" . }}-manager-role
8080
subjects:
8181
- kind: ServiceAccount
8282
name: {{ template "ngrok-operator.serviceAccountName" . }}
@@ -85,11 +85,11 @@ subjects:
8585
apiVersion: rbac.authorization.k8s.io/v1
8686
kind: ClusterRoleBinding
8787
metadata:
88-
name: ngrok-operator-proxy-rolebinding
88+
name: {{ include "ngrok-operator.fullname" . }}-proxy-rolebinding
8989
roleRef:
9090
apiGroup: rbac.authorization.k8s.io
9191
kind: ClusterRole
92-
name: ngrok-operator-proxy-role
92+
name: {{ include "ngrok-operator.fullname" . }}-proxy-role
9393
subjects:
9494
- kind: ServiceAccount
9595
name: {{ template "ngrok-operator.serviceAccountName" . }}

helm/ngrok-operator/templates/rbac/role.yaml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

helm/ngrok-operator/tests/__snapshot__/controller-deployment_test.yaml.snap

Lines changed: 26 additions & 26 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

helm/ngrok-operator/tests/__snapshot__/controller-rbac_test.yaml.snap

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tools/make/deploy.mk

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ deploy_with_bindings: _deploy-check-env-vars docker-build manifests _helm_setup
6363
$(HELM_DESCRIPTION_FLAG)
6464

6565
.PHONY: deploy_for_e2e
66-
deploy_for_e2e: _deploy-check-env-vars docker-build manifests _helm_setup kind-load-image ## Deploy controller to the K8s cluster specified in ~/.kube.config.
66+
deploy_for_e2e: _deploy-check-env-vars docker-build manifests _helm_setup kind-load-image ## Deploy controller to the K8s cluster specified in ~/.kube/config.
6767
helm upgrade $(HELM_RELEASE_NAME) $(HELM_CHART_DIR) --install \
6868
--namespace $(KUBE_NAMESPACE) \
6969
--create-namespace \
@@ -85,7 +85,52 @@ deploy_for_e2e: _deploy-check-env-vars docker-build manifests _helm_setup kind-l
8585
--set bindings.serviceLabels.label1="val1"
8686

8787
.PHONY: deploy_multi_namespace
88+
## 1. We want to install the CRDs only once at the beginning
89+
## 2. We want to make a namespace-a and namespace-b
90+
## 3. We want to install the helm chart twice, watching only the namespace belonging to each one
8891
deploy_multi_namespace: _deploy-check-env-vars docker-build manifests _helm_setup kind-load-image ## Deploy multiple copies of the controller to the K8s cluster specified in ~/.kube/config.
92+
helm upgrade ngrok-operator-crds $(CRD_CHART_DIR) --install \
93+
--kube-context=kind-$(KIND_CLUSTER_NAME) \
94+
--namespace kube-system \
95+
--create-namespace
96+
kubectl --context=kind-$(KIND_CLUSTER_NAME) create namespace namespace-a || true
97+
kubectl --context=kind-$(KIND_CLUSTER_NAME) create namespace namespace-b || true
98+
99+
helm upgrade ngrok-operator-a $(HELM_CHART_DIR) --install \
100+
--kube-context=kind-$(KIND_CLUSTER_NAME) \
101+
--namespace namespace-a \
102+
--set installCRDs=false \
103+
--set image.repository=$(IMG) \
104+
--set image.tag="latest" \
105+
--set ingress.controllerName="k8s.ngrok.com/ingress-controller-a" \
106+
--set ingress.ingressClass.name="ngrok-a" \
107+
--set ingress.watchNamespace="namespace-a" \
108+
--set watchNamespace=namespace-a \
109+
--set credentials.apiKey=$(NGROK_API_KEY) \
110+
--set credentials.authtoken=$(NGROK_AUTHTOKEN) \
111+
--set log.format=console \
112+
--set-string log.level="8" \
113+
--set log.stacktraceLevel=panic \
114+
--set metaData.env=local,metaData.from=makefile \
115+
$(HELM_DESCRIPTION_FLAG)
116+
117+
helm upgrade ngrok-operator-b $(HELM_CHART_DIR) --install \
118+
--kube-context=kind-$(KIND_CLUSTER_NAME) \
119+
--namespace namespace-b \
120+
--set installCRDs=false \
121+
--set ingress.controllerName="k8s.ngrok.com/ingress-controller-b" \
122+
--set ingress.ingressClass.name="ngrok-b" \
123+
--set ingress.watchNamespace="namespace-b" \
124+
--set image.repository=$(IMG) \
125+
--set image.tag="latest" \
126+
--set watchNamespace=namespace-b \
127+
--set credentials.apiKey=$(NGROK_API_KEY) \
128+
--set credentials.authtoken=$(NGROK_AUTHTOKEN) \
129+
--set log.format=console \
130+
--set-string log.level="8" \
131+
--set log.stacktraceLevel=panic \
132+
--set metaData.env=local,metaData.from=makefile \
133+
$(HELM_DESCRIPTION_FLAG)
89134

90135
.PHONY: kind-load-image
91136
kind-load-image: ## Load the locally built image into the kind cluster.

tools/make/generate.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ generate-mocks:
1010

1111
.PHONY: manifests
1212
manifests: ## Generate WebhookConfiguration, ClusterRole and CustomResourceDefinition objects.
13-
controller-gen rbac:roleName=ngrok-operator-manager-role crd webhook paths="$(CONTROLLER_GEN_PATHS)" \
13+
controller-gen rbac:roleName='"{{ include \"ngrok-operator.fullname\" . }}-manager-role"' crd webhook paths="$(CONTROLLER_GEN_PATHS)" \
1414
output:crd:artifacts:config=$(CRD_TEMPLATES_DIR) \
1515
output:rbac:artifacts:config=$(HELM_TEMPLATES_DIR)/rbac
1616

0 commit comments

Comments
 (0)