apiVersion: apps/v1
kind: Deployment
metadata:
  name: dp-gke-infra-provider
  labels:
    app: dp-gke-provider
spec:
  replicas: 0
  selector:
    matchLabels:
      app: dp-gke-provider
  template:
    metadata:
      labels:
        app: dp-gke-provider
    spec:
      serviceAccountName: gke-provider
      nodeSelector:
        iam.gke.io/gke-metadata-server-enabled: "true"
      tolerations:
      - effect: NoSchedule
        key: iam.gke.io/gke-metadata-server-enabled
        operator: Exists
      containers:
      - name: gke-provider
        image: gcr.io/dbaas-prod/tidbcloud/gke-provider:v0.138.0
        command:
          - /eks-provider
          - --namespace=infra
          - --root-config=/etc/infra-api/config.yaml
          - --enable-cm-controllers=false
          - --enable-dp-controllers=true
          - --leader-elect=true
        volumeMounts:
          - name: kubeconfig
            mountPath: /.kube
          - name: root-config
            mountPath: /etc/infra-api
        env:
          - name: COMPAT_XREGION_AUTH_KEY
            valueFrom:
              secretKeyRef:
                name: api-gateway-token-external-secrets
                key: dp_compat_auth_key
          - name: KUBECONFIG
            value: /.kube/config
          - name: O11Y_AUTH0_CLIENT_ID
            valueFrom:
              secretKeyRef:
                name: o11y-auth0-client
                key: Auth0ClientID
          - name: O11Y_AUTH0_CLIENT_SECRET
            valueFrom:
              secretKeyRef:
                name: o11y-auth0-client
                key: Auth0ClientSecret
          - name: PROXY_AUTH0_CLIENT_ID
            valueFrom:
              secretKeyRef:
                name: proxy-auth0-client
                key: Auth0ClientID
          - name: PROXY_AUTH0_CLIENT_SECRET
            valueFrom:
              secretKeyRef:
                name: proxy-auth0-client
                key: Auth0ClientSecret
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
          limits:
            cpu: 500m
            memory: 2000Mi

      volumes:
        - name: kubeconfig
          secret:
            secretName: api-server-kubeconfig
        - name: root-config
          configMap:
            name: gke-provider-root-config
