# apiVersion: v1
# kind: Namespace
# metadata:
#   labels:
#     app.kubernetes.io/name: regional-server
#     app.kubernetes.io/created-by: regional-server
#     app.kubernetes.io/part-of: regional-server
#     app.kubernetes.io/managed-by: kustomize
#   name: regional-server-system
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: regional-server
  labels:
    app.kubernetes.io/name: regional-server
    app.kubernetes.io/component: regional-server
    app.kubernetes.io/managed-by: kustomize
spec:
  selector:
    matchLabels:
      app: regional-server
  replicas: 1
  template:
    metadata:
      annotations:
        kubectl.kubernetes.io/default-container: regional-server
      labels:
        app: regional-server
    spec:
      securityContext:
        runAsNonRoot: true
        seccompProfile:
          type: RuntimeDefault
      containers:
      - args:
        - --port=8080
        - --log-level=debug
        - --client-mode=true
        - --root-config=/etc/configs/root-config.yaml
        - --addon-template-config=/etc/configs/k8s-addon-templates.yaml
        - --infra-template-config=/etc/configs/k8s-infra-templates.yaml
        - --dedicated-template-config=/etc/configs/k8s-dedicated-templates.yaml
        - --dp-template-config=/etc/configs/k8s-dp-templates.yaml
        image: controller:latest
        name: regional-server
        env:
        - name: AWS_STS_REGIONAL_ENDPOINTS
          value: regional
        - name: AWS_DEFAULT_REGION
          value: us-west-2
        - name: AWS_REGION
          value: us-west-2
        ports:
        - containerPort: 8080
        securityContext:
          allowPrivilegeEscalation: false
          capabilities:
            drop:
            - "ALL"
        livenessProbe:
          httpGet:
            path: /healthz
            port: 8081
          initialDelaySeconds: 15
          periodSeconds: 20
        readinessProbe:
          httpGet:
            path: /readyz
            port: 8081
          initialDelaySeconds: 5
          periodSeconds: 10
        imagePullPolicy: Always
        volumeMounts:
          - name: root-config
            mountPath: /etc/configs/root-config.yaml
            subPath: root-config.yaml
          - name: addon-template-config
            mountPath: /etc/configs/k8s-addon-templates.yaml
            subPath: k8s-addon-templates.yaml
          - name: infra-template-config
            mountPath: /etc/configs/k8s-infra-templates.yaml
            subPath: k8s-infra-templates.yaml
          - name: dedicated-template-config
            mountPath: /etc/configs/k8s-dedicated-templates.yaml
            subPath: k8s-dedicated-templates.yaml
          - name: dp-template-config
            mountPath: /etc/configs/k8s-dp-templates.yaml
            subPath: k8s-dp-templates.yaml
          - name: admin-node-role-trust-policy
            mountPath: /etc/configs/admin-node-role-trust-policy.json
            subPath: admin-node-role-trust-policy.json
          - name: admin-node-role-policy-template
            mountPath: /etc/configs/admin-node-role-policy-template.json
            subPath: admin-node-role-policy-template.json
          - name: aws-lb-controller-policy
            mountPath: /etc/configs/aws-lb-controller-policy.json
            subPath: aws-lb-controller-policy.json
          - name: external-dns-policy
            mountPath: /etc/configs/external-dns-policy.json
            subPath: external-dns-policy.json
        resources:
          limits:
            cpu: 500m
            memory: 512Mi
          requests:
            cpu: 10m
            memory: 64Mi
      volumes:
        - name: root-config
          configMap:
            name: regional-server-root-config
        - name: addon-template-config
          configMap:
            name: regional-server-addon-template-config
        - name: infra-template-config
          configMap:
            name: regional-server-infra-template-config
        - name: dedicated-template-config
          configMap:
            name: regional-server-dedicated-template-config
        - name: dp-template-config
          configMap:
            name: regional-server-dp-template-config
        - name: admin-node-role-trust-policy
          configMap:
            name: admin-node-role-trust-policy
        - name: admin-node-role-policy-template
          configMap:
            name: admin-node-role-policy-template
        - name: aws-lb-controller-policy
          configMap:
            name: aws-lb-controller-policy
        - name: external-dns-policy
          configMap:
            name: external-dns-policy
      serviceAccountName: dedicated-regional-server-manager
      terminationGracePeriodSeconds: 10
