---
apiVersion: v1
kind: Namespace
metadata:
  creationTimestamp: null
  name: node-auto-scaler
spec: {}
status: {}
---
apiVersion: v1
kind: ServiceAccount
metadata:
  creationTimestamp: null
  name: node-auto-scaler
  namespace: node-auto-scaler
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  creationTimestamp: null
  name: node-auto-scaler
rules:
- apiGroups:
  - ""
  resources:
  - nodes
  - namespaces
  verbs:
  - get
  - list
  - watch
- apiGroups:
    - metrics.k8s.io
  resources:
    - pods
    - nodes
  verbs:
    - get
    - list
    - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  creationTimestamp: null
  name: node-auto-scaler
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: node-auto-scaler
subjects:
- kind: ServiceAccount
  name: node-auto-scaler
  namespace: node-auto-scaler
---
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: node-auto-scaler
  name: node-auto-scaler
  namespace: node-auto-scaler
spec:
  progressDeadlineSeconds: 600
  # currently only support run as a single instance
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: node-auto-scaler
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: node-auto-scaler
    spec:
      imagePullSecrets:
        - name: github
      nodeSelector:
        nodeType: loadbalancer
      serviceAccountName: node-auto-scaler
      containers:
      - image: ghcr.io/cocreate-app/cocreate-node-autoscaler/node-autoscaler
        imagePullPolicy: Always
        name: node-auto-scaler
        env:
        - name: RANCHER_URL
          valueFrom:
            secretKeyRef:
              name: node-auto-scaler
              key: RANCHER_URL
        - name: RANCHER_TOKEN
          valueFrom:
            secretKeyRef:
              name: node-auto-scaler
              key: RANCHER_TOKEN
        args:
        - "--auto-scale-group-config=/usr/lib/autoscaler/autoscalegroups.yaml"
        - "--scale-up-threshold=cpu=0.7,memory=0.7"
        - "--scale-down-threshold=cpu=0.15,memory=0.15"
        - "--alarm-window=60"
        - "--alarm-cool-down=600"
        - "--scale-up-timeout=720"
        - "--max-backend-failure=1"
        - "--min-node-num=2"
        - "--max-node-num=2"
        - "--rancher-url=$(RANCHER_URL)"
        - "--rancher-token=$(RANCHER_TOKEN)"
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - name: autoscalegroups
          mountPath: /usr/lib/autoscaler
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
      volumes:
      - name: autoscalegroups
        configMap:
          name: auto-scale-groups
status: {}
---
