Deploy with Argo CD and ACM

Guide for deploying Stadium Wallet with Argo CD, with or without ACM (Advanced Cluster Management).

File summary

File Purpose
argocd-placement-configmap.yaml ConfigMap acm-placement for clusterDecisionResource
argocd-applicationset-rbac-placement.yaml RBAC for ApplicationSet to read PlacementDecisions
app-nfl-wallet-acm.yaml Placements + GitOpsCluster (ACM only)
app-nfl-wallet-acm-cluster-decision.yaml ApplicationSet (list generator, default)
app-nfl-wallet-acm-cluster-decision-placement.yaml ApplicationSet with clusterDecisionResource (optional)
app-nfl-wallet-east.yaml ApplicationSet for east cluster (no ACM)
app-nfl-wallet-west.yaml ApplicationSet for west cluster (no ACM)

ACM logic (clusterDecisionResource)

                    ┌─────────────────────────────────────┐
                    │  Placement "nfl-wallet-gitops-        │
                    │  placement" (app-nfl-wallet-acm.yaml)│
                    │  - Selects clusters with              │
                    │    region=east or region=west         │
                    └─────────────────┬───────────────────┘
                                      │
                                      ▼
                    ┌─────────────────────────────────────┐
                    │  PlacementDecision                   │
                    │  status.decisions:                   │
                    │  - { clusterName: "east" }           │
                    │  - { clusterName: "west" }            │
                    └─────────────────┬───────────────────┘
                                      │
                                      ▼
                    ┌─────────────────────────────────────┐
                    │  ApplicationSet (clusterDecision    │
                    │  Resource generator)                  │
                    │  - Reads acm-placement ConfigMap     │
                    │  - Matrix: clusters × (dev,test,prod) │
                    │  - Generates 6 Applications          │
                    └─────────────────┬───────────────────┘
                                      │
                    ┌─────────────────┴─────────────────┐
                    ▼                                   ▼
         nfl-wallet-dev-east              nfl-wallet-dev-west
         nfl-wallet-test-east             nfl-wallet-test-west
         nfl-wallet-prod-east             nfl-wallet-prod-west

Application order

With ACM (hub + managed clusters east/west)

Default (list generator):

# 1. Placements + GitOpsCluster (creates east/west secrets in Argo CD)
kubectl apply -f app-nfl-wallet-acm.yaml -n openshift-gitops

# 2. ApplicationSet (generates the 6 Applications)
kubectl apply -f app-nfl-wallet-acm-cluster-decision.yaml -n openshift-gitops

Alternative (clusterDecisionResource, clusters from Placement):

kubectl apply -f argocd-applicationset-rbac-placement.yaml
kubectl apply -f argocd-placement-configmap.yaml -n openshift-gitops
kubectl apply -f app-nfl-wallet-acm.yaml -n openshift-gitops
kubectl apply -f app-nfl-wallet-acm-cluster-decision-placement.yaml -n openshift-gitops

Without ACM (single cluster or manual east/west)

# East (edit server in file if remote)
kubectl apply -f app-nfl-wallet-east.yaml -n openshift-gitops

# West (edit server in file)
kubectl apply -f app-nfl-wallet-west.yaml -n openshift-gitops

Overlay structure (Kustomize)

Path Use
nfl-wallet/overlays/dev Single-cluster dev
nfl-wallet/overlays/test Single-cluster test
nfl-wallet/overlays/prod Single-cluster prod
nfl-wallet/overlays/dev-east ACM: dev on east cluster
nfl-wallet/overlays/dev-west ACM: dev on west cluster
nfl-wallet/overlays/test-east ACM: test on east cluster
nfl-wallet/overlays/test-west ACM: test on west cluster
nfl-wallet/overlays/prod-east ACM: prod on east cluster
nfl-wallet/overlays/prod-west ACM: prod on west cluster

Cluster domains

Overlays have the domain hardcoded. To change:

  • Single-cluster (dev, test, prod): edit the patch in nfl-wallet/overlays/dev, etc.
  • ACM east: edit overlays *-east (default: cluster-4cspb.4cspb.sandbox1414.opentlc.com)
  • ACM west: edit overlays *-west (default: cluster-4q4c7.4q4c7.sandbox3802.opentlc.com)

Verification

# Generated Applications
kubectl get applications -n openshift-gitops | grep nfl-wallet

# PlacementDecision (with ACM)
kubectl get placementdecision -n openshift-gitops

# Cluster secrets in Argo CD
kubectl get secrets -n openshift-gitops -l argocd.argoproj.io/secret-type=cluster

Note: Application (Gateway, webapp)

The nfl-wallet/ overlays deploy Routes, AuthPolicy, API keys, namespace-mesh. The application (Gateway, webapp, backends) must be deployed separately, e.g. with the Stadium Wallet chart from Artifact Hub or from another repo.