# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
# SPDX-License-Identifier: MIT-0
apiVersion: v1
kind: Namespace
metadata:
  name: multi-arch-app

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: multi-arch-app
  labels:
    app: multi-arch-app
  namespace: multi-arch-app
spec:
  selector:
    matchLabels:
      app: multi-arch-app
  replicas: 2
  strategy:
    rollingUpdate:
      maxSurge: 100%
      maxUnavailable: 100%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: multi-arch-app
    spec:
      containers:
      - image: <CONTAINER-IMAGE-PLACEHOLDER>
        imagePullPolicy: Always
        name: multi-arch-app
        ports:
          - containerPort: 5080
            protocol: TCP
        readinessProbe:
          httpGet:
            port: 5080
            path: /
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
          limits:
            cpu: 1000m
            memory: 1000Mi
        securityContext:
          allowPrivilegeEscalation: false
          runAsNonRoot: true

      tolerations:
      - key: graviton
        value: 'true'
        effect: NoExecute
      
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - "multi-arch-app"
            topologyKey: kubernetes.io/hostname

---
apiVersion: v1
kind: Service
metadata:
  namespace: multi-arch-app
  name: multi-arch-app-svc
spec:
  ports:
    - port: 80
      targetPort: 5080
      protocol: TCP
  type: NodePort
  selector:
    app: multi-arch-app

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: multi-arch-app
  name: multi-arch-app-ing
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
spec:
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: multi-arch-app-svc
                port: 
                  number: 80