apiVersion: apps/v1
kind: Deployment
metadata:
  name: cluster-controller
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: cluster-controller
  template:
    metadata:
      labels:
        app.kubernetes.io/name: cluster-controller
    spec:
      serviceAccountName: cluster-controller
      securityContext:
        fsGroup: 65532
      containers:
        - name: controller
          image: cp9.local/cluster-controller:placeholder
          command:
            - /eks-provider
            - --infra-kubeconfig=
            - --root-config=/etc/cluster-controller/main/root-config.yaml
            - --enable-cm-controllers=true
            - --enable-dp-controllers=false
            - --leader-elect=true
          args:
            - --enable-uo-controller=true
            - --enable-network-controllers=false
            - --enabled-controllers=cluster,configchange,workflow,backup,restore,compactbackup,upgradeoperation,replay
          env:
            - name: O11Y_AUTH0_CLIENT_ID
              value: cp9-local
            - name: O11Y_AUTH0_CLIENT_SECRET
              value: cp9-local
            - name: PROXY_AUTH0_CLIENT_ID
              valueFrom:
                secretKeyRef:
                  name: dedicated-proxy-auth0-client
                  key: Auth0ClientID
            - name: PROXY_AUTH0_CLIENT_SECRET
              valueFrom:
                secretKeyRef:
                  name: dedicated-proxy-auth0-client
                  key: Auth0ClientSecret
            - name: ACCOUNT_XREGION_AUTH_KEY
              value: cp9-local
            - name: CLINIC_ACTIVITY_TOKEN
              value: cp9-local
            - name: AWS_SHARED_CREDENTIALS_FILE
              value: /var/run/cp9/aws/creds
            - name: AWS_REGION
              value: us-west-2
            - name: AWS_DEFAULT_REGION
              value: us-west-2
            - name: AWS_ENDPOINT_URL_SSM
              value: https://ssm-fips.$(AWS_REGION).amazonaws.com
          ports:
            - name: health
              containerPort: 8081
          livenessProbe:
            httpGet:
              path: /healthz
              port: health
            initialDelaySeconds: 3
            periodSeconds: 3
            failureThreshold: 2
          readinessProbe:
            httpGet:
              path: /readyz
              port: health
            initialDelaySeconds: 3
            periodSeconds: 3
            failureThreshold: 2
          startupProbe:
            httpGet:
              path: /healthz
              port: health
            periodSeconds: 3
            failureThreshold: 20
          resources:
            requests:
              cpu: 100m
              memory: 100Mi
            limits:
              cpu: 500m
              memory: 2000Mi
          volumeMounts:
            - mountPath: /etc/cluster-controller/main
              name: root-config
            - mountPath: /etc/cluster-controller/extra
              name: extra-config
            - name: aws-creds
              mountPath: /var/run/cp9/aws
              readOnly: true
      volumes:
        - name: root-config
          configMap:
            name: cluster-controller-root-config
        - name: extra-config
          projected:
            sources:
              - configMap:
                  name: cluster-controller-extra-config
              - configMap:
                  name: instancetype-config
        - name: aws-creds
          secret:
            secretName: aws-creds
