This guide provides instructions to upgrade from Astro Private Cloud (APC) 0.37.6 to 1.0.0 and prepare your environment for Airflow 3 Deployments.
This upgrade deletes and recreates several platform components (NATS, STAN, Houston). The platform will be unavailable for creating or updating Deployments during the upgrade. Plan a maintenance window and notify your users before starting.
pg_dump).values.yaml that are no longer recognized in 1.0. See Breaking changes and removals for the full list.For help with upgrade issues, see Debug upgrade.
When upgrading from Astro Private Cloud (APC) 0.x.x to 1.0.0, APC creates a new control plane NGINX ingress Service (astronomer-cp-nginx) and a new LoadBalancer. The previous ingress and LoadBalancer are replaced.
You must:
This change occurs because the control plane ingress Service name changes from astronomer-nginx (0.x) to astronomer-cp-nginx (1.0), which causes Kubernetes to provision a new external LoadBalancer with a new public IP/hostname. Prepare these updates before performing the upgrade.
Example (your output will vary by cloud/provider):
If you are on OpenShift and manage your own Routes or use a third-party ingress controller instead of the platform’s built-in NGINX ingress, this LoadBalancer change does not apply to you. You can skip the DNS update step later in this guide.
Before making any changes to your cluster, run a Helm upgrade dry run to verify that the upgrade will succeed. This catches issues like missing RBAC permissions, invalid values, or chart conflicts before any components are deleted.
First, ensure that your values.yaml includes the unified mode configuration required for APC 1.0 (the same configuration referenced later in this guide); you do not need to duplicate that YAML block here.
Then run the dry run:
Replace 1.0.x with the specific patch version you are upgrading to (for example, 1.0.1).
Do not proceed with the remaining steps until the dry run completes successfully. If the dry run fails, resolve the reported errors first.
Before upgrading to version 1.0.0, you must migrate from STAN to JetStream. Run the following commands in your cluster to remove legacy STAN components before JetStream is initialized:
Before running the Helm upgrade, ensure the astronomer-bootstrap secret includes a database name suffix in connection (for example, /postgres). This prevents Postgres connection errors during or after the upgrade.
First, check if your connection string already includes a database name:
Examine the output. A connection string with a database name looks like:
A connection string without a database name looks like:
If your connection string already includes a database name (for example, /postgres or /astronomer), you can skip to Step 4.
The default database name depends on your cloud provider:
postgres (standard default; main may appear only in specific legacy or custom configurations)postgrespostgresIf you’re unsure which database to use, connect to your PostgreSQL instance using your preferred method (psql, a database client, or cloud console) and run \l to list available databases.
After confirming the database name, patch the astronomer-bootstrap secret:
Before running the Helm upgrade, delete the Houston Deployment to avoid a known Helm patch conflict related to environment variable ordering changes between versions.
The --cascade=orphan flag keeps the Houston Pods running during the delete operation. The Helm upgrade in the next step recreates the Deployment with the correct configuration.
If you skip this step and encounter a Helm patch error during the upgrade, see Debug upgrade for the workaround.
When upgrading from 0.37.x, you must configure your deployment to run in unified plane mode. Unified mode is equivalent to how 0.37.x operates and is required for the initial upgrade.
If you haven’t already, add the following configuration to your values.yaml:
After upgrading to 1.0 in unified mode, you can optionally add separate Data Planes to run Airflow Deployments in other clusters. See Install a Data Plane for instructions. If you later want to convert your unified installation to a dedicated Control Plane (after migrating all Deployments to Data Planes), see Install a Control Plane.
Complete all pre-upgrade steps (database backup, STAN/NATS deletion, bootstrap secret patch, Houston Deployment deletion) before running the upgrade command.
Perform a standard Helm upgrade using your existing release name and namespace:
Replace 1.0.x with the specific patch version you are upgrading to (for example, 1.0.1).
For airgapped environments that cannot access the internet, download the Helm chart .tgz file directly from the Astronomer Helm repository:
Replace <version> with the specific version you are upgrading to (for example, 1.0.1). Upload this file to your internal artifact repository (such as Artifactory or Nexus), then reference it in your helm upgrade command.
After the platform upgrade completes and all Pods are running, restart NATS and Houston components to ensure the new JetStream components and Houston services are connected and synchronized:
After the rollout completes, verify the pods have been recreated by checking their age:
All pods should show a recent AGE (a few minutes). If any pods show an older age, delete them manually to force recreation:
APC 1.0 creates a new control plane NGINX ingress Service (astronomer-cp-nginx) with a new LoadBalancer. Get the new load balancer address:
Update your DNS records to point to the new load balancer IP or hostname. This includes all subdomains for your base domain (for example, app.<baseDomain>, houston.<baseDomain>, registry.<baseDomain>).
If you are on OpenShift and manage your own Routes or use a third-party ingress controller, you can skip this step. Your existing ingress configuration continues to work.
You must complete this step before you can access the Astro UI or API.
Once you have validated that all platform Pods in APC 1.0 are healthy and running, upgrade your Airflow Deployments to ensure compatibility with 1.0.
Existing Airflow Deployments typically continue to function after the platform upgrade without immediate action. However, Astronomer recommends upgrading Deployments to ensure full compatibility with the new platform version.
To upgrade Deployments, use one of the following approaches:
upsertDeployment mutation for programmatic or bulk upgrades.After you complete your upgrade, validate your upgrade works as expected by completing the following steps:
Check if the JetStream job is created:
Check if NATS pods are running: