Skip to main content

Configuration Overview

Headwind is configured through Kubernetes annotations on your workload resources. This allows you to configure update behavior per-resource without modifying the operator itself.

Supported Resources

Headwind supports the following Kubernetes resources:

  • Deployments - Standard stateless applications
  • StatefulSets - Stateful applications with persistent storage
  • DaemonSets - Per-node applications (logging, monitoring, etc.)
  • HelmReleases - Flux CD Helm chart deployments

Common Annotations

All resource types support the same set of annotations:

AnnotationTypeDefaultDescription
headwind.sh/policystringnoneUpdate policy: none, patch, minor, major, all, glob, force
headwind.sh/patternstring-Glob pattern (required for glob policy)
headwind.sh/require-approvalbooleantrueWhether updates require manual approval
headwind.sh/min-update-intervalinteger300Minimum seconds between updates
headwind.sh/imagesstring-Comma-separated list of images to track (empty = all)
headwind.sh/event-sourcestringwebhookEvent source: webhook, polling, both, or none
headwind.sh/polling-intervalinteger-Per-resource polling interval (seconds), overrides global setting
headwind.sh/auto-rollbackbooleanfalseEnable automatic rollback on failures
headwind.sh/rollback-timeoutinteger300Health check monitoring duration (seconds)
headwind.sh/health-check-retriesinteger3Failed health checks before rollback

Managed Annotations

These annotations are managed by Headwind and should not be modified manually:

AnnotationDescription
headwind.sh/last-updateRFC3339 timestamp of last update
headwind.sh/update-historyJSON array of previous updates (last 10)

Basic Example

apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
annotations:
# Update to minor versions automatically
headwind.sh/policy: "minor"

# Require approval before applying
headwind.sh/require-approval: "true"

# Wait at least 10 minutes between updates
headwind.sh/min-update-interval: "600"

# Enable automatic rollback on failures
headwind.sh/auto-rollback: "true"
spec:
# ... rest of deployment spec

Environment Variables

Configure the Headwind operator itself using environment variables in the deployment:

Webhook Configuration

VariableDefaultDescription
HEADWIND_WEBHOOK_PORT8080Webhook server port

Polling Configuration

VariableDefaultDescription
HEADWIND_POLLING_ENABLEDfalseEnable registry polling
HEADWIND_POLLING_INTERVAL300Poll interval in seconds

Helm Configuration

VariableDefaultDescription
HEADWIND_HELM_AUTO_DISCOVERYtrueEnable automatic Helm chart version discovery

Notification Configuration

VariableDefaultDescription
SLACK_ENABLEDfalseEnable Slack notifications
SLACK_WEBHOOK_URL-Slack incoming webhook URL
SLACK_CHANNEL-Override webhook default channel
TEAMS_ENABLEDfalseEnable Microsoft Teams notifications
TEAMS_WEBHOOK_URL-Teams incoming webhook URL
WEBHOOK_ENABLEDfalseEnable generic webhook notifications
WEBHOOK_URL-Generic webhook endpoint URL

See the specific configuration guides for each resource type and feature: