Deployment
ArgoCD GitOps deployment and Helm chart management.
Overview
isA Cloud uses GitOps with:
- ArgoCD - Continuous deployment
- Helm - Package management
- Multi-environment - dev, staging, production
Environments
| Environment | Cluster | Namespace | Branch |
|---|---|---|---|
| Local | KIND | isa-cloud-staging | develop |
| Staging | EKS | isa-cloud-staging | main |
| Production | EKS/GKE | isa-cloud-production | production |
GitOps Workflow
Developer Push Code
│
▼
GitHub Actions CI
├─ Lint & Test
├─ Build Docker Images
├─ Push to Harbor/ECR
└─ Security Scan (Trivy)
│
▼
Update Image Tag in Git
│
▼
ArgoCD Detects Changes (30s)
│
▼
ArgoCD Syncs to Kubernetes
│
▼
Rolling Update
│
▼
Service Registers to Consul
│
▼
APISIX Syncs RoutesArgoCD Applications
App-of-Apps Pattern
deployments/argocd/
├── applications/ # Root applications
│ ├── isa-cloud-dev.yaml
│ ├── isa-cloud-staging.yaml
│ └── isa-cloud-production.yaml
└── apps/ # Child applications
├── dev/
├── staging/
└── production/Root Application
# deployments/argocd/applications/isa-cloud-staging.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: isa-cloud-staging
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/org/isA_Cloud
targetRevision: main
path: deployments/argocd/apps/staging
destination:
server: https://kubernetes.default.svc
namespace: isa-cloud-staging
syncPolicy:
automated:
prune: true
selfHeal: trueHelm Charts
Values File
# deployments/kubernetes/staging/values/auth-service.yaml
replicaCount: 2
image:
repository: harbor.isa.io/isa-cloud/auth-service
tag: "1.0.0"
pullPolicy: Always
service:
type: ClusterIP
port: 8201
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
consul:
enabled: true
serviceName: auth_service
autoscaling:
enabled: true
minReplicas: 2
maxReplicas: 10
targetCPUUtilization: 70Deploy Commands
Deploy Script
# Deploy single service
./deployments/scripts/deploy.sh auth staging
# Deploy all user services
./deployments/scripts/deploy.sh user all staging
# Deploy everything
./deployments/scripts/deploy.sh all stagingManual Helm Deploy
helm upgrade --install auth-service \
deployments/charts/isa-service \
-f deployments/kubernetes/staging/values/auth-service.yaml \
-n isa-cloud-stagingSecrets Management
External Secrets (Production)
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: database-secrets
spec:
secretStoreRef:
name: aws-secrets-manager
kind: SecretStore
target:
name: database-secrets
data:
- secretKey: host
remoteRef:
key: isa-cloud/production/postgres
property: hostRollback
ArgoCD Rollback
argocd app rollback auth-service --revision 5Helm Rollback
helm rollback auth-service 1 -n isa-cloud-stagingkubectl Rollback
kubectl rollout undo deployment/auth-service -n isa-cloud-stagingEditions (Brand-as-Config)
Customer-specific brands are deployed as editions — a Helm values overlay resolved at deploy time, not a forked repository. See isA Editions for the full model and why it replaced the earlier per-customer fork approach.
Next Steps
- CI/CD - GitHub Actions pipelines
- Testing - Contract-driven development
- Operations - Monitoring & scripts
- isA Editions - brand-as-config deployment model