Application Deployment β Enterprise Deploy Flow
This guide defines how developers ship applications to the cluster. The platform team owns the infrastructure β developers own their apps. This page is the contract between both.
The Golden Path (Helm + ArgoCD)β
Every application deployed to this platform follows the same flow:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Developer Machine β
β git push β GitLab (main branch) β
ββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β GitLab CI Pipeline β
β β
β Stage 1: build β
β β docker build β
β β docker push harbor.local/myteam/myapp:v1.2.0 β
β β
β Stage 2: test β
β β unit tests β
β β vulnerability scan (Trivy in Harbor) β
β β
β Stage 3: package β
β β helm package ./chart β
β β helm push harbor.local/charts/myapp:v1.2.0 β
β β
β Stage 4: promote β
β β bump imageTag in gitops-repo/apps/myapp/values.yamlβ
β β git commit + push β triggers ArgoCD β
ββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β GitOps Repo β
β apps/ β
β βββ myapp/ β
β β βββ values-staging.yaml β staging overrides β
β β βββ values-prod.yaml β prod overrides β
β βββ ArgoCD Application CRD β
ββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ArgoCD β
β Detects: values changed β
β Pulls chart from Harbor OCI registry β
β Runs: helm upgrade myapp harbor/charts/myapp:v1.2.0 β
β --values values-staging.yaml β
ββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Kubernetes Cluster β
β Namespace: myteam-staging β
β βββ Deployment: myapp (3 replicas) β
β βββ Service: myapp-svc β
β βββ Ingress: myapp.staging.yourdomain.com β
β βββ HPA: scale 3β10 on CPU/KEDA β
β βββ PVC: Longhorn volume (if stateful) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Two Deployment Pathsβ
| Method | When to Use | Managed By |
|---|---|---|
| Helm + ArgoCD | All production workloads | GitOps repo + ArgoCD |
| Raw YAML + kubectl | Quick debugging, one-off jobs | Developer directly |
Helm is the default. Raw YAML is allowed but not the standard path for persistent workloads.
Environment Strategyβ
| Environment | Namespace | Auto-deploy? | Approval needed? |
|---|---|---|---|
staging | myteam-staging | Yes (on merge to main) | No |
production | myteam-prod | No | Yes β manual sync in ArgoCD |
Developer Responsibilitiesβ
β Write and maintain the Helm chart in the app repo
β Keep image tags semantic (v1.2.3 β not "latest")
β Define resource requests and limits
β Add readiness and liveness probes
β Write the CI pipeline
Platform Team Responsibilitiesβ
β Own the cluster and namespaces
β Maintain ArgoCD Applications
β Manage Harbor projects and access
β Define the standard Helm chart template (golden path)
β Define resource quotas per team namespace
Namespace Conventionβ
<team>-staging β myteam-staging
<team>-production β myteam-prod
<team>-dev β myteam-dev (optional β short-lived)
Each team gets isolated namespaces with quotas applied by the platform team via Terraform/Crossplane.
Naming Conventionβ
| Resource | Convention | Example |
|---|---|---|
| Docker image | harbor.local/<team>/<app>:<semver> | harbor.local/payments/api:v2.1.0 |
| Helm chart | harbor.local/charts/<app>:<semver> | harbor.local/charts/api:v2.1.0 |
| Helm release | <app>-<env> | api-staging |
| Ingress host | <app>.<env>.yourdomain.com | api.staging.yourdomain.com |