Helm configuration reference

This reference is for the platform values.yaml you apply with Helm: chart-level settings (global, tags, nginx, prometheus, and other subcharts) and the APC API application block astronomer.houston.config, including deployments.* defaults used with Config governance (platform defaults in this file, then optional cluster, workspace, and deployment overrides). Tabular sections use the same path prefix you use in your install values.

Values file structure

The APC Helm chart uses a hierarchical structure:

1global: # Platform-wide settings
2 baseDomain: "" # Required: your base domain
3 plane:
4 mode: "" # unified, control, or data
5 # ... more global settings
6
7tags: # Enable/disable component groups
8
9 monitoring: true
10 logging: true
11
12astronomer: # Platform component settings
13 houston: {}
14 commander: {}
15 registry: {}
16 astroUI: {}
17
18nginx: {} # Ingress configuration
19prometheus: {} # Metrics collection
20elasticsearch: {} # Log storage
21grafana: {} # Dashboards
22# ... more component sections

Required configuration

Configure the following required values:

1global:
2 baseDomain: "example.com" # Your platform domain
3 tlsSecret: "astronomer-tls" # TLS certificate secret name

Helm chart parameter tables

Selected defaults from the APC umbrella chart (values.yaml). Parameter paths are relative to the root of your install values file.

Tags

ParameterTypeDescriptionDefaultAllowed values
tags.platformbooleanEnable core platform chart groups (ingress, Astronomer stack).truetrue, false
tags.monitoringbooleanEnable Prometheus, kube-state-metrics, Grafana stack.truetrue, false
tags.loggingbooleanEnable Elasticsearch and logging collectors.truetrue, false

Global settings

ParameterTypeDescriptionDefaultAllowed values
global.baseDomainstringDNS zone for platform hosts (app, houston, ingress).~Domain name
global.tlsSecretstringTLS Secret used by ingress.astronomer-tlsKubernetes Secret name
global.privateCaCertsarrayExtra CA Secrets for private PKI.[]Secret names
global.plane.modestringControl plane / data plane / unified topology."unified"unified, control, data
global.plane.domainPrefixstringPrefix for split-plane routing when used.""String
global.networkPolicy.enabledbooleanInstall NetworkPolicies for platform namespaces.truetrue, false
global.defaultDenyNetworkPolicybooleanDefault-deny ingress NetworkPolicy baseline.truetrue, false
global.networkNSLabels.enabledbooleanEnable namespace labels for network policies.falsetrue, false
global.rbac.enabledbooleanManage Kubernetes RBAC objects for the platform.truetrue, false
global.clusterRolesbooleanUse ClusterRole bindings where required.truetrue, false
global.nats.enabledbooleanDeploy NATS for the APC API messaging.truetrue, false
global.nats.replicasintegerNATS replicas.3Positive integer
global.airflowOperator.enabledbooleanEnable Airflow Kubernetes operator integration path.falsetrue, false
global.dataPlaneFailover.enabledbooleanMaster switch for data-plane failover features when components are installed.falsetrue, false

Astronomer platform images

ParameterTypeDescriptionDefaultAllowed values
astronomer.images.commander.repositorystringDeployment orchestrator image repository.quay.io/astronomer/ap-commanderOCI repository
astronomer.images.commander.tagstringDeployment orchestrator image tag.2.0.14Tag string
astronomer.images.houston.repositorystringAPC API image repository.quay.io/astronomer/ap-houston-apiOCI repository
astronomer.images.houston.tagstringAPC API image tag.2.0.18Tag string
astronomer.images.astroUI.repositorystringAstro UI image repository.quay.io/astronomer/ap-astro-uiOCI repository
astronomer.images.astroUI.tagstringAstro UI tag.2.0.7Tag string
astronomer.images.registry.repositorystringInternal registry image repository.quay.io/astronomer/ap-registryOCI repository
astronomer.images.registry.tagstringInternal registry tag.3.0.0-9Tag string

Astronomer workload defaults

Resource defaults for core platform Deployments often ship in the umbrella chart—override requests / limits per component:

ParameterTypeDescriptionDefaultAllowed values
astronomer.astroUI.resourcesobjectAstro UI CPU/memory requests and limits.requests 100m/256Mi, limits 500m/1024MiKubernetes resources
astronomer.houston.resourcesobjectAPC API CPU/memory.requests 500m/1024Mi, limits 1000m/2048MiKubernetes resources
astronomer.houston.strictSchemaCheck.enabledbooleanChart-level toggle aligned with the APC API; keep consistent with astronomer.houston.config.strictSchemaCheck.enabled below.truetrue, false
astronomer.commander.resourcesobjectDeployment orchestrator CPU/memory.requests 250m/1Gi, limits 500m/2GiKubernetes resources
astronomer.registry.persistence.enabledbooleanPersist registry storage.truetrue, false
astronomer.registry.persistence.sizestringRegistry PVC size."100Gi"Quantity string
astronomer.install.resourcesobjectHelm install job resources.requests 100m/256Mi, limits 500m/1024MiKubernetes resources

For nginx, Prometheus, Elasticsearch, Grafana, NATS workload tables, follow the same pattern in your values.yaml; defaults ship alongside those keys in the umbrella chart.

APC API configuration

Set these keys under astronomer.houston.config in your platform values.yaml. Published defaults mirror the APC API config/default.yaml. The subtree deployments.* participates in layered overrides (platform → cluster → workspace → deployment); see Config governance. Override APIs may use the string DELETE_KEY at mergeable leaves where the schema allows (see Config governance).

Outside the deployments subtree

These keys configure the APC API, workers, auth, UI metadata, and integrations. They are not subject to the four deployment override tiers unless documented elsewhere.

ParameterTypeDescriptionDefaultAllowed values
astronomer.houston.config.strictSchemaCheck.enabledbooleanWhen true, unknown keys or invalid types under deployments overrides are rejected (runtime enforcement aligns with this setting).truetrue, false
astronomer.houston.config.webserver.portintegerHTTP listen port for the APC API inside the pod.8871Positive integer
astronomer.houston.config.webserver.endpointstringREST API base path."/v1"String
astronomer.houston.config.webserver.graphqlPlayground.enabledbooleanExpose GraphQL playground endpoint.truetrue, false
astronomer.houston.config.logging.levelstringAPC API log level."info"Typical log levels (error, warn, info, debug, …)
astronomer.houston.config.platformReleasesFilestringPlatform releases manifest filename.'astronomer_platform_releases.json'Filename string
astronomer.houston.config.publicSignups.enabledbooleanAllow public user registration.falsetrue, false
astronomer.houston.config.emailConfirmation.enabledbooleanRequire email confirmation for new accounts.truetrue, false
astronomer.houston.config.email.enabledbooleanEnable outbound email.falsetrue, false
astronomer.houston.config.email.replystringDefault From / reply address."noreply@astronomer.io"Email string
astronomer.houston.config.email.smtpUrlstringSMTP connection URL.~ (null)SMTP URL or null
astronomer.houston.config.prometheus.enabledbooleanQuery Prometheus for metrics in the APC API features that support it.falsetrue, false
astronomer.houston.config.prometheus.hoststringPrometheus hostname.localhostHostname
astronomer.houston.config.prometheus.portintegerPrometheus port.9090Port number
astronomer.houston.config.plane.modestringLogical plane mode for the APC API runtime behavior.unifiedunified, control, data (also set chart-wide using global.plane.mode)
astronomer.houston.config.auth.openidConnect.flowstringOIDC OAuth flow."implicit""code", "implicit"
astronomer.houston.config.jwt.authDurationintegerSession length bound (ms), coordinated with IdP token lifetimes.86400000Positive integer
astronomer.houston.config.airgapped.enabledbooleanAir-gapped installation behaviors.falsetrue, false
astronomer.houston.config.updateAirflowCheck.enabledbooleanEnable checks related to Airflow version updates.truetrue, false
astronomer.houston.config.updateRuntimeCheck.enabledbooleanEnable Astro Runtime update checks.truetrue, false
astronomer.houston.config.sslVerification.enabledbooleanVerify TLS for outbound connections (replaces legacy inverted disableSSLVerify).truetrue, false
astronomer.houston.config.autoCompleteForSensitiveFields.enabledbooleanAllow autocomplete on sensitive fields in UI.truetrue, false
astronomer.houston.config.logUsername.enabledbooleanInclude usernames in logs when enabled.falsetrue, false
astronomer.houston.config.maxDockerJwtExtraDeploymentsintegerUpper bound for JWT-scoped docker operations across extra deployments.50Non-negative integer

For keys not listed here (full auth providers, workers.*, prisma, nats, Helm runtime templating helm.*), refer to config/default.yaml and Configuration Flag Migration (2.x) in the APC API repository.


The APC API deployment defaults

The following tables list defaults under astronomer.houston.config.deployments.*. Keys in this subtree participate in the platform → cluster → workspace → deployment override chain described in Config governance.

Operational and platform defaults

ParameterTypeDescriptionDefaultAllowed values
astronomer.houston.config.deployments.chart.versionstringDefault Airflow chart version for new deployments; also used for upgrade coordination.0.0.0Chart version string
astronomer.houston.config.deployments.releaseVerificationstringWhich image classes may be deployed (STABLE only official runtime releases; EDGE adds edge images; DEV adds dev builds).STABLESTABLE, EDGE, DEV; override layers may use DELETE_KEY where schema allows
astronomer.houston.config.deployments.subdomainstringSubdomain segment used for deployment hostnames.'deployments'DNS label–safe string
astronomer.houston.config.deployments.performanceOptimization.enabledbooleanFeature gate for performance optimization mode.falsetrue, false
astronomer.houston.config.deployments.upsertDeployment.extraIniAllowedbooleanAllow pgbouncer extra INI fields via upsert API.truetrue, false
astronomer.houston.config.deployments.upsertDeployment.allowFromUi.enabledbooleanAllow creating/updating deployments from the UI.truetrue, false
astronomer.houston.config.deployments.logHelmValues.enabledbooleanLog generated Helm values (debug; noisy).falsetrue, false
astronomer.houston.config.deployments.tagPrefixstringPrefix for deployment tags on images."deploy"String
astronomer.houston.config.deployments.fluentdIndexPrefixstringFluentd index prefix."fluentd"String

