apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: gateway
  namespace: argocd
spec:
  project: default
  destination:
    server: https://kubernetes.default.svc
    namespace: gateway
  source:
    repoURL: ghcr.io/purisev
    chart: universal-helm-chart
    targetRevision: 3.3.0
    helm:
      releaseName: gateway
      values: |
        httpRoute:
          enabled: true
          parentRefs:
            - name: external
              namespace: gateway-system
              sectionName: https
          hostnames:
            - "app.example.com"
        referenceGrant:
          enabled: true
          from:
            - group: gateway.networking.k8s.io
              kind: HTTPRoute
              namespace: gateway-system
          to:
            - group: ""
              kind: Service
        deployments:
          api:
            enabled: true
            replicaCount: 2
            image:
              repository: ghcr.io/example/api
              tag: v1.4.2
            service:
              enabled: true
              ports:
                http:
                  port: 80
                  targetPort: 8080
            httpRoute:
              enabled: true
              priority: 10
              rules:
                - matches:
                    - path:
                        type: PathPrefix
                        value: /api
            resources:
              requests:
                cpu: 100m
                memory: 128Mi
              limits:
                memory: 256Mi
          web:
            enabled: true
            replicaCount: 2
            image:
              repository: nginx
              tag: "1.27"
            service:
              enabled: true
              ports:
                http:
                  port: 80
                  targetPort: 80
            httpRoute:
              enabled: true
              priority: 20
              rules:
                - matches:
                    - path:
                        type: PathPrefix
                        value: /
            resources:
              requests:
                cpu: 50m
                memory: 64Mi
              limits:
                memory: 128Mi
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - CreateNamespace=true
      - ServerSideApply=true
