Skip to content

Commit f27518e

Browse files
author
Philippe Richard
authored
feat(CON-8768): add LB admission webhook manifests (#683)
feat(CON-8768): add LB admission webhook manifests This change introduces the k8s manifest changes required to deploy the LB admission webhook alongside the existing CCM deployment. Adds: - Validation webhook definition - Self signed issuer for signing the admission server certs - Serving certs for the admission server - Service fronting the CCM pod - Additional container running the admission server within the CCM pod.
1 parent 023ef06 commit f27518e

File tree

3 files changed

+97
-1
lines changed

3 files changed

+97
-1
lines changed

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ bump-version:
5555
@echo $(NEW_VERSION) > VERSION
5656
@cp releases/dev.yml releases/${NEW_VERSION}.yml
5757
@sed -i.sedbak 's#image: digitalocean/digitalocean-cloud-controller-manager:dev#image: digitalocean/digitalocean-cloud-controller-manager:${NEW_VERSION}#g' releases/${NEW_VERSION}.yml
58+
@sed -i.sedbak 's#image: digitalocean/digitalocean-cloud-controller-manager-admission-server:dev#image: digitalocean/digitalocean-cloud-controller-manager-admission-server:${NEW_VERSION}#g' releases/${NEW_VERSION}.yml
5859
@git add --intent-to-add releases/${NEW_VERSION}.yml
5960
$(eval NEW_DATE = $(shell date '+%B %e, %Y'))
6061
@sed -i.sedbak 's/## unreleased/## ${NEW_VERSION} (beta) - ${NEW_DATE}/g' CHANGELOG.md

docs/getting-started.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ These are the recommended versions to run the cloud controller manager based on
1414
* Use CCM versions >= v0.1.5 if you're running Kubernetes version >= v1.10
1515
* Use CCM versions >= v0.1.8 if you're running Kubernetes version >= v1.11
1616

17+
### Cluster
18+
19+
If you opt to install all of the components of the [releases](../releases), you'll have to install [cert-manager](https://cert-manager.io/docs/installation/) (if not already installed).
20+
1721
### Parameters
1822

1923
This section outlines parameters that can be passed to the cloud controller manager binary.

releases/dev.yml

Lines changed: 92 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,33 @@ spec:
5050
secretKeyRef:
5151
name: digitalocean
5252
key: access-token
53-
53+
- image: digitalocean/digitalocean-cloud-controller-manager-admission-server:dev
54+
name: digitalocean-cloud-controller-manager-admission-server
55+
command:
56+
- "/bin/digitalocean-cloud-controller-manager-admission-server"
57+
resources:
58+
requests:
59+
cpu: 100m
60+
memory: 50Mi
61+
env:
62+
- name: DO_ACCESS_TOKEN
63+
valueFrom:
64+
secretKeyRef:
65+
name: digitalocean
66+
key: access-token
67+
ports:
68+
- containerPort: 9443
69+
name: admission
70+
protocol: TCP
71+
volumeMounts:
72+
- mountPath: /tmp/k8s-webhook-server/serving-certs
73+
name: digitalocean-cloud-controller-manager-serving-certs
74+
readOnly: true
75+
volumes:
76+
- name: digitalocean-cloud-controller-manager-serving-certs
77+
secret:
78+
defaultMode: 420
79+
secretName: digitalocean-cloud-controller-manager-serving-certs
5480
---
5581
apiVersion: v1
5682
kind: ServiceAccount
@@ -152,3 +178,68 @@ subjects:
152178
- kind: ServiceAccount
153179
name: cloud-controller-manager
154180
namespace: kube-system
181+
---
182+
apiVersion: v1
183+
kind: Service
184+
metadata:
185+
name: digitalocean-cloud-controller-manager
186+
namespace: kube-system
187+
spec:
188+
selector:
189+
app: digitalocean-cloud-controller-manager
190+
ports:
191+
- protocol: TCP
192+
port: 443
193+
targetPort: 9443
194+
---
195+
apiVersion: cert-manager.io/v1
196+
kind: Certificate
197+
metadata:
198+
name: digitalocean-cloud-controller-manager-serving-certs
199+
namespace: kube-system
200+
spec:
201+
dnsNames:
202+
- digitalocean-cloud-controller-manager
203+
- digitalocean-cloud-controller-manager.kube-system.svc
204+
- digitalocean-cloud-controller-manager.kube-system.svc.cluster.local
205+
issuerRef:
206+
kind: Issuer
207+
name: digitalocean-cloud-controller-manager-selfsigned-issuer
208+
secretName: digitalocean-cloud-controller-manager-serving-certs
209+
---
210+
apiVersion: cert-manager.io/v1
211+
kind: Issuer
212+
metadata:
213+
name: digitalocean-cloud-controller-manager-selfsigned-issuer
214+
namespace: kube-system
215+
spec:
216+
selfSigned: {}
217+
---
218+
apiVersion: admissionregistration.k8s.io/v1
219+
kind: ValidatingWebhookConfiguration
220+
metadata:
221+
annotations:
222+
cert-manager.io/inject-ca-from: kube-system/digitalocean-cloud-controller-manager-serving-certs
223+
name: digitalocean-cloud-controller-manager-admission-webhook
224+
webhooks:
225+
- name: validation-webhook.loadbalancer.doks.io
226+
admissionReviewVersions:
227+
- v1
228+
clientConfig:
229+
service:
230+
namespace: "kube-system"
231+
name: "digitalocean-cloud-controller-manager"
232+
path: "/lb-service"
233+
failurePolicy: Ignore
234+
rules:
235+
- apiGroups:
236+
- ""
237+
apiVersions:
238+
- v1
239+
operations:
240+
- CREATE
241+
- UPDATE
242+
resources:
243+
- services
244+
scope: Namespaced
245+
sideEffects: None

0 commit comments

Comments
 (0)