Runtime management

ParameterTypeDescriptionDefaultAllowed values
astronomer.houston.config.deployments.runtimeManagement.airflowV3.enabledbooleanEnable Airflow 3–related runtime behaviors where supported.falsetrue, false
astronomer.houston.config.deployments.runtimeManagement.airflowV3.minimumAstroRuntimeVersionstringMinimum Astro Runtime version when Airflow 3 is in play."3.1-2"Runtime version string
astronomer.houston.config.deployments.runtimeManagement.customImageSha.enabledbooleanAllow deployment create/update using image SHA selection flows.falsetrue, false
astronomer.houston.config.deployments.runtimeManagement.listAllRuntimeVersions.enabledbooleanExpose full runtime version list where applicable.falsetrue, false
astronomer.houston.config.deployments.runtimeManagement.runtimeEnvOverrideSemverCheckstringSemver constraint for runtime environment overrides.See default.yamlSemver range string
astronomer.houston.config.deployments.runtimeManagement.astroRuntimeReleasesFilestringAstro Runtime releases manifest file.'astro_runtime_releases.json'Filename
astronomer.houston.config.deployments.runtimeManagement.airflowMinimumAstroRuntimeVersionstringMinimum Astro Runtime for Airflow 2 paths.2.2.5Version string

Logging

Vector sidecar and optional Elasticsearch client settings for deployment workloads.

ParameterTypeDescriptionDefaultAllowed values
astronomer.houston.config.deployments.logging.loggingSidecar.enabledbooleanEnable Vector sidecar for deployment logs.falsetrue, false
astronomer.houston.config.deployments.logging.loggingSidecar.namestringSidecar container name.sidecar-log-consumerString
astronomer.houston.config.deployments.logging.loggingSidecar.imagestringVector image reference.quay.io/astronomer/ap-vector:0.47.0-5Image reference
astronomer.houston.config.deployments.logging.loggingSidecar.customConfigbooleanUse custom Vector config.falsetrue, false
astronomer.houston.config.deployments.logging.elasticsearch.enabledbooleanEnable Elasticsearch logging integration for this domain.falsetrue, false

Logging blocklists for workspace/deployment overrides are described in Config governance.

Dag deploy

Defaults for Dag-only deployment when that mechanism is enabled under deployMechanisms.

ParameterTypeDescriptionDefaultAllowed values
astronomer.houston.config.deployments.dagDeploy.enabledbooleanMaster enable for Dag-deploy server/client paths in defaults.falsetrue, false
astronomer.houston.config.deployments.dagDeploy.images.dagServer.repositorystringDag server image repository.quay.io/astronomer/ap-dag-deployRepository URL
astronomer.houston.config.deployments.dagDeploy.images.dagServer.tagstringDag server image tag.0.7.2Tag string
astronomer.houston.config.deployments.dagDeploy.serviceAccount.createbooleanCreate service account for Dag deploy components.truetrue, false

Deploy mechanisms

Feature gates for Dag deploy, NFS, git-sync, and git-sync relay defaults.

ParameterTypeDescriptionDefaultAllowed values
astronomer.houston.config.deployments.deployMechanisms.configureDagDeployment.enabledbooleanAllow configuring Dag deployment mechanisms.falsetrue, false
astronomer.houston.config.deployments.deployMechanisms.dagOnlyDeployment.enabledbooleanDag-only deployment mechanism.falsetrue, false
astronomer.houston.config.deployments.deployMechanisms.nfsMountDagDeployment.enabledbooleanNFS-mounted Dag bundles.falsetrue, false
astronomer.houston.config.deployments.deployMechanisms.gitSyncDagDeployment.enabledbooleanGit-sync–based Dag deployment.falsetrue, false
astronomer.houston.config.deployments.deployMechanisms.gitSyncRelay.storageClassNamestringStorage class for relay PVCs.~Storage class name or null
astronomer.houston.config.deployments.deployMechanisms.gitSyncRelay.webhookSecretKey.showForMinutesintegerHow long relay webhook secrets are shown in responses.1Non-negative integer

Airflow components

ParameterTypeDescriptionDefaultAllowed values
astronomer.houston.config.deployments.airflowComponents.triggerer.enabledbooleanDeploy Airflow triggerer.truetrue, false
astronomer.houston.config.deployments.airflowComponents.dagProcessor.enabledbooleanDeploy Airflow Dag processor.truetrue, false

Auth sidecar

Auth sidecar for routing/auth integration (often cluster-scoped).

ParameterTypeDescriptionDefaultAllowed values
astronomer.houston.config.deployments.authSideCar.enabledbooleanDeploy auth sidecar template with deployments.falsetrue, false
astronomer.houston.config.deployments.authSideCar.repositorystringContainer image repository.quay.io/astronomer/ap-auth-sidecarImage repository
astronomer.houston.config.deployments.authSideCar.tagstringImage tag.1.29.2Tag string
astronomer.houston.config.deployments.authSideCar.portintegerListen port.8084Port

Resource management

Cluster sizing, executor availability, Astro Units, and capacity ceilings.

