# Deployment Example apiVersion: v1 kind: ServiceAccount metadata: name: educode-controller namespace: educode --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: educode-controller-role rules: - apiGroups: ["apps"] resources: ["statefulsets"] verbs: ["get", "list", "create", "delete", "watch"] - apiGroups: [""] resources: ["services", "pods", "persistentvolumeclaims"] verbs: ["get", "list", "create", "delete", "watch"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: educode-controller-binding subjects: - kind: ServiceAccount name: educode-controller namespace: educode roleRef: kind: ClusterRole name: educode-controller-role apiGroup: rbac.authorization.k8s.io --- apiVersion: apps/v1 kind: Deployment metadata: name: educode-controller namespace: educode spec: replicas: 1 selector: matchLabels: app: educode-controller template: metadata: labels: app: educode-controller spec: serviceAccountName: educode-controller containers: - name: educode-controller image: starryskymeow/educode-controller:latest ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: name: educode-controller-svc namespace: educode spec: selector: app: educode-controller ports: - port: 80 targetPort: 8080 type: LoadBalancer