MCPcopy Index your code
hub / github.com/astronomer/astronomer

github.com/astronomer/astronomer @v2.0.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.0.0 ↗ · + Follow
1,478 symbols 5,388 edges 139 files 1,092 documented · 74% updated 1d agov1.1.6 · 2026-06-23★ 4907 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Astronomer Platform Helm Charts

This repository contains the helm charts for deploying the Astronomer Platform into a Kubernetes cluster.

Astronomer is a commercial "Airflow as a Service" platform that runs on Kubernetes. Source code is made available for the benefit of our customers, if you'd like to use the platform reach out for a license.

Architecture

Astronomer Architecture

Docker images

Docker images for deploying and running Astronomer are currently available on Quay.io/Astronomer.

Documentation

You can read the Astronomer platform documentation at https://docs.astronomer.io/enterprise. For a record of all user-facing changes to the Astronomer platform, see Release Notes.

Contributing

We welcome any contributions:

  • Report all enhancements, bugs, and tasks as GitHub issues
  • Provide fixes or enhancements by opening pull requests in GitHub

Local Development

When doing chart development, you will need the uv tool, which will manage the virtual environment, the python interpreter, and all dependencies. The test environment for unit testing will be installed into venv when you run make test-unit, or you can setup the venv by running make venv.

The DEBUG env var will make it easier to debug a failure by leaving the helm values files generated by pytest test cases in place, and by printing out the helm command that was used to render the charts.

Setting INTERNET_ACCESS=false env will attempt to avoid connecting to the internet for things like helm repo update. This obviously requires setting up your developer environment beforehand if you want to actually be able to run tests.

Setting PYTEST_ADDOPTS to any pytest args will modify how pytest runs.

For example, you could run make test-unit PYTEST_ADDOPTS='--pdb -k 1.30' INTERNET_ACCESS=false DEBUG=1 if you only want to debug kubernetes 1.30 tests, enter pdb when there is a failure, keep values files, and avoid internet access.

Development against a local KinD cluster

These components are advised for local development:

  • docker (make sure your user has permissions - try 'docker ps')
  • kubectl
  • kind
  • mkcert (make sure mkcert is in your PATH)
  • helm
  • python >=3.13

Run this script from the root of this repository:

bin/reset-local-dev

Each time you run the script, the platform will be fully reset to the current helm chart.

Customizing the local deployment

Turn on or off parts of the platform

Modify the "tags:" in configs/local-dev.yaml - platform: core Astronomer components - logging (large impact on RAM use): ElasticSearch, Vector - monitoring: Prometheus

Load a Docker image into KinD's nodes (so it's available for pods)

kind load docker-image $your_local_image_name_with_tag

Make use of that image

Make note of your pod name

kubectl get pods -n astronomer

Find the corresponding deployment, daemonset, or statefulset

kubectl get deployment -n astronomer

Replace the pod with the new image Look for "image" on the appropriate container and replace with the local tag, and set the pull policy to "Never".

kubectl edit deployment -n astronomer <your deployment>

Specify the Kubernetes version

bin/reset-local-dev -K 1.28.6

How to upgrade airflow chart json schema

Every time we upgrade the airflow chart we will also need to update the json schema file with the list of acceptable top level params (eventually this will be fixed on the OSS side but for now this needs to be a manual step https://github.com/astronomer/issues/issues/3774). Additionally the json schema url will need to be updated to something of the form https://raw.githubusercontent.com/apache/airflow/helm-chart/1.x.x/chart/values.schema.json. This param is found in astronomer/values.schema.json at the astronomer.houston.config.deployments.helm.airflow.$ref parameter

To get a list of the top level params it is best to switch to the apache/airflow tagged commit for that chart release. Then run the ag command to get a list of all top level params.

Example:

git checkout tags/helm-chart/1.2.0
git grep -ho "\.Values\.\w\+" | sort -u

The values output by this command will need to be inserted manually into astronomer/values.schema.json at the astronomer.houston.config.deployments.helm.airflow.allOf parameter. There are two additional params that need to be at this location outside of what is returned from above. They are podMutation and useAstroSecurityManager. These can be found by running the same ag command against the astronomer/airflow-chart values.yaml file.

Searching code

We include k8s schema files and calico CRD manifests in this repo to aid in testing, but their inclusion makes grepping for code a bit difficult in some cases. You can exclude those files from your `git grep`` results if you use the following syntax:

git grep .Values.global. -- ':!tests/k8s_schema' ':!tests/kind'

The -- ends the git command arguments and indicates that the rest of the arguments are filenames or pathspecs. pathspecs begin with a colon. :!tests/k8s_schema is a pathspec that instructs git to exclude the directory tests/k8s_schema.

Note that this pathspec syntax is a git feature, so this exclusion technique will not work with normal grep.

License

The code in this repo is licensed Apache 2.0 with Commons Clause, however it installs Astronomer components that have a commercial license, and requires a commercial subscription from Astronomer, Inc.

Optional schema validation

The ./values.schema.json.example file can be used to validate the helm values you are using work with the default airflow chart shipped with this repo. To use it remove the .example postfix from the file and proceed with the helm lint, install, and upgrade commands as normal.

Core symbols most depended-on inside this repo

render_chart
called by 692
tests/utils/chart.py
get_containers_by_name
called by 145
tests/utils/__init__.py
migrate_values
called by 98
bin/migrate-helm-chart-values-1x-to-2x.py
get_env_vars_dict
called by 48
tests/utils/__init__.py
_run
called by 28
bin/setup-cp-dp-k3d.py
_print
called by 26
bin/setup-local-registry.py
_print
called by 24
bin/setup-037x-k3d.py
_run
called by 24
bin/setup-037x-k3d.py

Shape

Method 863
Function 444
Class 161
Route 10

Languages

Python100%

Modules by API surface

tests/migration/test_migrate_helm_chart_values_037x.py102 symbols
tests/migration/test_migrate_helm_chart_values.py84 symbols
tests/chart_tests/test_update_containerd_certs.py75 symbols
bin/setup-cp-dp-k3d.py63 symbols
bin/setup-037x-k3d.py48 symbols
tests/chart_tests/test_houston_configmap.py43 symbols
tests/chart_tests/test_elasticsearch.py40 symbols
bin/helm_chart_values_migration_shared.py37 symbols
tests/chart_tests/test_astronomer_commander.py31 symbols
tests/chart_tests/test_external_elasticsearch.py28 symbols
bin/migrate-helm-chart-values-037x-to-2x.py25 symbols
tests/chart_tests/test_external_secrets.py24 symbols

Datastores touched

(mysql)Database · 1 repos

For agents

$ claude mcp add astronomer \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page