ParameterTypeDescriptionDefaultAllowed values
astronomer.houston.config.deployments.resourceManagement.resourceQuotas.enabledbooleanManage Kubernetes ResourceQuota / LimitRange objects for namespaces.truetrue, false
astronomer.houston.config.deployments.resourceManagement.componentsarrayComponent resource profiles (scheduler, workers, …).[]Array of component specs; see default.yaml
astronomer.houston.config.deployments.resourceManagement.executorsarraySupported executors and required components per executor.Local, Celery, K8s entriesFixed structure in default.yaml
astronomer.houston.config.deployments.resourceManagement.astroUnit.cpuintegerMillicores per Astro Unit.100Positive integer
astronomer.houston.config.deployments.resourceManagement.astroUnit.memoryintegerMiB per Astro Unit.384Positive integer
astronomer.houston.config.deployments.resourceManagement.maxExtraCapacity.cpuintegerMax extra CPU (millicores) schedulable above base.40000Integer
astronomer.houston.config.deployments.resourceManagement.maxExtraCapacity.memoryintegerMax extra memory (MiB).153600Integer
astronomer.houston.config.deployments.resourceManagement.maxPodCapacity.cpuintegerMax CPU per pod (millicores).3500Integer
astronomer.houston.config.deployments.resourceManagement.maxPodCapacity.memoryintegerMax memory per pod (MiB).13440Integer
astronomer.houston.config.deployments.resourceManagement.overProvisioningFactorMemnumberMemory over-provisioning factor.1Number ≥ 1
astronomer.houston.config.deployments.resourceManagement.overProvisioningFactorCPUnumberCPU over-provisioning factor.1Number ≥ 1

Namespace management

ParameterTypeDescriptionDefaultAllowed values
astronomer.houston.config.deployments.namespaceManagement.manualReleaseNames.enabledbooleanAllow operators to set Helm release names manually.falsetrue, false
astronomer.houston.config.deployments.namespaceManagement.manualNamespaceNames.enabledbooleanManual Kubernetes namespace names for deployments.falsetrue, false
astronomer.houston.config.deployments.namespaceManagement.namespaceFreeFormEntry.enabledbooleanFree-form namespace entry flows.falsetrue, false
astronomer.houston.config.deployments.namespaceManagement.namespaceLabelsobjectLabels applied to deployment namespaces.{}String map
astronomer.houston.config.deployments.namespaceManagement.preCreatedNamespacesarrayPre-created namespace names for routing.[]Array of {name} objects

namespaceManagement is blocklisted for deployment-level overrides (immutable after create); see Config governance.

Deployment lifecycle

ParameterTypeDescriptionDefaultAllowed values
astronomer.houston.config.deployments.deploymentLifecycle.deployRollback.enabledbooleanAllow rollback of code deploys / revisions.falsetrue, false
astronomer.houston.config.deployments.deploymentLifecycle.deployRollback.deployRevisionReportNumberOfDaysintegerWindow for deploy revision reporting (days).90Positive integer
astronomer.houston.config.deployments.deploymentLifecycle.deployRollback.dagTarballVersionValidation.enabledbooleanValidate Dag tarball versions on rollback paths.truetrue, false
astronomer.houston.config.deployments.deploymentLifecycle.hardDeleteDeployment.enabledbooleanAllow hard delete of deployments (destructive).falsetrue, false
astronomer.houston.config.deployments.deploymentLifecycle.cleanupAirflowDb.enabledbooleanEnable cleanup jobs for Airflow metadata DB.falsetrue, false

Database management

ParameterTypeDescriptionDefaultAllowed values
astronomer.houston.config.deployments.databaseManagement.database.enabledbooleanProvision per-deployment Airflow databases when enabled.truetrue, false
astronomer.houston.config.deployments.databaseManagement.database.retainOnDeletebooleanKeep DB objects after deployment deletion.falsetrue, false
astronomer.houston.config.deployments.databaseManagement.database.allowRootAccessbooleanAllow root-level DB access patterns documented in the APC API.falsetrue, false
astronomer.houston.config.deployments.databaseManagement.manualConnectionStrings.enabledbooleanAllow manual connection string configuration.falsetrue, false
astronomer.houston.config.deployments.databaseManagement.pgBouncerResourceCalculationStrategystringStrategy key for PgBouncer sizing (null uses built-in algorithm).~Strategy name or null

Image registry

ParameterTypeDescriptionDefaultAllowed values
astronomer.houston.config.deployments.deploymentImagesRegistry.exposeDockerWebhookEndpoint.enabledbooleanExpose webhook endpoint for image push flows.truetrue, false
astronomer.houston.config.deployments.deploymentImagesRegistry.updateDeploymentImageEndpoint.enabledbooleanAllow API to update deployment images directly.falsetrue, false
astronomer.houston.config.deployments.deploymentImagesRegistry.updateDeploymentImageEndpointDockerValidation.enabledbooleanValidate docker payloads on image update endpoint.falsetrue, false
astronomer.houston.config.deployments.deploymentImagesRegistry.serviceAccountAnnotationKeystringCloud IAM annotation key on workload identity (eks.amazonaws.com/role-arn, iam.gke.io/gcp-service-account, …).~Annotation key or null

