This document gives an overview of the tasks defined in the Taskfile.yml.
task init # Initialize and validate configuration
task install # Full installation (creates Kind cluster and deploys)
task apply # Apply configuration to existing Kind cluster
task sync # Deploy/update components (equivalent to helmfile sync)
task diff # Show pending changes
task uninstall # Remove all components and clean up
# Utility tasks:
task get:urls # Get service URLs from AKS cluster
task config:lint # Validate configuration files
# Kind cluster management:
task kind:create # Create local Kind cluster
task kind:delete # Delete local Kind cluster
# Kubeconfig management:
task kubeconfig:set-context:gke # Set kubectl context to GKE cluster
task kubeconfig:set-context:kind # Set kubectl context to Kind cluster
# Helmfile operations:
task helmfile:init # Initialize Helmfile
task helmfile:lint # Validate Helmfile configuration
task helmfile:diff # Show Helmfile differences
task helmfile:apply # Apply Helmfile configuration
task helmfile:sync # Sync Helmfile releases
task helmfile:destroy # Destroy Helmfile releasesNote: Tasks may update the
config.yamlfile during execution
The installation process uses a local Kind cluster as a bootstrap environment:
task init- Validates configuration and initializes Helmfiletask install- Creates Kind cluster and applies configuration- Monitor - Use local URLs (
argocd.local.<domain>,crossplane.local.<domain>) to observe installation progress - Access - Once complete, use
task get:urlsto get AKS cluster service URLs
Bootstrap Tasks (use local Kind cluster):
task install # Full installation using Kind cluster
task apply # Apply to existing Kind cluster
task sync # Update components via Helmfile
task diff # Show pending changes
task uninstall # Clean removal of all resourcesUtility Tasks (interact with GKE cluster):
task get:urls # Get service URLs from target GKE cluster
task kubeconfig:set-context:gke # Switch to GKE cluster contextConfiguration Tasks:
task init # Initialize and validate all configuration
task config:lint # Validate config.yaml and azure-credentials.jsontask install- Complete installation including Kind cluster creation and full deploymenttask apply- Apply configuration to existing Kind cluster (skips cluster creation)task sync- Updates existing installation (equivalent tohelmfile sync)
Use task sync for updates after the initial installation, not task install.
The installation requires configuration files:
config.yaml- Main configuration (copy fromconfig.template.yaml)- GCP service account credentials - Set up via gcloud CLI or service account key file
Configuration is validated automatically during task init and task config:lint.
During installation, monitor progress using local Kind cluster services:
# Access local ArgoCD dashboard
# Navigate to: http://argocd.local.<your-domain>
# Access local Crossplane dashboard
# Navigate to: http://crossplane.local.<your-domain>
# Get local ArgoCD admin password
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -dThe Taskfile manages kubectl contexts automatically:
# Switch to Kind cluster context (for monitoring bootstrap)
task kubeconfig:set-context:kind
# Switch to GKE cluster context (for accessing final services)
task kubeconfig:set-context:gke
# Get service URLs from GKE cluster
task get:urlsDirect Helmfile operations are available:
# View configuration differences
task helmfile:diff
# Apply changes
task helmfile:apply
# Sync all releases
task helmfile:sync
# Check release status
task helmfile:status# Complete fresh installation
task init
task install
# View what would change before applying
task diff
# Apply updates to existing installation
task sync
# Get final service URLs from AKS cluster
task get:urls
# Clean up everything
task uninstallThe Taskfile sets these environment variables:
KUBECONFIG- Points toprivate/kubeconfigfor isolationREPO_ROOT- Points to repository root directory
Configuration validation happens automatically during:
task inittask config:lint- Any task that depends on
config:lint
Validation includes:
config.yamlschema validation- GCP credentials validation
- Required CLI tools availability check
The installation follows this flow:
- Local Kind Cluster - Bootstrap environment with ArgoCD and Crossplane
- GCP Resource Management - Crossplane manages Secret Manager and Workload Identity
- GKE Deployment - ArgoCD deploys CNOE components to target GKE cluster
- Cleanup - Kind cluster can be removed after installation completes
This approach provides better isolation and observability during the installation process.