Task Usage Guidelines
This document gives an overview of the tasks defined in the Taskfile.yml.
Available Tasks
task init # Initialize and validate configurationtask install # Full installation (creates Kind cluster and deploys)task apply # Apply configuration to existing Kind clustertask sync # Deploy/update components (equivalent to helmfile sync)task diff # Show pending changestask uninstall # Remove all components and clean up# Utility tasks:task get:urls # Get service URLs from AKS clustertask config:lint # Validate configuration files# Kind cluster management:task kind:create # Create local Kind clustertask kind:delete # Delete local Kind cluster# Kubeconfig management:task kubeconfig:set-context:aks # Set kubectl context to AKS clustertask kubeconfig:set-context:kind # Set kubectl context to Kind cluster# Helmfile operations:task helmfile:init # Initialize Helmfiletask helmfile:lint # Validate Helmfile configurationtask helmfile:diff # Show Helmfile differencestask helmfile:apply # Apply Helmfile configurationtask helmfile:sync # Sync Helmfile releasestask helmfile:destroy # Destroy Helmfile releases
Note: Tasks may update the
config.yamlfile during execution
Installation Flow
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
Production vs Bootstrap Tasks
Bootstrap Tasks (use local Kind cluster):
task install # Full installation using Kind clustertask apply # Apply to existing Kind clustertask sync # Update components via Helmfiletask diff # Show pending changestask uninstall # Clean removal of all resources
Utility Tasks (interact with AKS cluster):
task get:urls # Get service URLs from target AKS clustertask kubeconfig:set-context:aks # Switch to AKS cluster context
Configuration Tasks:
task init # Initialize and validate all configurationtask config:lint # Validate config.yaml and azure-credentials.json
task install vs task apply vs task sync
task 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.
Configuration Requirements
The installation requires two configuration files:
config.yaml- Main configuration (copy fromconfig.yaml.template)private/azure-credentials.json- Azure service principal credentials (copy fromprivate/azure-credentials.template.json)
Both files are validated automatically during task init and task config:lint.
Monitoring Installation Progress
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 passwordkubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
Context Switching
The Taskfile manages kubectl contexts automatically:
# Switch to Kind cluster context (for monitoring bootstrap)task kubeconfig:set-context:kind# Switch to AKS cluster context (for accessing final services)task kubeconfig:set-context:aks# Get service URLs from AKS clustertask get:urls
Helmfile Integration
Direct Helmfile operations are available:
# View configuration differencestask helmfile:diff# Apply changestask helmfile:apply# Sync all releasestask helmfile:sync# Check release statustask helmfile:status
Task Usage Examples
# Complete fresh installationtask inittask install# View what would change before applyingtask diff# Apply updates to existing installationtask sync# Get final service URLs from AKS clustertask get:urls# Clean up everythingtask uninstall
Environment Variables
The Taskfile sets these environment variables:
KUBECONFIG- Points toprivate/kubeconfigfor isolationREPO_ROOT- Points to repository root directory
Validation
Configuration validation happens automatically during:
task inittask config:lint- Any task that depends on
config:lint
Validation includes:
config.yamlschema validationprivate/azure-credentials.jsonformat validation- Required CLI tools availability check
Bootstrap Architecture
The installation follows this flow:
- Local Kind Cluster - Bootstrap environment with ArgoCD and Crossplane
- Azure Resource Creation - Crossplane creates Key Vault and Workload Identity
- AKS Deployment - ArgoCD deploys CNOE components to target AKS cluster
- Cleanup - Kind cluster can be removed after installation completes
This approach provides better isolation and observability during the installation process.