Metrics reporting

ParameterTypeDescriptionDefaultAllowed values
astronomer.houston.config.deployments.metricsReporting.grafana.enabledbooleanSurface Grafana links / metrics UI integration points.truetrue, false
astronomer.houston.config.deployments.metricsReporting.taskUsageMetrics.enabledbooleanEnable task usage metrics reporting features.falsetrue, false
astronomer.houston.config.deployments.metricsReporting.taskUsageMetrics.reportNumberOfDaysintegerReporting horizon for task usage (days).90Positive integer

Pagination maxTake limits under metricsReporting.pagination.* follow defaults in config/default.yaml (typically 101 per collection).

Orchestration mode

Deployment orchestration mode (Helm vs operator).

ParameterTypeDescriptionDefaultAllowed values
astronomer.houston.config.deployments.mode.helm.enabledbooleanUse Helm-based deployment reconciler.truetrue, false
astronomer.houston.config.deployments.mode.operator.enabledbooleanUse Kubernetes operator–based deployment path when supported.falsetrue, false

Operator probes and detailed probe specs are defined under deployments.mode.operator in default.yaml.

Deployments Helm defaults

The deployments.helm subtree supplies defaults merged into Airflow Helm chart values for each deployment (scheduler resources, PgBouncer sidecars, ingress, runtime images, Elasticsearch hooks, etc.). It is large and nested; defaults are authoritative in config/default.yaml under deployments.helm. For merge and validation rules at override layers, rely on deployments-config-override.schema.json and Config governance.

Mock webhook (test only)

Test-only mock webhook settings for development scenarios.

ParameterTypeDescriptionDefaultAllowed values
astronomer.houston.config.deployments.mockWebhook.enabledbooleanEnable mock webhook server wiring.falsetrue, false
astronomer.houston.config.deployments.mockWebhook.krb.enabledbooleanKerberos realm defaults for mock.truetrue, false
astronomer.houston.config.deployments.mockWebhook.shouldCreateDbbooleanAuto-create backing DB objects in mock mode.truetrue, false

Global configuration

Base domain and TLS

1global:
2 # Required: Base domain for all platform endpoints
3 # Results in: app.example.com, houston.example.com, etc.
4 baseDomain: "example.com"
5
6 # Name of Kubernetes secret containing TLS certificate
7 tlsSecret: "astronomer-tls"
8
9 # List of secrets containing private CA certificates
10 privateCaCerts: []

Plane mode (control, data, unified)

Astro Private Cloud 2.0 supports split control plane and data plane deployments:

1global:
2 plane:
3 # Options: unified (default), control, data
4 mode: "unified"
5
6 # Domain prefix for this plane (used in split deployments)
7 domainPrefix: ""
ModeDescription
unifiedControl and data plane in same cluster (default, like 0.x)
controlControl plane only - manages Deployments
dataData plane only - runs Airflow workloads

Network policies

1global:
2 # Enable platform-level network policies
3 networkPolicy:
4 enabled: true
5
6 # Apply default deny ingress policy
7 defaultDenyNetworkPolicy: true
8
9 # Enable namespace labels for network policies
10 networkNSLabels:
11 enabled: false

RBAC and cluster roles

1global:
2 # Enable Kubernetes RBAC
3 rbac:
4 enabled: true
5
6 # Use cluster-wide roles (required for some features)
7 clusterRoles: true
8
9 # Management of cluster-scoped resources (RBAC objects, etc.)
10 manageClusterScopedResources:
11 enabled: true

Node selection

Separate platform Pods from Airflow Pods:

1global:
2 platformNodePool:
3 nodeSelector:
4 node-role: platform
5 affinity: {}
6 tolerations:
7 - key: "platform"
8 operator: "Equal"
9 value: "true"
10 effect: "NoSchedule"

Private registry

Use a private container registry:

1global:
2 privateRegistry:
3 enabled: true
4 repository: "registry.example.com/astronomer"
5 secretName: "registry-credentials"

Namespace pools

Pre-provision namespaces for Airflow Deployments:

1global:
2 features:
3 namespacePools:
4 enabled: true
5 createRbac: true
6 namespaces:
7 create: false # Set true to auto-create
8 names:
9 - airflow-prod
10 - airflow-staging
11 - airflow-dev

Storage class

Specify a storage class for all persistent volumes:

1global:
2 storageClass: "gp3"

OpenShift support

1global:
2 openshiftEnabled: true
3 sccEnabled: true # Security context constraints

Astronomer platform components

APC API

The APC API is the core internal API that powers the platform:

