apiVersion: apps/v1
kind: Deployment
metadata:
  name: portfolio-app
  labels:
    app: portfolio-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: portfolio-app
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1
  template:
    metadata:
      labels:
        app: portfolio-app
    spec:
      containers:
        - name: portfolio-app
          image: ghcr.io/mayne0213/portfolio:latest
          imagePullPolicy: Always
          ports:
            - containerPort: 3000
              protocol: TCP
          env:
            - name: NODE_ENV
              value: production
            - name: ARGOCD_SERVER_URL
              value: "https://argocd-server.argocd.svc.cluster.local"
            - name: ARGOCD_TOKEN
              valueFrom:
                secretKeyRef:
                  name: argocd-token
                  key: token
                  optional: false
            - name: ARGOCD_CA_CERT
              valueFrom:
                secretKeyRef:
                  name: argocd-ca-cert
                  key: ca.crt
                  optional: true
          resources:
            requests:
              memory: "100Mi"
              cpu: "50m"
            limits:
              memory: "200Mi"
              cpu: "150m"
          livenessProbe:
            httpGet:
              path: /
              port: 3000
            initialDelaySeconds: 30
            periodSeconds: 10
          readinessProbe:
            httpGet:
              path: /
              port: 3000
            initialDelaySeconds: 5
            periodSeconds: 5
      restartPolicy: Always
