A sample tenant of an internal developer platform proof of concept. It stands in for a real team's repo. Start there for the overview.
GitOps repository for the orders domain. It is owned by the orders team and deployed by Argo CD; promotion between environments is handled by Kargo.
This is a demo domain. The workload is podinfo, a small public web service, declared as a WebApi and reconciled by webapi-operator.
One WebApi deployed to three environments with Kustomize base + overlays:
| Environment | Namespace | Replicas | Source branch |
|---|---|---|---|
| dev | orders-dev |
1 | stage/dev |
| qa | orders-qa |
2 | stage/qa |
| prod | orders-prod |
3 | stage/prod |
- Base (
manifests/orders-api/base/): theWebApishared by every environment - Overlays (
manifests/orders-api/overlays/{dev,qa,prod}/): replicas, resource sizing, and a per-environment UI message and color
- A change to
manifests/orders-api/onmain, or a new podinfo release, becomes new Freight in the Kargo Warehouse (kargo/warehouses/). - The
devstage promotes automatically. It renders the manifests with the new image tag and commits them to thestage/devbranch. - Argo CD syncs
orders-api-devfromstage/dev. qaandprodpromote on approval, using the same mechanism and the same Freight that passed the previous stage.
The stage/* branches are created by Kargo on the first promotion, so the per-environment Argo applications show as missing until then.
apps/ Argo CD Applications, one per environment
kargo.yaml Application that installs the Kargo project below
{dev,qa,prod}/
kargo/ Kargo project, warehouse and promotion stages
manifests/orders-api/ Kustomize base and overlays
The orders-project AppProject (defined in platform-gitops) limits this domain to orders-* namespaces and to this repository. Namespaces are created by the platform team, not here.
- platform-gitops: platform services, AppProjects and namespaces
- platform-bootstrap: cluster and Argo CD setup
- webapi-operator: the operator behind
WebApi