Skip to content

Commit 926eae9

Browse files
committed
Add support for Kubernetes by deploying code-server, Contour for ingress
controller, and Cert Manager for Let's Encrypt certificates, with persistent storage with AWS EBS volumes. Signed-off-by: Steve Sloka <[email protected]>
1 parent cded51f commit 926eae9

File tree

5 files changed

+672
-0
lines changed

5 files changed

+672
-0
lines changed

deployment/Dockerfile

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
FROM golang:stretch
2+
WORKDIR /app
3+
RUN apt-get update \
4+
&& apt-get install -y wget net-tools vim rsync \
5+
&& rm -rf /var/lib/apt/lists/*
6+
RUN wget https://github.com/$(wget https://github.com/codercom/code-server/releases/latest -O - | egrep '/.*/.*-linux.tar.gz' -o) \
7+
&& tar -xvzf * \
8+
&& cd * \
9+
&& chmod +x code-server \
10+
&& mv ./code-server /
11+
12+
EXPOSE 8443
13+
CMD /code-server -p 8443

deployment/certmanager.yaml

Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
---
2+
# Source: cert-manager/templates/00-namespace.yaml
3+
4+
apiVersion: v1
5+
kind: Namespace
6+
metadata:
7+
name: "cert-manager"
8+
9+
---
10+
# Source: cert-manager/templates/serviceaccount.yaml
11+
apiVersion: v1
12+
kind: ServiceAccount
13+
metadata:
14+
name: cert-manager
15+
namespace: "cert-manager"
16+
labels:
17+
app: cert-manager
18+
chart: cert-manager-v0.4.1
19+
release: cert-manager
20+
heritage: Tiller
21+
---
22+
# Source: cert-manager/templates/certificate-crd.yaml
23+
apiVersion: apiextensions.k8s.io/v1beta1
24+
kind: CustomResourceDefinition
25+
metadata:
26+
name: certificates.certmanager.k8s.io
27+
labels:
28+
app: cert-manager
29+
chart: cert-manager-v0.4.1
30+
release: cert-manager
31+
heritage: Tiller
32+
spec:
33+
group: certmanager.k8s.io
34+
version: v1alpha1
35+
scope: Namespaced
36+
names:
37+
kind: Certificate
38+
plural: certificates
39+
shortNames:
40+
- cert
41+
- certs
42+
43+
---
44+
# Source: cert-manager/templates/clusterissuer-crd.yaml
45+
apiVersion: apiextensions.k8s.io/v1beta1
46+
kind: CustomResourceDefinition
47+
metadata:
48+
name: clusterissuers.certmanager.k8s.io
49+
labels:
50+
app: cert-manager
51+
chart: cert-manager-v0.4.1
52+
release: cert-manager
53+
heritage: Tiller
54+
spec:
55+
group: certmanager.k8s.io
56+
version: v1alpha1
57+
names:
58+
kind: ClusterIssuer
59+
plural: clusterissuers
60+
scope: Cluster
61+
---
62+
# Source: cert-manager/templates/issuer-crd.yaml
63+
apiVersion: apiextensions.k8s.io/v1beta1
64+
kind: CustomResourceDefinition
65+
metadata:
66+
name: issuers.certmanager.k8s.io
67+
labels:
68+
app: cert-manager
69+
chart: cert-manager-v0.4.1
70+
release: cert-manager
71+
heritage: Tiller
72+
spec:
73+
group: certmanager.k8s.io
74+
version: v1alpha1
75+
names:
76+
kind: Issuer
77+
plural: issuers
78+
scope: Namespaced
79+
---
80+
# Source: cert-manager/templates/rbac.yaml
81+
apiVersion: rbac.authorization.k8s.io/v1beta1
82+
kind: ClusterRole
83+
metadata:
84+
name: cert-manager
85+
labels:
86+
app: cert-manager
87+
chart: cert-manager-v0.4.1
88+
release: cert-manager
89+
heritage: Tiller
90+
rules:
91+
- apiGroups: ["certmanager.k8s.io"]
92+
resources: ["certificates", "issuers", "clusterissuers"]
93+
verbs: ["*"]
94+
- apiGroups: [""]
95+
# TODO: remove endpoints once 0.4 is released. We include it here in case
96+
# users use the 'master' version of the Helm chart with a 0.2.x release of
97+
# cert-manager that still performs leader election with Endpoint resources.
98+
# We advise users don't do this, but some will anyway and this will reduce
99+
# friction.
100+
resources: ["endpoints", "configmaps", "secrets", "events", "services", "pods"]
101+
verbs: ["*"]
102+
- apiGroups: ["extensions"]
103+
resources: ["ingresses"]
104+
verbs: ["*"]
105+
---
106+
apiVersion: rbac.authorization.k8s.io/v1beta1
107+
kind: ClusterRoleBinding
108+
metadata:
109+
name: cert-manager
110+
labels:
111+
app: cert-manager
112+
chart: cert-manager-v0.4.1
113+
release: cert-manager
114+
heritage: Tiller
115+
roleRef:
116+
apiGroup: rbac.authorization.k8s.io
117+
kind: ClusterRole
118+
name: cert-manager
119+
subjects:
120+
- name: cert-manager
121+
namespace: "cert-manager"
122+
kind: ServiceAccount
123+
---
124+
# Source: cert-manager/templates/deployment.yaml
125+
apiVersion: apps/v1beta1
126+
kind: Deployment
127+
metadata:
128+
name: cert-manager
129+
namespace: "cert-manager"
130+
labels:
131+
app: cert-manager
132+
chart: cert-manager-v0.4.1
133+
release: cert-manager
134+
heritage: Tiller
135+
spec:
136+
replicas: 1
137+
selector:
138+
matchLabels:
139+
app: cert-manager
140+
release: cert-manager
141+
template:
142+
metadata:
143+
labels:
144+
app: cert-manager
145+
release: cert-manager
146+
annotations:
147+
spec:
148+
serviceAccountName: cert-manager
149+
containers:
150+
- name: cert-manager
151+
image: "quay.io/jetstack/cert-manager-controller:v0.4.1"
152+
imagePullPolicy: IfNotPresent
153+
args:
154+
- --cluster-resource-namespace=$(POD_NAMESPACE)
155+
- --leader-election-namespace=$(POD_NAMESPACE)
156+
env:
157+
- name: POD_NAMESPACE
158+
valueFrom:
159+
fieldRef:
160+
fieldPath: metadata.namespace
161+
resources:
162+
requests:
163+
cpu: 10m
164+
memory: 32Mi
165+
---
166+
apiVersion: certmanager.k8s.io/v1alpha1
167+
kind: ClusterIssuer
168+
metadata:
169+
name: letsencrypt-prod
170+
namespace: cert-manager
171+
spec:
172+
acme:
173+
email: <emailAddress>
174+
http01: {}
175+
privateKeySecretRef:
176+
name: letsencrypt-prod
177+
server: https://acme-v02.api.letsencrypt.org/directory
178+
---
179+
apiVersion: certmanager.k8s.io/v1alpha1
180+
kind: ClusterIssuer
181+
metadata:
182+
name: letsencrypt-staging
183+
namespace: cert-manager
184+
spec:
185+
acme:
186+
email: <emailAddress>
187+
http01: {}
188+
privateKeySecretRef:
189+
name: letsencrypt-staging
190+
server: https://acme-staging-v02.api.letsencrypt.org/directory
191+
---

0 commit comments

Comments
 (0)