Skip to main content
The apps layer deploys user-facing services and GitOps tooling. This includes ArgoCD for continuous delivery, Traefik for ingress routing, and application-specific configurations like TLS certificates and Vault policies.

What Gets Deployed

This layer installs:
  • ArgoCD: GitOps continuous delivery platform
  • Traefik: Modern ingress controller and reverse proxy
  • EBS CSI Driver: Amazon EBS storage integration for Kubernetes
  • Application TLS Certificates: Automated certificate provisioning for services
  • Vault Roles & Policies: Application-specific secret access controls
  • External DNS: Automatic DNS record management

Environment Variables

Before deploying, ensure you have configured all required variables:

Required Variables

The Vault token is required for creating policies and roles. Make sure you’ve completed the platform layer initialization before proceeding.

Deployment Steps

1

Navigate to apps directory

2

Set environment variables

3

Initialize Terraform

This initializes the remote backend and downloads provider plugins.
4

Review the plan

Review the resources that will be created:
  • ArgoCD deployment and configuration
  • Traefik Helm release
  • Application TLS certificates
  • Vault policies for applications
  • External DNS configuration
5

Apply the configuration

Type yes when prompted. This process takes approximately 5-10 minutes.

Application Components

ArgoCD

ArgoCD provides GitOps continuous delivery for Kubernetes. Features:
  • Declarative GitOps CD
  • Automated application deployment
  • Health status monitoring
  • Rollback capabilities
  • Multi-cluster management
Configuration:
  • Deployed in argocd namespace
  • Web UI accessible via ingress
  • ApplicationSets for dynamic app discovery
  • GitHub integration for Helm chart repositories
Access:

Traefik

Traefik is a modern HTTP reverse proxy and load balancer. Features:
  • Automatic service discovery
  • Let’s Encrypt integration
  • Middleware support (auth, rate limiting, etc.)
  • Metrics and tracing
  • Dynamic configuration
Configuration:
  • Deployed in traefik namespace
  • IngressRoute CRDs for routing
  • Automatic TLS certificate provisioning
  • Integration with cert-manager

EBS CSI Driver

The Amazon EBS CSI driver enables Kubernetes to manage EBS volumes. Features:
  • Dynamic volume provisioning
  • Volume snapshots
  • Volume expansion
  • EBS volume types support (gp3, gp2, io1, etc.)
Configuration:
  • Deployed in kube-system namespace
  • StorageClasses for different EBS volume types
  • IAM Roles for Service Accounts (IRSA)

Application TLS Certificates

Automated TLS certificates for application services. Certificates provisioned:
  • Wildcard certificate for *.yourdomain.com
  • ArgoCD certificate
  • Vault certificate
  • Traefik dashboard certificate
Configuration:
  • Uses cert-manager with Let’s Encrypt
  • DNS-01 challenge via Cloudflare
  • Automatic renewal before expiration

Vault Policies

Application-specific Vault policies for secret access. Policies created:
  • ArgoCD policy for Git credentials
  • Application policy for app secrets
  • External Secrets Operator policy
Example policy:

Accessing Services

ArgoCD

1

Get admin password

2

Access UI

Connect to Tailscale, then navigate to:
Login with:
  • Username: admin
  • Password: (from step 1)
3

Change default password

In ArgoCD UI:
  1. Click on “User Info” (top right)
  2. Select “Update Password”
  3. Enter current and new password

Traefik Dashboard

Access the Traefik dashboard:
Then navigate to http://localhost:9000/dashboard/.

Verification

Check All Pods

All pods should be in Running state.

Verify ArgoCD

Verify Certificates

Certificates should show Ready status.

Verify Vault Policies

Using the Vault CLI:

ArgoCD ApplicationSets

The deployment includes ApplicationSets that automatically discover and deploy Helm charts from your GitHub repository. Configuration:
  • Monitors specified GitHub repository for Helm charts
  • Automatically creates ArgoCD Applications for each chart
  • Syncs applications to the cluster
Example ApplicationSet:

Troubleshooting

ArgoCD Not Syncing

Check application status:
Common issues:
  • GitHub credentials incorrect
  • Repository not accessible
  • Invalid Helm chart syntax
  • Resource quotas exceeded

Certificate Not Issuing

Check certificate and challenge status:
Common issues:
  • Cloudflare API token permissions
  • DNS propagation delays
  • Let’s Encrypt rate limits

Vault Policy Errors

Verify Vault authentication:
Common issues:
  • Token expired
  • Insufficient permissions
  • Vault address incorrect

Next Steps

With all layers deployed, you can now access and manage your services.

Accessing Services

Learn how to access Vault, ArgoCD, and EKS

Troubleshooting

Common issues and solutions