Section 6: Repository Structure and Version Tracking
- Separating the application code repository from the configuration repository
- Monorepo versus several repositories, and the app of apps pattern
- targetRevision: branches, tags, commit SHAs and Helm chart version ranges
- Promoting from dev to prod through pull requests
- Lab: lay out a repository for three environments
Section 7: Lab: Sync Policies and Sync Options
- How automated sync, prune and self-heal differ
- Common sync options such as CreateNamespace, ServerSideApply and PruneLast
- Sync windows to control when deployments are allowed
- Rolling back from history, and why rolling back through Git is better
- Lab: edit a resource directly in the cluster and watch self-heal respond
Section 8: Sync Waves, Hooks and Diffing Customisation
- Sync phases: PreSync, Sync, PostSync and SyncFail
- Sync waves to set the order, such as the database before the app
- Hooks for database migrations and smoke tests
- ignoreDifferences for fields changed by other systems, such as replicas set by an HPA
- Lab: a migration job that runs before a new version is deployed
Section 9: Lab: Projects, RBAC and SSO
- AppProject: restricting source repositories, destinations and resource kinds
- Project roles and tokens for automation
- RBAC in argocd-rbac-cm, and separating developer and operations permissions
- Connecting SSO through OIDC or Dex to the organisation's identity provider
- Lab: create a project that lets a team deploy only to its own namespaces
Section 10: Private Repositories and Credentials
- Connect private Git repositories with HTTPS tokens and SSH keys
- Credential templates for many repositories in the same organisation
- Private Helm repositories and OCI registries
- Storing credentials declaratively as Kubernetes secrets
- Lab: deploy from a private repository with a deploy key