1astronomer:
2 houston:
3 replicas: 2
4
5 resources:
6 requests:
7 cpu: "500m"
8 memory: "1024Mi"
9 limits:
10 cpu: "1000m"
11 memory: "2048Mi"
12
13 # Database connection
14 backendSecretName: "houston-backend-secret"
15 # Or specify directly:
16 backendConnection:
17 user: houston
18 pass: "password"
19 host: postgres.example.com
20 port: 5432
21 db: houston
22
23 # Airflow database connection template
24 airflowBackendSecretName: "airflow-backend-secret"
25
26 # Houston configuration (see houston.config section below)
27 config: {}
28
29 # Environment variables common to all houston containers
30 env:
31 - name: LOG_LEVEL
32 value: "info"
33
34 # Worker pods for async processing
35 worker:
36 enabled: true
37 replicas: 2
38
39 # Upgrade all airflow helm deployments when upgrading APC helm deployment
40 upgradeDeployments:
41 enabled: true
42
43 # Cleanup soft-deleted deployments
44 cleanupDeployments:
45 enabled: true
46 schedule: "0 0 * * *"
47 olderThan: 14
48
49 # Cleanup Airflow database metadata
50 cleanupAirflowDb:
51 enabled: false
52 schedule: "23 5 * * *"
53 olderThan: 365

APC API configuration (houston.config)

The APC API accepts extensive configuration via houston.config:

Authentication

1astronomer:
2 houston:
3 config:
4 auth:
5 # Local username/password auth
6 local:
7 enabled: true
8
9 # OpenID Connect
10 openidConnect:
11 # Auth flow: "code" (recommended) or "implicit"
12 flow: "code"
13
14 # Microsoft/Azure AD
15 microsoft:
16 enabled: true
17 clientId: "<YOUR_CLIENT_ID>"
18 clientSecret: "<YOUR_CLIENT_SECRET>"
19 discoveryUrl: "https://login.microsoftonline.com/<TENANT_ID>/v2.0/.well-known/openid-configuration"
20
21 # Google OAuth
22 google:
23 enabled: false
24 clientId: ""
25 clientSecret: ""
26
27 # Okta
28 okta:
29 enabled: false
30 clientId: ""
31 clientSecret: ""
32 discoveryUrl: ""
33
34 # Import groups from IDP (nested `.enabled` in APC 2.0)
35 idpGroupsImport:
36 enabled: true
37 idpGroupsRefresh:
38 enabled: false
39
40 # GitHub via Auth0
41 github:
42 enabled: false

Deployment defaults (deployments)

APC 2.0 groups deployment-related settings under domains (for example deployMechanisms, deploymentLifecycle, runtimeManagement) using nested objects and feature.enabled toggles—not flat keys such as dagOnlyDeployment or hardDeleteDeployment.

For tables of defaults, allowed values, and override semantics, see APC API configuration earlier on this page. For how cluster, workspace, and deployment layers merge, see Config governance.

Example shape (abbreviated):

1astronomer:
2 houston:
3 config:
4 deployments:
5 deployMechanisms:
6 dagOnlyDeployment:
7 enabled: true
8 gitSyncDagDeployment:
9 enabled: true
10 deploymentLifecycle:
11 hardDeleteDeployment:
12 enabled: false
13 deployRollback:
14 enabled: true
15 resourceManagement:
16 components: []

Airflow Helm value defaults merged per deployment live under deployments.helm in the APC API’s config/default.yaml; see Deployments Helm defaults earlier on this page.

Email configuration

1astronomer:
2 houston:
3 config:
4 email:
5 enabled: true
6 smtpUrl: "smtp://smtp.example.com:587"
7 reply: "noreply@example.com"
8
9 # Root-level toggles (APC 2.0 nested `.enabled` pattern)
10 emailConfirmation:
11 enabled: true
12
13 publicSignups:
14 enabled: false

Prometheus integration

1astronomer:
2 houston:
3 config:
4 prometheus:
5 enabled: true
6 host: "http://astronomer-prometheus:9090"

Deployment orchestrator

The deployment orchestrator manages Kubernetes resources for Deployments:

1astronomer:
2 commander:
3 replicas: 2
4
5 resources:
6 requests:
7 cpu: "250m"
8 memory: "1Gi"
9 limits:
10 cpu: "500m"
11 memory: "2Gi"
12
13 # Air-gapped mode (no external registry access)
14 airGapped:
15 enabled: false
16
17 # Helm upgrade timeout (seconds)
18 upgradeTimeout: 600
19
20 # Environment variables
21 env: []

Registry

Container registry for deployment images:

1astronomer:
2 registry:
3 replicas: 1
4
5 resources:
6 requests:
7 cpu: "250m"
8 memory: "512Mi"
9 limits:
10 cpu: "500m"
11 memory: "1024Mi"
12
13 # Persistent storage
14 persistence:
15 enabled: true
16 size: "100Gi"
17 storageClassName: ~
18
19 # Use external storage backends
20 # AWS S3
21 s3:
22 enabled: false
23 accesskey: ""
24 secretkey: ""
25 region: "us-east-1"
26 bucket: "astronomer-registry"
27
28 # Google Cloud Storage
29 gcs:
30 enabled: false
31 bucket: ""
32 useKeyfile: true
33 keyfile: /var/gcs-keyfile/astronomer-gcs-keyfile
34
35 # Azure Blob Storage
36 azure:
37 enabled: false
38 accountname: ""
39 accountkey: ""
40 container: ""

Astro UI

1astronomer:
2 astroUI:
3 replicas: 2
4
5 resources:
6 requests:
7 cpu: "100m"
8 memory: "256Mi"
9 limits:
10 cpu: "500m"
11 memory: "1024Mi"
12
13 env: []

