apiVersion: v1
kind: ServiceAccount
metadata:
  name: balancer-controller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: balancer-controller
  namespace: kube-system
rules:
  - apiGroups:
      - balancer.x-k8s.io
    resources:
      - balancers
    verbs:
      - get
      - list
      - watch
      - patch
      - update
  - apiGroups:
      - balancer.x-k8s.io
    resources:
      - balancers/status
    verbs:
      - update
  - apiGroups:
      - ""
    resources:
      - pods
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - apps
    resources:
      - deployments/scale
    verbs:
      - get
      - list
      - watch
      - patch
      - update
  - apiGroups:
      - ""
    resources:
      - events
    verbs:
      - get
      - list
      - watch
      - create
      - patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: balancer-controller
  namespace: kube-system
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: balancer-controller
subjects:
  - kind: ServiceAccount
    name: balancer-controller
    namespace: kube-system
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: balancer-controller
  namespace: kube-system
spec:
  replicas: 1
  selector:
    matchLabels:
      app: balancer-controller
  template:
    metadata:
      labels:
        app: balancer-controller
    spec:
      serviceAccountName: balancer-controller
      containers:
        - name: controller
          image: gcr.io/gke-autoscaling-gcr/balancer:0.1.1
          imagePullPolicy: Always
          args: ["-v","4"]
          resources:
            requests:
              cpu: 100m
