Skip to Content

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

EnvironmentClusterNamespaceBranch
LocalKINDisa-cloud-stagingdevelop
StagingEKSisa-cloud-stagingmain
ProductionEKS/GKEisa-cloud-productionproduction

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 Routes

ArgoCD 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: true

Helm 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: 70

Deploy 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 staging

Manual Helm Deploy

helm upgrade --install auth-service \ deployments/charts/isa-service \ -f deployments/kubernetes/staging/values/auth-service.yaml \ -n isa-cloud-staging

Secrets 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: host

Rollback

ArgoCD Rollback

argocd app rollback auth-service --revision 5

Helm Rollback

helm rollback auth-service 1 -n isa-cloud-staging

kubectl Rollback

kubectl rollout undo deployment/auth-service -n isa-cloud-staging

Editions (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