NGINX ingress

1nginx:
2 replicas: 2
3
4 resources:
5 requests:
6 cpu: "500m"
7 memory: "1024Mi"
8 limits:
9 cpu: "1"
10 memory: "2048Mi"
11
12 # Service type: LoadBalancer, ClusterIP, or NodePort
13 serviceType: "LoadBalancer"
14
15 # Specific load balancer IP (optional)
16 loadBalancerIP: ~
17
18 # Restrict source IPs
19 loadBalancerSourceRanges:
20 - "10.0.0.0/8"
21
22 # Private/internal load balancer
23 privateLoadBalancer: false
24
25 # NodePort configuration (when serviceType: NodePort)
26 httpNodePort: ~
27 httpsNodePort: ~
28
29 # Ingress annotations
30 ingressAnnotations:
31 # AWS
32 service.beta.kubernetes.io/aws-load-balancer-internal: "true"
33 # GCP
34 cloud.google.com/load-balancer-type: "Internal"
35 # Azure
36 service.beta.kubernetes.io/azure-load-balancer-internal: "true"
37
38 # Proxy settings
39 proxyConnectTimeout: 15
40 proxyReadTimeout: 600
41 proxySendTimeout: 600
42 proxyBodySize: "1024m"
43
44 # Default backend
45 defaultBackend:
46 enabled: true
47 resources:
48 requests:
49 cpu: "100m"
50 memory: "50Mi"

Prometheus (monitoring)

1prometheus:
2 # Data retention period
3 retention: 15d
4
5 # Persistent storage
6 persistence:
7 enabled: true
8 size: "150Gi"
9
10 resources:
11 requests:
12 cpu: "1000m"
13 memory: "4Gi"
14 limits:
15 cpu: "2000m"
16 memory: "8Gi"

Grafana

1grafana:
2 resources:
3 requests:
4 cpu: "250m"
5 memory: "512Mi"
6 limits:
7 cpu: "500m"
8 memory: "1024Mi"
9
10 # Custom dashboards
11 dashboards:
12 default:
13 custom-dashboard:
14 file: dashboards/custom.json
15
16 # Extra environment variables (for example, SMTP for alerts)
17 extraEnvVars:
18 - name: GF_SMTP_ENABLED
19 value: "true"
20 - name: GF_SMTP_HOST
21 value: "smtp.example.com:587"

Elasticsearch (logging)

1elasticsearch:
2 # Enable persistence
3 common:
4 persistence:
5 enabled: true
6
7 # Client nodes
8 client:
9 replicas: 2
10 heapMemory: "2g"
11 resources:
12 requests:
13 cpu: "1"
14 memory: "2Gi"
15 limits:
16 cpu: "2"
17 memory: "4Gi"
18
19 # Data nodes
20 data:
21 replicas: 3
22 heapMemory: "2g"
23 resources:
24 requests:
25 cpu: "1"
26 memory: "2Gi"
27 limits:
28 cpu: "2"
29 memory: "4Gi"
30 persistence:
31 size: "100Gi"
32
33 # Master nodes
34 master:
35 replicas: 3
36 heapMemory: "2g"
37 resources:
38 requests:
39 cpu: "1"
40 memory: "2Gi"
41 limits:
42 cpu: "2"
43 memory: "4Gi"
44 persistence:
45 size: "20Gi"

Vector (log collection)

1vector:
2 vector:
3 resources:
4 requests:
5 cpu: "250m"
6 memory: "512Mi"
7 limits:
8 cpu: "1000m"
9 memory: "1024Mi"

External logging

Forward logs to external Elasticsearch:

1global:
2 customLogging:
3 enabled: true
4 scheme: https
5 host: "elasticsearch.example.com"
6 port: "9200"
7 secret: "es-credentials"

NATS (messaging)

1global:
2 nats:
3 enabled: true
4 replicas: 3
5 jetStream:
6 enabled: true
7 tls: false
8
9nats:
10 nats:
11 resources:
12 requests:
13 cpu: "75m"
14 memory: "30Mi"
15 limits:
16 cpu: "250m"
17 memory: "100Mi"

Database configuration

1global:
2 # Disable in-cluster PostgreSQL
3 postgresql:
4 enabled: false
5
6astronomer:
7 houston:
8 backendSecretName: "houston-db-secret"
9 # Secret should contain: connection=postgres://user:pass@host:5432/houston
10 airflowBackendSecretName: "airflow-db-secret"

Database SSL

1global:
2 ssl:
3 enabled: true
4 mode: "require" # disable, allow, prefer, require, verify-ca, verify-full
5 grafana:
6 sslmode: "require"

PgBouncer (connection pooling)

1global:
2 pgbouncer:
3 enabled: true
4 gssSupport: true
5 secretName: "astronomer-pgbouncer-config"
6 servicePort: "6543"

Auth sidecar (OpenShift)

global.authSidecar configures the chart-level platform auth proxy used for OpenShift and similar environments. This is separate from astronomer.houston.config.deployments.authSideCar, which controls the per-Deployment auth sidecar injected by the APC API (default tag 1.29.2).

