---
apiVersion: v1
kind: Namespace
metadata:
  name: vpc-example-app
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: vpc-example-app-deployment
  namespace: vpc-example-app
  labels:
    app: vpc-example-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: vpc-example-app
  template:
    metadata:
      labels:
        app: vpc-example-app
    spec:
      serviceAccountName: vpc-example-app-service
      containers:
      - name: vpc-example-app-container
        image: 123456789.dkr.ecr.us-east-1.amazonaws.com/events-flask-app:1 # Replace with your repository URI and version
        ports:
        - name: http
          containerPort: 8080
        imagePullPolicy: IfNotPresent
---
apiVersion: v1
kind: Service
metadata:
  name: vpc-example-app-service
  namespace: vpc-example-app
  labels:
    app: vpc-example-app
spec:
  type: NodePort
  selector:
    app: vpc-example-app
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 8080
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: vpc-example-app
  name: vpc-example-app-ingress
  annotations:
    alb.ingress.kubernetes.io/scheme: internal
    alb.ingress.kubernetes.io/target-type: ip
spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: vpc-example-app-service
              port:
                number: 8080