Files
automation/kubernetes-templates/vscode.yml
T

193 lines
3.8 KiB
YAML

---
apiVersion: v1
kind: Namespace
metadata:
name: vscode
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: vscode-admin-sa
namespace: vscode
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: vscode-admin-binding
subjects:
- kind: ServiceAccount
name: vscode-admin-sa
namespace: vscode
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: vscode-data-pvc
namespace: vscode
spec:
accessModes:
- ReadWriteMany
storageClassName: nfs-storage
resources:
requests:
storage: 10Gi
---
apiVersion: v1
kind: Secret
metadata:
name: vscode-auth
namespace: vscode
type: Opaque
data:
vscode-password: YWRtaW4=
---
apiVersion: v1
kind: ConfigMap
metadata:
name: vscode-config
namespace: vscode
data:
CODE_SERVER_ARGS: "--auth password"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: vscode
namespace: vscode
labels:
app: vscode
spec:
replicas: 1
selector:
matchLabels:
app: vscode
template:
metadata:
labels:
app: vscode
spec:
serviceAccountName: vscode-admin-sa
terminationGracePeriodSeconds: 60
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: DoesNotExist
securityContext:
runAsUser: 1000
fsGroup: 1000
containers:
- name: vscode
image: codercom/code-server:latest
ports:
- containerPort: 8080
name: http
- containerPort: 3000
name: node-dev
- containerPort: 5000
name: dotnet-dev
env:
- name: PASSWORD
valueFrom:
secretKeyRef:
name: vscode-auth
key: vscode-password
- name: ARGS
valueFrom:
configMapKeyRef:
name: vscode-config
key: CODE_SERVER_ARGS
- name: ASPNETCORE_URLS
value: "http://0.0.0.0:5000"
volumeMounts:
- name: vscode-storage
mountPath: /home/coder
volumes:
- name: vscode-storage
persistentVolumeClaim:
claimName: vscode-data-pvc
---
apiVersion: v1
kind: Service
metadata:
name: vscode-service
namespace: vscode
spec:
type: ClusterIP
selector:
app: vscode
ports:
- name: http
protocol: TCP
port: 8080
targetPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: vscode-dev-service
namespace: vscode
spec:
type: ClusterIP
selector:
app: vscode
ports:
- name: node-dev
protocol: TCP
port: 3000
targetPort: 3000
- name: dotnet-dev
protocol: TCP
port: 5000
targetPort: 5000
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: vscode-web
namespace: vscode
spec:
entryPoints:
- websecure
routes:
- match: Host(`code.khongisa.co.za`)
kind: Rule
services:
- name: vscode-service
port: 8080
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: vscode-node-uat
namespace: vscode
spec:
entryPoints:
- websecure
routes:
- match: Host(`node.uat.khongisa.co.za`)
kind: Rule
services:
- name: vscode-dev-service
port: 3000
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: vscode-dotnet-uat
namespace: vscode
spec:
entryPoints:
- websecure
routes:
- match: Host(`dotnet.uat.khongisa.co.za`)
kind: Rule
services:
- name: vscode-dev-service
port: 5000