1global:
2 authSidecar:
3 enabled: true
4 repository: quay.io/astronomer/ap-auth-sidecar
5 tag: 1.29.8
6 port: 8084
7 resources:
8 requests:
9 cpu: "500m"
10 memory: "512Mi"
11 limits:
12 cpu: "1000m"
13 memory: "1024Mi"

Logging sidecar

Add Vector sidecar to Airflow Pods:

1global:
2 logging:
3 loggingSidecar:
4 enabled: true
5 name: sidecar-log-consumer
6 repository: quay.io/astronomer/ap-vector
7 tag: 0.54.0
8 resources:
9 requests:
10 cpu: "100m"
11 memory: "386Mi"

Dag-only deployments

1global:
2 dagOnlyDeployment:
3 enabled: true
4 repository: quay.io/astronomer/ap-dag-deploy
5 tag: 0.9.4
6 resources: {}
7 persistence: {}

Airflow operator

Enable Kubernetes operator-based deployments:

1global:
2 airflowOperator:
3 enabled: false

Extra objects

Add custom Kubernetes resources:

1astronomer:
2 extraObjects:
3 # Custom LimitRange
4 - apiVersion: v1
5 kind: LimitRange
6 metadata:
7 name: default-limits
8 namespace: astronomer
9 spec:
10 limits:
11 - default:
12 cpu: "1"
13 memory: "1Gi"
14 defaultRequest:
15 cpu: "100m"
16 memory: "128Mi"
17 type: Container
18
19 # Custom NetworkPolicy
20 - apiVersion: networking.k8s.io/v1
21 kind: NetworkPolicy
22 metadata:
23 name: custom-policy
24 spec:
25 podSelector: {}
26 policyTypes:
27 - Ingress

Complete example

Here’s an example configuration:

1global:
2 baseDomain: "airflow.example.com"
3 tlsSecret: "astronomer-tls"
4
5 plane:
6 mode: "unified"
7
8 rbac:
9 enabled: true
10 clusterRoles: true
11
12 networkPolicy:
13 enabled: true
14
15 postgresql:
16 enabled: false
17
18 privateRegistry:
19 enabled: true
20 repository: "registry.example.com/astronomer"
21 secretName: "registry-creds"
22
23 platformNodePool:
24 nodeSelector:
25 node-type: platform
26 tolerations:
27 - key: "dedicated"
28 value: "platform"
29 effect: "NoSchedule"
30
31 ssl:
32 enabled: true
33 mode: "require"
34
35tags:
36 platform: true
37 monitoring: true
38 logging: true
39
40astronomer:
41 houston:
42 replicas: 2
43 resources:
44 requests:
45 cpu: "500m"
46 memory: "1Gi"
47 limits:
48 cpu: "1000m"
49 memory: "2Gi"
50 backendSecretName: "houston-db-secret"
51 config:
52 auth:
53 local:
54 enabled: false
55 openidConnect:
56 microsoft:
57 enabled: true
58 clientId: "<YOUR_CLIENT_ID>"
59 clientSecret: "<YOUR_CLIENT_SECRET>"
60 discoveryUrl: "https://login.microsoftonline.com/<TENANT_ID>/v2.0/.well-known/openid-configuration"
61 email:
62 enabled: true
63 smtpUrl: "smtp://smtp.example.com:587"
64 publicSignups:
65 enabled: false
66 deployments:
67 deploymentLifecycle:
68 hardDeleteDeployment:
69 enabled: true
70 namespaceManagement:
71 manualReleaseNames:
72 enabled: true
73
74 commander:
75 replicas: 2
76 resources:
77 requests:
78 cpu: "250m"
79 memory: "1Gi"
80 limits:
81 cpu: "500m"
82 memory: "2Gi"
83
84 registry:
85 persistence:
86 enabled: true
87 size: "200Gi"
88
89nginx:
90 replicas: 2
91 serviceType: LoadBalancer
92 privateLoadBalancer: true
93 resources:
94 requests:
95 cpu: "500m"
96 memory: "1Gi"
97
98prometheus:
99 retention: 30d
100 persistence:
101 enabled: true
102 size: "200Gi"
103 resources:
104 requests:
105 cpu: "1"
106 memory: "4Gi"
107
108elasticsearch:
109 data:
110 replicas: 3
111 persistence:
112 size: "200Gi"
113 resources:
114 requests:
115 cpu: "1"
116 memory: "4Gi"

Validate configuration

After creating your values file, validate it:

$# Dry-run to check for errors
$helm template astronomer astronomer/astronomer \
> -f values.yaml \
> --namespace astronomer \
> --debug
$
$# Check rendered templates
$helm template astronomer astronomer/astronomer \
> -f values.yaml \
> --namespace astronomer > rendered.yaml

Upgrade configuration

(Optional) When updating your values file, you can use the helm diff plugin, and then run the following command to see a diff of your changes:

$# Compare changes
$helm diff upgrade astronomer astronomer/astronomer \
> -f values.yaml \
> --namespace astronomer
$
$# Apply changes
$helm upgrade astronomer astronomer/astronomer \
> -f values.yaml \
> --namespace astronomer