This playbook covers the full lifecycle of chant-produced Config Connector manifests.
| Step | Command | What it catches |
|---|
| Lint source | chant lint src/ | Hardcoded project IDs (WGC001), regions (WGC002), public IAM (WGC003) |
| Build manifests | chant build src/ --output manifests.yaml | Post-synth: missing encryption (WGC101), public IAM (WGC102), missing project annotation (WGC103), 14 more checks |
| Server dry-run | kubectl apply -f manifests.yaml --dry-run=server | K8s API validation: CRD schema errors, admission webhooks |
chant build src/ --output manifests.yaml
kubectl diff -f manifests.yaml
kubectl apply -f manifests.yaml --dry-run=server
kubectl apply -f manifests.yaml
# List all Config Connector resources
# Check specific resource status
kubectl describe storagebuckets.storage.cnrm.cloud.google.com my-bucket
# Watch for status changes
| Status | Meaning | Diagnostic | Fix |
|---|
| UpToDate | Resource in sync | None needed | — |
| Updating | Applying changes | kubectl describe → Events | Wait for completion |
| UpdateFailed | GCP API error | kubectl describe → Events | Check IAM permissions, quota, API enablement |
| DependencyNotReady | Waiting for ref | kubectl get gcp | Ensure referenced resource exists and is UpToDate |
| DeletionFailed | Cannot delete | kubectl describe → Events | Check IAM permissions, child resource dependencies |
| Symptom | Cause | Resolution |
|---|
| Resource stuck in Updating | Missing GCP API | Enable API: add Service resource or gcloud services enable |
| Permission denied | Service account lacks IAM role | Grant role to Config Connector SA |
| Resource recreated on every apply | Missing deletion-policy annotation | Add cnrm.cloud.google.com/deletion-policy: abandon |
| Namespace not found | ConfigConnectorContext missing | Create ConfigConnectorContext in namespace |
| Cross-project reference fails | Missing project annotation | Add cnrm.cloud.google.com/project-id annotation |
| Command | Description |
|---|
chant build src/ | Synthesize manifests |
chant lint src/ | Check for anti-patterns |
kubectl apply -f manifests.yaml | Apply to cluster |
kubectl get gcp -A | List all Config Connector resources |
kubectl describe <resource> | Check reconciliation status |
kubectl delete -f manifests.yaml | Remove resources |