This directory contains the ArgoCD application configurations for deploying applications to Kubernetes clusters.
argocd/
├── applications/ # Individual application manifests
│ ├── kitty-krew/ # Example of kustomize-based application
│ │ ├── base/ # Base resources
│ │ ├── overlays/ # Environment-specific overlays
│ │ └── kustomization.yaml # Root kustomization
│ └── ...
├── applicationsets/ # ApplicationSet definitions
└── root.yaml # Root application
-
Redis auth secret: The upstream HA manifest expects a
argocd/argocd-redissecret with theauthkey. On a fresh cluster create it before the first sync:openssl rand -base64 32 | tr -d '\n' | \ kubectl -n argocd create secret generic argocd-redis --from-literal=auth="$(cat)"
Prefer a managed source (SealedSecret, ExternalSecret, etc.) for long-term storage; the imperative command above is a one-time bootstrap.
Applications in the applications/ directory are automatically discovered and deployed by the ApplicationSet defined in applicationsets/lovely-apps.yaml. This removes the need for creating individual Application resources.
To install MetalLB and watch it become ready:
kubectl apply -k argocd/applications/metallb-system
kubectl -n metallb-system rollout status deploy/controller --timeout=180s
kubectl -n metallb-system rollout status ds/speaker --timeout=300sThe kitty-krew application demonstrates a reusable pattern using Kustomize for managing multi-environment deployments:
The base/ directory contains the foundational resources:
deployment.yaml- Base deployment configurationservice.yaml- Service definitionconfigmap.yaml- Common configuration valueskustomization.yaml- Lists all resources and common labels
The overlays/ directory contains environment-specific configurations:
dev/- Development environmentprod/- Production environment
Each overlay:
- References the base resources
- Applies environment-specific patches
- Sets appropriate image tags
- Configures environment-specific values
The root kustomization.yaml references the dev overlay by default:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- overlays/dev # Default to dev overlayTo create a new application using this pattern:
- Copy the
kitty-krewdirectory structure to a new directory with your application name - Update resource names, labels, and selectors
- Modify environment-specific configurations in the overlays
- The ApplicationSet will automatically discover and deploy the new application
To switch from dev to production:
# In your-app/kustomization.yaml
resources:
- overlays/prod # Switch to prod overlay- Keep base configurations minimal and reusable
- Use overlays for environment-specific configurations
- Use strategic patches to only specify changing values
- Define resource limits appropriately for each environment
- Keep root kustomization.yaml pointing to dev by default
- Use ConfigMaps for application configuration
- Follow naming conventions consistently
To debug application deployment:
# Preview what will be deployed (dev)
kubectl kustomize argocd/applications/kitty-krew
# Preview production overlay
kubectl kustomize argocd/applications/kitty-krew/overlays/prod- Install 1Password CLI (macOS)
brew install 1password-cli
op --version
# Sign in (interactive) so `op read` works in your shell
op signin-
Registry access
The Tailscale registry at
registry.ide-newton.ts.netallows anonymous pulls, so nodocker-registrysecrets are required inargocdor workload namespaces. Prune any legacyregistryorkalmyk-registrysecrets before syncing.