apiVersion: v1
kind: Namespace
metadata:
  name: code-server
---
apiVersion: v1
kind: Service
metadata:
 name: code-server
 namespace: code-server
spec:
 ports:
 - port: 8443
   name: https
   protocol: TCP
 selector:
   app: code-server
 type: ClusterIP
---
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: gp2
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
  fsType: ext4
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: code-store
  namespace: code-server
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 60Gi
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: code-server
  name: code-server
  namespace: code-server
spec:
  selector:
    matchLabels:
      app: code-server
  replicas: 1
  template:
    metadata:
      labels:
        app: code-server
    spec:
      containers:
      - image: codercom/code-server
        imagePullPolicy: Always
        name: code-servery
        ports:
        - containerPort: 8443
          name: https
        volumeMounts:
        - name: code-server-storage
          mountPath: /go/src
      volumes:
      - name: code-server-storage
        persistentVolumeClaim:
          claimName: code-store