Skip to content

Commit 0006568

Browse files
committed
Add secure deployment
1 parent 64e1c02 commit 0006568

13 files changed

+165
-0
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
tls.crt
2+
tls.key
3+
*-apiservice.yaml
4+
serving-cert-secret.yaml

artifacts/deployment-secure/Makefile

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
SHELL = bash
2+
3+
OUTPUT := serving-cert-secret.yaml v1alpha1-apiservice.yaml v1beta1-apiservice.yaml
4+
5+
all: tls.key tls.crt $(OUTPUT)
6+
7+
tls.key tls.crt:
8+
openssl req -new -x509 -subj "/CN=webhook.pizza-crd.svc" -nodes -newkey rsa:4096 -keyout tls.key -out tls.crt -days 365
9+
10+
$(OUTPUT): tls.key tls.crt
11+
sed 's,CERT,$(shell base64 tls.crt),;s,KEY,$(shell base64 tls.key),' $@.template > $@
12+
13+
clean:
14+
rm -f tls.key tls.crt $(OUTPUT)
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRoleBinding
3+
metadata:
4+
name: custom-apiserver:system:auth-delegator
5+
roleRef:
6+
apiGroup: rbac.authorization.k8s.io
7+
kind: ClusterRole
8+
name: system:auth-delegator
9+
subjects:
10+
- kind: ServiceAccount
11+
name: apiserver
12+
namespace: custom-apiserver
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: RoleBinding
3+
metadata:
4+
name: custom-apiserver-auth-reader
5+
namespace: kube-system
6+
roleRef:
7+
apiGroup: rbac.authorization.k8s.io
8+
kind: Role
9+
name: extension-apiserver-authentication-reader
10+
subjects:
11+
- kind: ServiceAccount
12+
name: apiserver
13+
namespace: custom-apiserver
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: custom-server
5+
namespace: custom-apiserver
6+
labels:
7+
apiserver: "true"
8+
spec:
9+
replicas: 1
10+
selector:
11+
matchLabels:
12+
apiserver: "true"
13+
template:
14+
metadata:
15+
labels:
16+
apiserver: "true"
17+
version: "2"
18+
spec:
19+
serviceAccountName: apiserver
20+
containers:
21+
- name: apiserver
22+
image: quay.io/programming-kubernetes/custom-apiserver:latest
23+
imagePullPolicy: Always
24+
command: ["/custom-apiserver"]
25+
args:
26+
- --etcd-servers=http://localhost:2379
27+
- --cert-dir=/tmp/certs
28+
- --secure-port=8443
29+
- --tls-cert-file=/var/run/apiserver/serving-cert/tls.crt
30+
- --tls-private-key-file=/var/run/apiserver/serving-cert/tls.key
31+
- --v=4
32+
volumeMounts:
33+
- name: serving-cert
34+
readOnly: true
35+
mountPath: /var/run/apiserver/serving-cert
36+
- name: etcd
37+
image: quay.io/coreos/etcd:v3.2.24
38+
workingDir: /tmp
39+
volumes:
40+
- name: serving-cert
41+
secret:
42+
secretName: serving-cert

artifacts/deployment-secure/ns.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
apiVersion: v1
2+
kind: Namespace
3+
metadata:
4+
name: custom-apiserver
5+
spec: {}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRoleBinding
3+
metadata:
4+
name: custom-apiserver-clusterrolebinding
5+
roleRef:
6+
apiGroup: rbac.authorization.k8s.io
7+
kind: ClusterRole
8+
name: aggregated-apiserver-clusterrole
9+
subjects:
10+
- kind: ServiceAccount
11+
name: apiserver
12+
namespace: custom-apiserver

artifacts/deployment-secure/rbac.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
kind: ClusterRole
2+
apiVersion: rbac.authorization.k8s.io/v1
3+
metadata:
4+
name: aggregated-apiserver-clusterrole
5+
rules:
6+
- apiGroups: [""]
7+
resources: ["namespaces"]
8+
verbs: ["get", "watch", "list"]
9+
- apiGroups: ["admissionregistration.k8s.io"]
10+
resources: ["mutatingwebhookconfigurations", "validatingwebhookconfigurations"]
11+
verbs: ["get", "watch", "list"]

artifacts/deployment-secure/sa.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
kind: ServiceAccount
2+
apiVersion: v1
3+
metadata:
4+
name: apiserver
5+
namespace: custom-apiserver
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: api
5+
namespace: custom-apiserver
6+
spec:
7+
ports:
8+
- port: 443
9+
protocol: TCP
10+
targetPort: 8443
11+
selector:
12+
apiserver: "true"

0 commit comments

Comments
 (0)