[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-astronomer-deploying-airflow":3,"mdc-wy8gmq-key":52,"related-org-astronomer-deploying-airflow":4638,"related-repo-astronomer-deploying-airflow":4804},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":22,"repoUrl":23,"updatedAt":24,"license":25,"forks":26,"topics":27,"repo":47,"sourceUrl":50,"mdContent":51},"deploying-airflow","deploy Airflow DAGs","Deploys Airflow DAGs and projects. Use when deploying Airflow or answering anything about deployment - deploying DAGs\u002Fprojects, pushing code, setting up CI\u002FCD, deploying to production or deployment strategies for Airflow.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"astronomer","Astronomer","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fastronomer.png",[12,16,19],{"name":13,"slug":14,"type":15},"Airflow","airflow","tag",{"name":17,"slug":18,"type":15},"Data Pipeline","data-pipeline",{"name":20,"slug":21,"type":15},"Deployment","deployment",412,"https:\u002F\u002Fgithub.com\u002Fastronomer\u002Fagents","2026-04-06T18:02:00.813402",null,55,[28,29,30,31,14,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"agentic-workflow","agents","ai","ai-agents","apache-airflow","claude","cursor","dag","data-engineering","data-pipelines","dbt","llm","mcp","orchestrator","skills","workflow-automation","workflow-management","workflow-orchestration","workflows",{"repoUrl":23,"stars":22,"forks":26,"topics":48,"description":49},[28,29,30,31,14,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"AI agent tooling for data engineering workflows.","https:\u002F\u002Fgithub.com\u002Fastronomer\u002Fagents\u002Ftree\u002FHEAD\u002Fskills\u002Fdeploying-airflow","---\nname: deploying-airflow\ndescription: Deploys Airflow DAGs and projects. Use when deploying Airflow or answering anything about deployment - deploying DAGs\u002Fprojects, pushing code, setting up CI\u002FCD, deploying to production or deployment strategies for Airflow.\n---\n\n# Deploying Airflow\n\nThis skill covers deploying Airflow DAGs and projects to production, whether using Astro (Astronomer's managed platform) or open-source Airflow on Docker Compose or Kubernetes.\n\n**Choosing a path:** Astro is a good fit for managed operations and faster CI\u002FCD. For open-source, use Docker Compose for dev and the Helm chart for production.\n\n---\n\n## Astro (Astronomer)\n\nAstro provides CLI commands and GitHub integration for deploying Airflow projects.\n\n### Deploy Commands\n\n| Command | What It Does |\n|---------|--------------|\n| `astro deploy` | Full project deploy — builds Docker image and deploys DAGs |\n| `astro deploy --dags` | DAG-only deploy — pushes only DAG files (fast, no image build) |\n| `astro deploy --image` | Image-only deploy — pushes only the Docker image (for multi-repo CI\u002FCD) |\n| `astro deploy --dbt` | dbt project deploy — deploys a dbt project to run alongside Airflow |\n\n### Full Project Deploy\n\nBuilds a Docker image from your Astro project and deploys everything (DAGs, plugins, requirements, packages):\n\n```bash\nastro deploy\n```\n\nUse this when you've changed `requirements.txt`, `Dockerfile`, `packages.txt`, plugins, or any non-DAG file.\n\n### DAG-Only Deploy\n\nPushes only files in the `dags\u002F` directory without rebuilding the Docker image:\n\n```bash\nastro deploy --dags\n```\n\nThis is significantly faster than a full deploy since it skips the image build. Use this when you've only changed DAG files and haven't modified dependencies or configuration.\n\n### Image-Only Deploy\n\nPushes only the Docker image without updating DAGs:\n\n```bash\nastro deploy --image\n```\n\nThis is useful in multi-repo setups where DAGs are deployed separately from the image, or in CI\u002FCD pipelines that manage image and DAG deploys independently.\n\n### dbt Project Deploy\n\nDeploys a dbt project to run with Cosmos on an Astro deployment:\n\n```bash\nastro deploy --dbt\n```\n\n### GitHub Integration\n\nAstro supports branch-to-deployment mapping for automated deploys:\n\n- Map branches to specific deployments (e.g., `main` -> production, `develop` -> staging)\n- Pushes to mapped branches trigger automatic deploys\n- Supports DAG-only deploys on merge for faster iteration\n\nConfigure this in the Astro UI under **Deployment Settings > CI\u002FCD**.\n\n### CI\u002FCD Patterns\n\nCommon CI\u002FCD strategies on Astro:\n\n1. **DAG-only on feature branches**: Use `astro deploy --dags` for fast iteration during development\n2. **Full deploy on main**: Use `astro deploy` on merge to main for production releases\n3. **Separate image and DAG pipelines**: Use `--image` and `--dags` in separate CI jobs for independent release cycles\n\n### Deploy Queue\n\nWhen multiple deploys are triggered in quick succession, Astro processes them sequentially in a deploy queue. Each deploy completes before the next one starts.\n\n### Reference\n\n- [Astro Deploy Documentation](https:\u002F\u002Fwww.astronomer.io\u002Fdocs\u002Fastro\u002Fdeploy-code)\n\n---\n\n## Open-Source: Docker Compose\n\nDeploy Airflow using the official Docker Compose setup. This is recommended for learning and exploration — for production, use Kubernetes with the Helm chart (see below).\n\n### Prerequisites\n\n- Docker and Docker Compose v2.14.0+\n- The official `apache\u002Fairflow` Docker image\n\n### Quick Start\n\nDownload the official Airflow 3 Docker Compose file:\n\n```bash\ncurl -LfO 'https:\u002F\u002Fairflow.apache.org\u002Fdocs\u002Fapache-airflow\u002Fstable\u002Fdocker-compose.yaml'\n```\n\nThis sets up the full Airflow 3 architecture:\n\n| Service | Purpose |\n|---------|---------|\n| `airflow-apiserver` | REST API and UI (port 8080) |\n| `airflow-scheduler` | Schedules DAG runs |\n| `airflow-dag-processor` | Parses and processes DAG files |\n| `airflow-worker` | Executes tasks (CeleryExecutor) |\n| `airflow-triggerer` | Handles deferrable\u002Fasync tasks |\n| `postgres` | Metadata database |\n| `redis` | Celery message broker |\n\n### Minimal Setup\n\nFor a simpler setup with LocalExecutor (no Celery\u002FRedis), create a `docker-compose.yaml`:\n\n```yaml\nx-airflow-common: &airflow-common\n  image: apache\u002Fairflow:3  # Use the latest Airflow 3.x release\n  environment: &airflow-common-env\n    AIRFLOW__CORE__EXECUTOR: LocalExecutor\n    AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2:\u002F\u002Fairflow:airflow@postgres\u002Fairflow\n    AIRFLOW__CORE__LOAD_EXAMPLES: 'false'\n    AIRFLOW__CORE__DAGS_FOLDER: \u002Fopt\u002Fairflow\u002Fdags\n  volumes:\n    - .\u002Fdags:\u002Fopt\u002Fairflow\u002Fdags\n    - .\u002Flogs:\u002Fopt\u002Fairflow\u002Flogs\n    - .\u002Fplugins:\u002Fopt\u002Fairflow\u002Fplugins\n  depends_on:\n    postgres:\n      condition: service_healthy\n\nservices:\n  postgres:\n    image: postgres:16\n    environment:\n      POSTGRES_USER: airflow\n      POSTGRES_PASSWORD: airflow\n      POSTGRES_DB: airflow\n    volumes:\n      - postgres-db-volume:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n    healthcheck:\n      test: [\"CMD\", \"pg_isready\", \"-U\", \"airflow\"]\n      interval: 10s\n      retries: 5\n      start_period: 5s\n\n  airflow-init:\n    \u003C\u003C: *airflow-common\n    entrypoint: \u002Fbin\u002Fbash\n    command:\n      - -c\n      - |\n        airflow db migrate\n        airflow users create \\\n          --username admin \\\n          --firstname Admin \\\n          --lastname User \\\n          --role Admin \\\n          --email admin@example.com \\\n          --password admin\n    depends_on:\n      postgres:\n        condition: service_healthy\n\n  airflow-apiserver:\n    \u003C\u003C: *airflow-common\n    command: airflow api-server\n    ports:\n      - \"8080:8080\"\n    healthcheck:\n      test: [\"CMD\", \"curl\", \"--fail\", \"http:\u002F\u002Flocalhost:8080\u002Fhealth\"]\n      interval: 30s\n      timeout: 10s\n      retries: 5\n      start_period: 30s\n\n  airflow-scheduler:\n    \u003C\u003C: *airflow-common\n    command: airflow scheduler\n\n  airflow-dag-processor:\n    \u003C\u003C: *airflow-common\n    command: airflow dag-processor\n\n  airflow-triggerer:\n    \u003C\u003C: *airflow-common\n    command: airflow triggerer\n\nvolumes:\n  postgres-db-volume:\n```\n\n> **Airflow 3 architecture note**: The webserver has been replaced by the **API server** (`airflow api-server`), and the **DAG processor** now runs as a standalone process separate from the scheduler.\n\n### Common Operations\n\n```bash\n# Start all services\ndocker compose up -d\n\n# Stop all services\ndocker compose down\n\n# View logs\ndocker compose logs -f airflow-scheduler\n\n# Restart after requirements change\ndocker compose down && docker compose up -d --build\n\n# Run a one-off Airflow CLI command\ndocker compose exec airflow-apiserver airflow dags list\n```\n\n### Installing Python Packages\n\nAdd packages to `requirements.txt` and rebuild:\n\n```bash\n# Add to requirements.txt, then:\ndocker compose down\ndocker compose up -d --build\n```\n\nOr use a custom Dockerfile:\n\n```dockerfile\nFROM apache\u002Fairflow:3  # Pin to a specific version (e.g., 3.1.7) for reproducibility\nCOPY requirements.txt .\nRUN pip install --no-cache-dir -r requirements.txt\n```\n\nUpdate `docker-compose.yaml` to build from the Dockerfile:\n\n```yaml\nx-airflow-common: &airflow-common\n  build:\n    context: .\n    dockerfile: Dockerfile\n  # ... rest of config\n```\n\n### Environment Variables\n\nConfigure Airflow settings via environment variables in `docker-compose.yaml`:\n\n```yaml\nenvironment:\n  # Core settings\n  AIRFLOW__CORE__EXECUTOR: LocalExecutor\n  AIRFLOW__CORE__PARALLELISM: 32\n  AIRFLOW__CORE__MAX_ACTIVE_TASKS_PER_DAG: 16\n\n  # Email\n  AIRFLOW__EMAIL__EMAIL_BACKEND: airflow.utils.email.send_email_smtp\n  AIRFLOW__SMTP__SMTP_HOST: smtp.example.com\n\n  # Connections (as URI)\n  AIRFLOW_CONN_MY_DB: postgresql:\u002F\u002Fuser:pass@host:5432\u002Fdb\n```\n\n---\n\n## Open-Source: Kubernetes (Helm Chart)\n\nDeploy Airflow on Kubernetes using the official Apache Airflow Helm chart.\n\n### Prerequisites\n\n- A Kubernetes cluster\n- `kubectl` configured\n- `helm` installed\n\n### Installation\n\n```bash\n# Add the Airflow Helm repo\nhelm repo add apache-airflow https:\u002F\u002Fairflow.apache.org\nhelm repo update\n\n# Install with default values\nhelm install airflow apache-airflow\u002Fairflow \\\n  --namespace airflow \\\n  --create-namespace\n\n# Install with custom values\nhelm install airflow apache-airflow\u002Fairflow \\\n  --namespace airflow \\\n  --create-namespace \\\n  -f values.yaml\n```\n\n### Key values.yaml Configuration\n\n```yaml\n# Executor type\nexecutor: KubernetesExecutor  # or CeleryExecutor, LocalExecutor\n\n# Airflow image (pin to your desired version)\ndefaultAirflowRepository: apache\u002Fairflow\ndefaultAirflowTag: \"3\"  # Or pin: \"3.1.7\"\n\n# Git-sync for DAGs (recommended for production)\ndags:\n  gitSync:\n    enabled: true\n    repo: https:\u002F\u002Fgithub.com\u002Fyour-org\u002Fyour-dags.git\n    branch: main\n    subPath: dags\n    wait: 60  # seconds between syncs\n\n# API server (replaces webserver in Airflow 3)\napiServer:\n  resources:\n    requests:\n      cpu: \"250m\"\n      memory: \"512Mi\"\n    limits:\n      cpu: \"500m\"\n      memory: \"1Gi\"\n  replicas: 1\n\n# Scheduler\nscheduler:\n  resources:\n    requests:\n      cpu: \"500m\"\n      memory: \"1Gi\"\n    limits:\n      cpu: \"1000m\"\n      memory: \"2Gi\"\n\n# Standalone DAG processor\ndagProcessor:\n  enabled: true\n  resources:\n    requests:\n      cpu: \"250m\"\n      memory: \"512Mi\"\n    limits:\n      cpu: \"500m\"\n      memory: \"1Gi\"\n\n# Triggerer (for deferrable tasks)\ntriggerer:\n  resources:\n    requests:\n      cpu: \"250m\"\n      memory: \"512Mi\"\n    limits:\n      cpu: \"500m\"\n      memory: \"1Gi\"\n\n# Worker resources (CeleryExecutor only)\nworkers:\n  resources:\n    requests:\n      cpu: \"500m\"\n      memory: \"1Gi\"\n    limits:\n      cpu: \"2000m\"\n      memory: \"4Gi\"\n  replicas: 2\n\n# Log persistence\nlogs:\n  persistence:\n    enabled: true\n    size: 10Gi\n\n# PostgreSQL (built-in)\npostgresql:\n  enabled: true\n\n# Or use an external database\n# postgresql:\n#   enabled: false\n# data:\n#   metadataConnection:\n#     user: airflow\n#     pass: airflow\n#     host: your-rds-host.amazonaws.com\n#     port: 5432\n#     db: airflow\n```\n\n### Upgrading\n\n```bash\n# Upgrade with new values\nhelm upgrade airflow apache-airflow\u002Fairflow \\\n  --namespace airflow \\\n  -f values.yaml\n\n# Upgrade to a new Airflow version\nhelm upgrade airflow apache-airflow\u002Fairflow \\\n  --namespace airflow \\\n  --set defaultAirflowTag=\"\u003Cversion>\"\n```\n\n### DAG Deployment Strategies on Kubernetes\n\n1. **Git-sync** (recommended): DAGs are synced from a Git repository automatically\n2. **Persistent Volume**: Mount a shared PV containing DAGs\n3. **Baked into image**: Include DAGs in a custom Docker image\n\n### Useful Commands\n\n```bash\n# Check pod status\nkubectl get pods -n airflow\n\n# View scheduler logs\nkubectl logs -f deployment\u002Fairflow-scheduler -n airflow\n\n# Port-forward the API server\nkubectl port-forward svc\u002Fairflow-apiserver 8080:8080 -n airflow\n\n# Run a one-off CLI command\nkubectl exec -it deployment\u002Fairflow-scheduler -n airflow -- airflow dags list\n```\n\n---\n\n## Related Skills\n\n- **setting-up-astro-project**: For initializing a new Astro project\n- **managing-astro-local-env**: For local development with `astro dev`\n- **authoring-dags**: For writing DAGs before deployment\n- **testing-dags**: For testing DAGs before deployment\n",{"data":53,"body":54},{"name":4,"description":6},{"type":55,"children":56},"root",[57,65,71,82,86,93,98,105,202,208,213,242,270,276,289,313,318,324,329,352,357,363,368,391,397,402,438,450,456,461,523,529,534,540,555,558,564,569,575,596,602,607,643,648,789,795,808,2024,2060,2066,2286,2292,2304,2357,2362,2395,2407,2487,2493,2504,2662,2665,2671,2676,2681,2711,2717,2918,2924,4190,4196,4340,4346,4379,4385,4574,4577,4583,4632],{"type":58,"tag":59,"props":60,"children":61},"element","h1",{"id":4},[62],{"type":63,"value":64},"text","Deploying Airflow",{"type":58,"tag":66,"props":67,"children":68},"p",{},[69],{"type":63,"value":70},"This skill covers deploying Airflow DAGs and projects to production, whether using Astro (Astronomer's managed platform) or open-source Airflow on Docker Compose or Kubernetes.",{"type":58,"tag":66,"props":72,"children":73},{},[74,80],{"type":58,"tag":75,"props":76,"children":77},"strong",{},[78],{"type":63,"value":79},"Choosing a path:",{"type":63,"value":81}," Astro is a good fit for managed operations and faster CI\u002FCD. For open-source, use Docker Compose for dev and the Helm chart for production.",{"type":58,"tag":83,"props":84,"children":85},"hr",{},[],{"type":58,"tag":87,"props":88,"children":90},"h2",{"id":89},"astro-astronomer",[91],{"type":63,"value":92},"Astro (Astronomer)",{"type":58,"tag":66,"props":94,"children":95},{},[96],{"type":63,"value":97},"Astro provides CLI commands and GitHub integration for deploying Airflow projects.",{"type":58,"tag":99,"props":100,"children":102},"h3",{"id":101},"deploy-commands",[103],{"type":63,"value":104},"Deploy Commands",{"type":58,"tag":106,"props":107,"children":108},"table",{},[109,128],{"type":58,"tag":110,"props":111,"children":112},"thead",{},[113],{"type":58,"tag":114,"props":115,"children":116},"tr",{},[117,123],{"type":58,"tag":118,"props":119,"children":120},"th",{},[121],{"type":63,"value":122},"Command",{"type":58,"tag":118,"props":124,"children":125},{},[126],{"type":63,"value":127},"What It Does",{"type":58,"tag":129,"props":130,"children":131},"tbody",{},[132,151,168,185],{"type":58,"tag":114,"props":133,"children":134},{},[135,146],{"type":58,"tag":136,"props":137,"children":138},"td",{},[139],{"type":58,"tag":140,"props":141,"children":143},"code",{"className":142},[],[144],{"type":63,"value":145},"astro deploy",{"type":58,"tag":136,"props":147,"children":148},{},[149],{"type":63,"value":150},"Full project deploy — builds Docker image and deploys DAGs",{"type":58,"tag":114,"props":152,"children":153},{},[154,163],{"type":58,"tag":136,"props":155,"children":156},{},[157],{"type":58,"tag":140,"props":158,"children":160},{"className":159},[],[161],{"type":63,"value":162},"astro deploy --dags",{"type":58,"tag":136,"props":164,"children":165},{},[166],{"type":63,"value":167},"DAG-only deploy — pushes only DAG files (fast, no image build)",{"type":58,"tag":114,"props":169,"children":170},{},[171,180],{"type":58,"tag":136,"props":172,"children":173},{},[174],{"type":58,"tag":140,"props":175,"children":177},{"className":176},[],[178],{"type":63,"value":179},"astro deploy --image",{"type":58,"tag":136,"props":181,"children":182},{},[183],{"type":63,"value":184},"Image-only deploy — pushes only the Docker image (for multi-repo CI\u002FCD)",{"type":58,"tag":114,"props":186,"children":187},{},[188,197],{"type":58,"tag":136,"props":189,"children":190},{},[191],{"type":58,"tag":140,"props":192,"children":194},{"className":193},[],[195],{"type":63,"value":196},"astro deploy --dbt",{"type":58,"tag":136,"props":198,"children":199},{},[200],{"type":63,"value":201},"dbt project deploy — deploys a dbt project to run alongside Airflow",{"type":58,"tag":99,"props":203,"children":205},{"id":204},"full-project-deploy",[206],{"type":63,"value":207},"Full Project Deploy",{"type":58,"tag":66,"props":209,"children":210},{},[211],{"type":63,"value":212},"Builds a Docker image from your Astro project and deploys everything (DAGs, plugins, requirements, packages):",{"type":58,"tag":214,"props":215,"children":220},"pre",{"className":216,"code":217,"language":218,"meta":219,"style":219},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","astro deploy\n","bash","",[221],{"type":58,"tag":140,"props":222,"children":223},{"__ignoreMap":219},[224],{"type":58,"tag":225,"props":226,"children":229},"span",{"class":227,"line":228},"line",1,[230,236],{"type":58,"tag":225,"props":231,"children":233},{"style":232},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[234],{"type":63,"value":235},"astro",{"type":58,"tag":225,"props":237,"children":239},{"style":238},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[240],{"type":63,"value":241}," deploy\n",{"type":58,"tag":66,"props":243,"children":244},{},[245,247,253,255,261,262,268],{"type":63,"value":246},"Use this when you've changed ",{"type":58,"tag":140,"props":248,"children":250},{"className":249},[],[251],{"type":63,"value":252},"requirements.txt",{"type":63,"value":254},", ",{"type":58,"tag":140,"props":256,"children":258},{"className":257},[],[259],{"type":63,"value":260},"Dockerfile",{"type":63,"value":254},{"type":58,"tag":140,"props":263,"children":265},{"className":264},[],[266],{"type":63,"value":267},"packages.txt",{"type":63,"value":269},", plugins, or any non-DAG file.",{"type":58,"tag":99,"props":271,"children":273},{"id":272},"dag-only-deploy",[274],{"type":63,"value":275},"DAG-Only Deploy",{"type":58,"tag":66,"props":277,"children":278},{},[279,281,287],{"type":63,"value":280},"Pushes only files in the ",{"type":58,"tag":140,"props":282,"children":284},{"className":283},[],[285],{"type":63,"value":286},"dags\u002F",{"type":63,"value":288}," directory without rebuilding the Docker image:",{"type":58,"tag":214,"props":290,"children":292},{"className":216,"code":291,"language":218,"meta":219,"style":219},"astro deploy --dags\n",[293],{"type":58,"tag":140,"props":294,"children":295},{"__ignoreMap":219},[296],{"type":58,"tag":225,"props":297,"children":298},{"class":227,"line":228},[299,303,308],{"type":58,"tag":225,"props":300,"children":301},{"style":232},[302],{"type":63,"value":235},{"type":58,"tag":225,"props":304,"children":305},{"style":238},[306],{"type":63,"value":307}," deploy",{"type":58,"tag":225,"props":309,"children":310},{"style":238},[311],{"type":63,"value":312}," --dags\n",{"type":58,"tag":66,"props":314,"children":315},{},[316],{"type":63,"value":317},"This is significantly faster than a full deploy since it skips the image build. Use this when you've only changed DAG files and haven't modified dependencies or configuration.",{"type":58,"tag":99,"props":319,"children":321},{"id":320},"image-only-deploy",[322],{"type":63,"value":323},"Image-Only Deploy",{"type":58,"tag":66,"props":325,"children":326},{},[327],{"type":63,"value":328},"Pushes only the Docker image without updating DAGs:",{"type":58,"tag":214,"props":330,"children":332},{"className":216,"code":331,"language":218,"meta":219,"style":219},"astro deploy --image\n",[333],{"type":58,"tag":140,"props":334,"children":335},{"__ignoreMap":219},[336],{"type":58,"tag":225,"props":337,"children":338},{"class":227,"line":228},[339,343,347],{"type":58,"tag":225,"props":340,"children":341},{"style":232},[342],{"type":63,"value":235},{"type":58,"tag":225,"props":344,"children":345},{"style":238},[346],{"type":63,"value":307},{"type":58,"tag":225,"props":348,"children":349},{"style":238},[350],{"type":63,"value":351}," --image\n",{"type":58,"tag":66,"props":353,"children":354},{},[355],{"type":63,"value":356},"This is useful in multi-repo setups where DAGs are deployed separately from the image, or in CI\u002FCD pipelines that manage image and DAG deploys independently.",{"type":58,"tag":99,"props":358,"children":360},{"id":359},"dbt-project-deploy",[361],{"type":63,"value":362},"dbt Project Deploy",{"type":58,"tag":66,"props":364,"children":365},{},[366],{"type":63,"value":367},"Deploys a dbt project to run with Cosmos on an Astro deployment:",{"type":58,"tag":214,"props":369,"children":371},{"className":216,"code":370,"language":218,"meta":219,"style":219},"astro deploy --dbt\n",[372],{"type":58,"tag":140,"props":373,"children":374},{"__ignoreMap":219},[375],{"type":58,"tag":225,"props":376,"children":377},{"class":227,"line":228},[378,382,386],{"type":58,"tag":225,"props":379,"children":380},{"style":232},[381],{"type":63,"value":235},{"type":58,"tag":225,"props":383,"children":384},{"style":238},[385],{"type":63,"value":307},{"type":58,"tag":225,"props":387,"children":388},{"style":238},[389],{"type":63,"value":390}," --dbt\n",{"type":58,"tag":99,"props":392,"children":394},{"id":393},"github-integration",[395],{"type":63,"value":396},"GitHub Integration",{"type":58,"tag":66,"props":398,"children":399},{},[400],{"type":63,"value":401},"Astro supports branch-to-deployment mapping for automated deploys:",{"type":58,"tag":403,"props":404,"children":405},"ul",{},[406,428,433],{"type":58,"tag":407,"props":408,"children":409},"li",{},[410,412,418,420,426],{"type":63,"value":411},"Map branches to specific deployments (e.g., ",{"type":58,"tag":140,"props":413,"children":415},{"className":414},[],[416],{"type":63,"value":417},"main",{"type":63,"value":419}," -> production, ",{"type":58,"tag":140,"props":421,"children":423},{"className":422},[],[424],{"type":63,"value":425},"develop",{"type":63,"value":427}," -> staging)",{"type":58,"tag":407,"props":429,"children":430},{},[431],{"type":63,"value":432},"Pushes to mapped branches trigger automatic deploys",{"type":58,"tag":407,"props":434,"children":435},{},[436],{"type":63,"value":437},"Supports DAG-only deploys on merge for faster iteration",{"type":58,"tag":66,"props":439,"children":440},{},[441,443,448],{"type":63,"value":442},"Configure this in the Astro UI under ",{"type":58,"tag":75,"props":444,"children":445},{},[446],{"type":63,"value":447},"Deployment Settings > CI\u002FCD",{"type":63,"value":449},".",{"type":58,"tag":99,"props":451,"children":453},{"id":452},"cicd-patterns",[454],{"type":63,"value":455},"CI\u002FCD Patterns",{"type":58,"tag":66,"props":457,"children":458},{},[459],{"type":63,"value":460},"Common CI\u002FCD strategies on Astro:",{"type":58,"tag":462,"props":463,"children":464},"ol",{},[465,482,498],{"type":58,"tag":407,"props":466,"children":467},{},[468,473,475,480],{"type":58,"tag":75,"props":469,"children":470},{},[471],{"type":63,"value":472},"DAG-only on feature branches",{"type":63,"value":474},": Use ",{"type":58,"tag":140,"props":476,"children":478},{"className":477},[],[479],{"type":63,"value":162},{"type":63,"value":481}," for fast iteration during development",{"type":58,"tag":407,"props":483,"children":484},{},[485,490,491,496],{"type":58,"tag":75,"props":486,"children":487},{},[488],{"type":63,"value":489},"Full deploy on main",{"type":63,"value":474},{"type":58,"tag":140,"props":492,"children":494},{"className":493},[],[495],{"type":63,"value":145},{"type":63,"value":497}," on merge to main for production releases",{"type":58,"tag":407,"props":499,"children":500},{},[501,506,507,513,515,521],{"type":58,"tag":75,"props":502,"children":503},{},[504],{"type":63,"value":505},"Separate image and DAG pipelines",{"type":63,"value":474},{"type":58,"tag":140,"props":508,"children":510},{"className":509},[],[511],{"type":63,"value":512},"--image",{"type":63,"value":514}," and ",{"type":58,"tag":140,"props":516,"children":518},{"className":517},[],[519],{"type":63,"value":520},"--dags",{"type":63,"value":522}," in separate CI jobs for independent release cycles",{"type":58,"tag":99,"props":524,"children":526},{"id":525},"deploy-queue",[527],{"type":63,"value":528},"Deploy Queue",{"type":58,"tag":66,"props":530,"children":531},{},[532],{"type":63,"value":533},"When multiple deploys are triggered in quick succession, Astro processes them sequentially in a deploy queue. Each deploy completes before the next one starts.",{"type":58,"tag":99,"props":535,"children":537},{"id":536},"reference",[538],{"type":63,"value":539},"Reference",{"type":58,"tag":403,"props":541,"children":542},{},[543],{"type":58,"tag":407,"props":544,"children":545},{},[546],{"type":58,"tag":547,"props":548,"children":552},"a",{"href":549,"rel":550},"https:\u002F\u002Fwww.astronomer.io\u002Fdocs\u002Fastro\u002Fdeploy-code",[551],"nofollow",[553],{"type":63,"value":554},"Astro Deploy Documentation",{"type":58,"tag":83,"props":556,"children":557},{},[],{"type":58,"tag":87,"props":559,"children":561},{"id":560},"open-source-docker-compose",[562],{"type":63,"value":563},"Open-Source: Docker Compose",{"type":58,"tag":66,"props":565,"children":566},{},[567],{"type":63,"value":568},"Deploy Airflow using the official Docker Compose setup. This is recommended for learning and exploration — for production, use Kubernetes with the Helm chart (see below).",{"type":58,"tag":99,"props":570,"children":572},{"id":571},"prerequisites",[573],{"type":63,"value":574},"Prerequisites",{"type":58,"tag":403,"props":576,"children":577},{},[578,583],{"type":58,"tag":407,"props":579,"children":580},{},[581],{"type":63,"value":582},"Docker and Docker Compose v2.14.0+",{"type":58,"tag":407,"props":584,"children":585},{},[586,588,594],{"type":63,"value":587},"The official ",{"type":58,"tag":140,"props":589,"children":591},{"className":590},[],[592],{"type":63,"value":593},"apache\u002Fairflow",{"type":63,"value":595}," Docker image",{"type":58,"tag":99,"props":597,"children":599},{"id":598},"quick-start",[600],{"type":63,"value":601},"Quick Start",{"type":58,"tag":66,"props":603,"children":604},{},[605],{"type":63,"value":606},"Download the official Airflow 3 Docker Compose file:",{"type":58,"tag":214,"props":608,"children":610},{"className":216,"code":609,"language":218,"meta":219,"style":219},"curl -LfO 'https:\u002F\u002Fairflow.apache.org\u002Fdocs\u002Fapache-airflow\u002Fstable\u002Fdocker-compose.yaml'\n",[611],{"type":58,"tag":140,"props":612,"children":613},{"__ignoreMap":219},[614],{"type":58,"tag":225,"props":615,"children":616},{"class":227,"line":228},[617,622,627,633,638],{"type":58,"tag":225,"props":618,"children":619},{"style":232},[620],{"type":63,"value":621},"curl",{"type":58,"tag":225,"props":623,"children":624},{"style":238},[625],{"type":63,"value":626}," -LfO",{"type":58,"tag":225,"props":628,"children":630},{"style":629},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[631],{"type":63,"value":632}," '",{"type":58,"tag":225,"props":634,"children":635},{"style":238},[636],{"type":63,"value":637},"https:\u002F\u002Fairflow.apache.org\u002Fdocs\u002Fapache-airflow\u002Fstable\u002Fdocker-compose.yaml",{"type":58,"tag":225,"props":639,"children":640},{"style":629},[641],{"type":63,"value":642},"'\n",{"type":58,"tag":66,"props":644,"children":645},{},[646],{"type":63,"value":647},"This sets up the full Airflow 3 architecture:",{"type":58,"tag":106,"props":649,"children":650},{},[651,667],{"type":58,"tag":110,"props":652,"children":653},{},[654],{"type":58,"tag":114,"props":655,"children":656},{},[657,662],{"type":58,"tag":118,"props":658,"children":659},{},[660],{"type":63,"value":661},"Service",{"type":58,"tag":118,"props":663,"children":664},{},[665],{"type":63,"value":666},"Purpose",{"type":58,"tag":129,"props":668,"children":669},{},[670,687,704,721,738,755,772],{"type":58,"tag":114,"props":671,"children":672},{},[673,682],{"type":58,"tag":136,"props":674,"children":675},{},[676],{"type":58,"tag":140,"props":677,"children":679},{"className":678},[],[680],{"type":63,"value":681},"airflow-apiserver",{"type":58,"tag":136,"props":683,"children":684},{},[685],{"type":63,"value":686},"REST API and UI (port 8080)",{"type":58,"tag":114,"props":688,"children":689},{},[690,699],{"type":58,"tag":136,"props":691,"children":692},{},[693],{"type":58,"tag":140,"props":694,"children":696},{"className":695},[],[697],{"type":63,"value":698},"airflow-scheduler",{"type":58,"tag":136,"props":700,"children":701},{},[702],{"type":63,"value":703},"Schedules DAG runs",{"type":58,"tag":114,"props":705,"children":706},{},[707,716],{"type":58,"tag":136,"props":708,"children":709},{},[710],{"type":58,"tag":140,"props":711,"children":713},{"className":712},[],[714],{"type":63,"value":715},"airflow-dag-processor",{"type":58,"tag":136,"props":717,"children":718},{},[719],{"type":63,"value":720},"Parses and processes DAG files",{"type":58,"tag":114,"props":722,"children":723},{},[724,733],{"type":58,"tag":136,"props":725,"children":726},{},[727],{"type":58,"tag":140,"props":728,"children":730},{"className":729},[],[731],{"type":63,"value":732},"airflow-worker",{"type":58,"tag":136,"props":734,"children":735},{},[736],{"type":63,"value":737},"Executes tasks (CeleryExecutor)",{"type":58,"tag":114,"props":739,"children":740},{},[741,750],{"type":58,"tag":136,"props":742,"children":743},{},[744],{"type":58,"tag":140,"props":745,"children":747},{"className":746},[],[748],{"type":63,"value":749},"airflow-triggerer",{"type":58,"tag":136,"props":751,"children":752},{},[753],{"type":63,"value":754},"Handles deferrable\u002Fasync tasks",{"type":58,"tag":114,"props":756,"children":757},{},[758,767],{"type":58,"tag":136,"props":759,"children":760},{},[761],{"type":58,"tag":140,"props":762,"children":764},{"className":763},[],[765],{"type":63,"value":766},"postgres",{"type":58,"tag":136,"props":768,"children":769},{},[770],{"type":63,"value":771},"Metadata database",{"type":58,"tag":114,"props":773,"children":774},{},[775,784],{"type":58,"tag":136,"props":776,"children":777},{},[778],{"type":58,"tag":140,"props":779,"children":781},{"className":780},[],[782],{"type":63,"value":783},"redis",{"type":58,"tag":136,"props":785,"children":786},{},[787],{"type":63,"value":788},"Celery message broker",{"type":58,"tag":99,"props":790,"children":792},{"id":791},"minimal-setup",[793],{"type":63,"value":794},"Minimal Setup",{"type":58,"tag":66,"props":796,"children":797},{},[798,800,806],{"type":63,"value":799},"For a simpler setup with LocalExecutor (no Celery\u002FRedis), create a ",{"type":58,"tag":140,"props":801,"children":803},{"className":802},[],[804],{"type":63,"value":805},"docker-compose.yaml",{"type":63,"value":807},":",{"type":58,"tag":214,"props":809,"children":813},{"className":810,"code":811,"language":812,"meta":219,"style":219},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","x-airflow-common: &airflow-common\n  image: apache\u002Fairflow:3  # Use the latest Airflow 3.x release\n  environment: &airflow-common-env\n    AIRFLOW__CORE__EXECUTOR: LocalExecutor\n    AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2:\u002F\u002Fairflow:airflow@postgres\u002Fairflow\n    AIRFLOW__CORE__LOAD_EXAMPLES: 'false'\n    AIRFLOW__CORE__DAGS_FOLDER: \u002Fopt\u002Fairflow\u002Fdags\n  volumes:\n    - .\u002Fdags:\u002Fopt\u002Fairflow\u002Fdags\n    - .\u002Flogs:\u002Fopt\u002Fairflow\u002Flogs\n    - .\u002Fplugins:\u002Fopt\u002Fairflow\u002Fplugins\n  depends_on:\n    postgres:\n      condition: service_healthy\n\nservices:\n  postgres:\n    image: postgres:16\n    environment:\n      POSTGRES_USER: airflow\n      POSTGRES_PASSWORD: airflow\n      POSTGRES_DB: airflow\n    volumes:\n      - postgres-db-volume:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n    healthcheck:\n      test: [\"CMD\", \"pg_isready\", \"-U\", \"airflow\"]\n      interval: 10s\n      retries: 5\n      start_period: 5s\n\n  airflow-init:\n    \u003C\u003C: *airflow-common\n    entrypoint: \u002Fbin\u002Fbash\n    command:\n      - -c\n      - |\n        airflow db migrate\n        airflow users create \\\n          --username admin \\\n          --firstname Admin \\\n          --lastname User \\\n          --role Admin \\\n          --email admin@example.com \\\n          --password admin\n    depends_on:\n      postgres:\n        condition: service_healthy\n\n  airflow-apiserver:\n    \u003C\u003C: *airflow-common\n    command: airflow api-server\n    ports:\n      - \"8080:8080\"\n    healthcheck:\n      test: [\"CMD\", \"curl\", \"--fail\", \"http:\u002F\u002Flocalhost:8080\u002Fhealth\"]\n      interval: 30s\n      timeout: 10s\n      retries: 5\n      start_period: 30s\n\n  airflow-scheduler:\n    \u003C\u003C: *airflow-common\n    command: airflow scheduler\n\n  airflow-dag-processor:\n    \u003C\u003C: *airflow-common\n    command: airflow dag-processor\n\n  airflow-triggerer:\n    \u003C\u003C: *airflow-common\n    command: airflow triggerer\n\nvolumes:\n  postgres-db-volume:\n","yaml",[814],{"type":58,"tag":140,"props":815,"children":816},{"__ignoreMap":219},[817,841,865,887,905,923,949,967,981,995,1008,1021,1034,1047,1065,1075,1088,1101,1119,1132,1150,1167,1184,1197,1211,1224,1313,1331,1350,1368,1376,1389,1408,1426,1439,1452,1465,1474,1483,1492,1501,1510,1519,1528,1537,1550,1563,1580,1588,1601,1617,1634,1647,1669,1681,1762,1779,1796,1812,1828,1836,1849,1865,1882,1890,1903,1919,1936,1944,1957,1973,1990,1998,2011],{"type":58,"tag":225,"props":818,"children":819},{"class":227,"line":228},[820,826,830,836],{"type":58,"tag":225,"props":821,"children":823},{"style":822},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[824],{"type":63,"value":825},"x-airflow-common",{"type":58,"tag":225,"props":827,"children":828},{"style":629},[829],{"type":63,"value":807},{"type":58,"tag":225,"props":831,"children":833},{"style":832},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[834],{"type":63,"value":835}," &",{"type":58,"tag":225,"props":837,"children":838},{"style":232},[839],{"type":63,"value":840},"airflow-common\n",{"type":58,"tag":225,"props":842,"children":844},{"class":227,"line":843},2,[845,850,854,859],{"type":58,"tag":225,"props":846,"children":847},{"style":822},[848],{"type":63,"value":849},"  image",{"type":58,"tag":225,"props":851,"children":852},{"style":629},[853],{"type":63,"value":807},{"type":58,"tag":225,"props":855,"children":856},{"style":238},[857],{"type":63,"value":858}," apache\u002Fairflow:3",{"type":58,"tag":225,"props":860,"children":862},{"style":861},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[863],{"type":63,"value":864},"  # Use the latest Airflow 3.x release\n",{"type":58,"tag":225,"props":866,"children":868},{"class":227,"line":867},3,[869,874,878,882],{"type":58,"tag":225,"props":870,"children":871},{"style":822},[872],{"type":63,"value":873},"  environment",{"type":58,"tag":225,"props":875,"children":876},{"style":629},[877],{"type":63,"value":807},{"type":58,"tag":225,"props":879,"children":880},{"style":832},[881],{"type":63,"value":835},{"type":58,"tag":225,"props":883,"children":884},{"style":232},[885],{"type":63,"value":886},"airflow-common-env\n",{"type":58,"tag":225,"props":888,"children":890},{"class":227,"line":889},4,[891,896,900],{"type":58,"tag":225,"props":892,"children":893},{"style":822},[894],{"type":63,"value":895},"    AIRFLOW__CORE__EXECUTOR",{"type":58,"tag":225,"props":897,"children":898},{"style":629},[899],{"type":63,"value":807},{"type":58,"tag":225,"props":901,"children":902},{"style":238},[903],{"type":63,"value":904}," LocalExecutor\n",{"type":58,"tag":225,"props":906,"children":908},{"class":227,"line":907},5,[909,914,918],{"type":58,"tag":225,"props":910,"children":911},{"style":822},[912],{"type":63,"value":913},"    AIRFLOW__DATABASE__SQL_ALCHEMY_CONN",{"type":58,"tag":225,"props":915,"children":916},{"style":629},[917],{"type":63,"value":807},{"type":58,"tag":225,"props":919,"children":920},{"style":238},[921],{"type":63,"value":922}," postgresql+psycopg2:\u002F\u002Fairflow:airflow@postgres\u002Fairflow\n",{"type":58,"tag":225,"props":924,"children":926},{"class":227,"line":925},6,[927,932,936,940,945],{"type":58,"tag":225,"props":928,"children":929},{"style":822},[930],{"type":63,"value":931},"    AIRFLOW__CORE__LOAD_EXAMPLES",{"type":58,"tag":225,"props":933,"children":934},{"style":629},[935],{"type":63,"value":807},{"type":58,"tag":225,"props":937,"children":938},{"style":629},[939],{"type":63,"value":632},{"type":58,"tag":225,"props":941,"children":942},{"style":238},[943],{"type":63,"value":944},"false",{"type":58,"tag":225,"props":946,"children":947},{"style":629},[948],{"type":63,"value":642},{"type":58,"tag":225,"props":950,"children":952},{"class":227,"line":951},7,[953,958,962],{"type":58,"tag":225,"props":954,"children":955},{"style":822},[956],{"type":63,"value":957},"    AIRFLOW__CORE__DAGS_FOLDER",{"type":58,"tag":225,"props":959,"children":960},{"style":629},[961],{"type":63,"value":807},{"type":58,"tag":225,"props":963,"children":964},{"style":238},[965],{"type":63,"value":966}," \u002Fopt\u002Fairflow\u002Fdags\n",{"type":58,"tag":225,"props":968,"children":970},{"class":227,"line":969},8,[971,976],{"type":58,"tag":225,"props":972,"children":973},{"style":822},[974],{"type":63,"value":975},"  volumes",{"type":58,"tag":225,"props":977,"children":978},{"style":629},[979],{"type":63,"value":980},":\n",{"type":58,"tag":225,"props":982,"children":984},{"class":227,"line":983},9,[985,990],{"type":58,"tag":225,"props":986,"children":987},{"style":629},[988],{"type":63,"value":989},"    -",{"type":58,"tag":225,"props":991,"children":992},{"style":238},[993],{"type":63,"value":994}," .\u002Fdags:\u002Fopt\u002Fairflow\u002Fdags\n",{"type":58,"tag":225,"props":996,"children":998},{"class":227,"line":997},10,[999,1003],{"type":58,"tag":225,"props":1000,"children":1001},{"style":629},[1002],{"type":63,"value":989},{"type":58,"tag":225,"props":1004,"children":1005},{"style":238},[1006],{"type":63,"value":1007}," .\u002Flogs:\u002Fopt\u002Fairflow\u002Flogs\n",{"type":58,"tag":225,"props":1009,"children":1011},{"class":227,"line":1010},11,[1012,1016],{"type":58,"tag":225,"props":1013,"children":1014},{"style":629},[1015],{"type":63,"value":989},{"type":58,"tag":225,"props":1017,"children":1018},{"style":238},[1019],{"type":63,"value":1020}," .\u002Fplugins:\u002Fopt\u002Fairflow\u002Fplugins\n",{"type":58,"tag":225,"props":1022,"children":1024},{"class":227,"line":1023},12,[1025,1030],{"type":58,"tag":225,"props":1026,"children":1027},{"style":822},[1028],{"type":63,"value":1029},"  depends_on",{"type":58,"tag":225,"props":1031,"children":1032},{"style":629},[1033],{"type":63,"value":980},{"type":58,"tag":225,"props":1035,"children":1037},{"class":227,"line":1036},13,[1038,1043],{"type":58,"tag":225,"props":1039,"children":1040},{"style":822},[1041],{"type":63,"value":1042},"    postgres",{"type":58,"tag":225,"props":1044,"children":1045},{"style":629},[1046],{"type":63,"value":980},{"type":58,"tag":225,"props":1048,"children":1050},{"class":227,"line":1049},14,[1051,1056,1060],{"type":58,"tag":225,"props":1052,"children":1053},{"style":822},[1054],{"type":63,"value":1055},"      condition",{"type":58,"tag":225,"props":1057,"children":1058},{"style":629},[1059],{"type":63,"value":807},{"type":58,"tag":225,"props":1061,"children":1062},{"style":238},[1063],{"type":63,"value":1064}," service_healthy\n",{"type":58,"tag":225,"props":1066,"children":1068},{"class":227,"line":1067},15,[1069],{"type":58,"tag":225,"props":1070,"children":1072},{"emptyLinePlaceholder":1071},true,[1073],{"type":63,"value":1074},"\n",{"type":58,"tag":225,"props":1076,"children":1078},{"class":227,"line":1077},16,[1079,1084],{"type":58,"tag":225,"props":1080,"children":1081},{"style":822},[1082],{"type":63,"value":1083},"services",{"type":58,"tag":225,"props":1085,"children":1086},{"style":629},[1087],{"type":63,"value":980},{"type":58,"tag":225,"props":1089,"children":1091},{"class":227,"line":1090},17,[1092,1097],{"type":58,"tag":225,"props":1093,"children":1094},{"style":822},[1095],{"type":63,"value":1096},"  postgres",{"type":58,"tag":225,"props":1098,"children":1099},{"style":629},[1100],{"type":63,"value":980},{"type":58,"tag":225,"props":1102,"children":1104},{"class":227,"line":1103},18,[1105,1110,1114],{"type":58,"tag":225,"props":1106,"children":1107},{"style":822},[1108],{"type":63,"value":1109},"    image",{"type":58,"tag":225,"props":1111,"children":1112},{"style":629},[1113],{"type":63,"value":807},{"type":58,"tag":225,"props":1115,"children":1116},{"style":238},[1117],{"type":63,"value":1118}," postgres:16\n",{"type":58,"tag":225,"props":1120,"children":1122},{"class":227,"line":1121},19,[1123,1128],{"type":58,"tag":225,"props":1124,"children":1125},{"style":822},[1126],{"type":63,"value":1127},"    environment",{"type":58,"tag":225,"props":1129,"children":1130},{"style":629},[1131],{"type":63,"value":980},{"type":58,"tag":225,"props":1133,"children":1135},{"class":227,"line":1134},20,[1136,1141,1145],{"type":58,"tag":225,"props":1137,"children":1138},{"style":822},[1139],{"type":63,"value":1140},"      POSTGRES_USER",{"type":58,"tag":225,"props":1142,"children":1143},{"style":629},[1144],{"type":63,"value":807},{"type":58,"tag":225,"props":1146,"children":1147},{"style":238},[1148],{"type":63,"value":1149}," airflow\n",{"type":58,"tag":225,"props":1151,"children":1153},{"class":227,"line":1152},21,[1154,1159,1163],{"type":58,"tag":225,"props":1155,"children":1156},{"style":822},[1157],{"type":63,"value":1158},"      POSTGRES_PASSWORD",{"type":58,"tag":225,"props":1160,"children":1161},{"style":629},[1162],{"type":63,"value":807},{"type":58,"tag":225,"props":1164,"children":1165},{"style":238},[1166],{"type":63,"value":1149},{"type":58,"tag":225,"props":1168,"children":1170},{"class":227,"line":1169},22,[1171,1176,1180],{"type":58,"tag":225,"props":1172,"children":1173},{"style":822},[1174],{"type":63,"value":1175},"      POSTGRES_DB",{"type":58,"tag":225,"props":1177,"children":1178},{"style":629},[1179],{"type":63,"value":807},{"type":58,"tag":225,"props":1181,"children":1182},{"style":238},[1183],{"type":63,"value":1149},{"type":58,"tag":225,"props":1185,"children":1187},{"class":227,"line":1186},23,[1188,1193],{"type":58,"tag":225,"props":1189,"children":1190},{"style":822},[1191],{"type":63,"value":1192},"    volumes",{"type":58,"tag":225,"props":1194,"children":1195},{"style":629},[1196],{"type":63,"value":980},{"type":58,"tag":225,"props":1198,"children":1200},{"class":227,"line":1199},24,[1201,1206],{"type":58,"tag":225,"props":1202,"children":1203},{"style":629},[1204],{"type":63,"value":1205},"      -",{"type":58,"tag":225,"props":1207,"children":1208},{"style":238},[1209],{"type":63,"value":1210}," postgres-db-volume:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n",{"type":58,"tag":225,"props":1212,"children":1214},{"class":227,"line":1213},25,[1215,1220],{"type":58,"tag":225,"props":1216,"children":1217},{"style":822},[1218],{"type":63,"value":1219},"    healthcheck",{"type":58,"tag":225,"props":1221,"children":1222},{"style":629},[1223],{"type":63,"value":980},{"type":58,"tag":225,"props":1225,"children":1227},{"class":227,"line":1226},26,[1228,1233,1237,1242,1247,1252,1256,1261,1266,1271,1275,1279,1283,1288,1292,1296,1300,1304,1308],{"type":58,"tag":225,"props":1229,"children":1230},{"style":822},[1231],{"type":63,"value":1232},"      test",{"type":58,"tag":225,"props":1234,"children":1235},{"style":629},[1236],{"type":63,"value":807},{"type":58,"tag":225,"props":1238,"children":1239},{"style":629},[1240],{"type":63,"value":1241}," [",{"type":58,"tag":225,"props":1243,"children":1244},{"style":629},[1245],{"type":63,"value":1246},"\"",{"type":58,"tag":225,"props":1248,"children":1249},{"style":238},[1250],{"type":63,"value":1251},"CMD",{"type":58,"tag":225,"props":1253,"children":1254},{"style":629},[1255],{"type":63,"value":1246},{"type":58,"tag":225,"props":1257,"children":1258},{"style":629},[1259],{"type":63,"value":1260},",",{"type":58,"tag":225,"props":1262,"children":1263},{"style":629},[1264],{"type":63,"value":1265}," \"",{"type":58,"tag":225,"props":1267,"children":1268},{"style":238},[1269],{"type":63,"value":1270},"pg_isready",{"type":58,"tag":225,"props":1272,"children":1273},{"style":629},[1274],{"type":63,"value":1246},{"type":58,"tag":225,"props":1276,"children":1277},{"style":629},[1278],{"type":63,"value":1260},{"type":58,"tag":225,"props":1280,"children":1281},{"style":629},[1282],{"type":63,"value":1265},{"type":58,"tag":225,"props":1284,"children":1285},{"style":238},[1286],{"type":63,"value":1287},"-U",{"type":58,"tag":225,"props":1289,"children":1290},{"style":629},[1291],{"type":63,"value":1246},{"type":58,"tag":225,"props":1293,"children":1294},{"style":629},[1295],{"type":63,"value":1260},{"type":58,"tag":225,"props":1297,"children":1298},{"style":629},[1299],{"type":63,"value":1265},{"type":58,"tag":225,"props":1301,"children":1302},{"style":238},[1303],{"type":63,"value":14},{"type":58,"tag":225,"props":1305,"children":1306},{"style":629},[1307],{"type":63,"value":1246},{"type":58,"tag":225,"props":1309,"children":1310},{"style":629},[1311],{"type":63,"value":1312},"]\n",{"type":58,"tag":225,"props":1314,"children":1316},{"class":227,"line":1315},27,[1317,1322,1326],{"type":58,"tag":225,"props":1318,"children":1319},{"style":822},[1320],{"type":63,"value":1321},"      interval",{"type":58,"tag":225,"props":1323,"children":1324},{"style":629},[1325],{"type":63,"value":807},{"type":58,"tag":225,"props":1327,"children":1328},{"style":238},[1329],{"type":63,"value":1330}," 10s\n",{"type":58,"tag":225,"props":1332,"children":1334},{"class":227,"line":1333},28,[1335,1340,1344],{"type":58,"tag":225,"props":1336,"children":1337},{"style":822},[1338],{"type":63,"value":1339},"      retries",{"type":58,"tag":225,"props":1341,"children":1342},{"style":629},[1343],{"type":63,"value":807},{"type":58,"tag":225,"props":1345,"children":1347},{"style":1346},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1348],{"type":63,"value":1349}," 5\n",{"type":58,"tag":225,"props":1351,"children":1353},{"class":227,"line":1352},29,[1354,1359,1363],{"type":58,"tag":225,"props":1355,"children":1356},{"style":822},[1357],{"type":63,"value":1358},"      start_period",{"type":58,"tag":225,"props":1360,"children":1361},{"style":629},[1362],{"type":63,"value":807},{"type":58,"tag":225,"props":1364,"children":1365},{"style":238},[1366],{"type":63,"value":1367}," 5s\n",{"type":58,"tag":225,"props":1369,"children":1371},{"class":227,"line":1370},30,[1372],{"type":58,"tag":225,"props":1373,"children":1374},{"emptyLinePlaceholder":1071},[1375],{"type":63,"value":1074},{"type":58,"tag":225,"props":1377,"children":1379},{"class":227,"line":1378},31,[1380,1385],{"type":58,"tag":225,"props":1381,"children":1382},{"style":822},[1383],{"type":63,"value":1384},"  airflow-init",{"type":58,"tag":225,"props":1386,"children":1387},{"style":629},[1388],{"type":63,"value":980},{"type":58,"tag":225,"props":1390,"children":1392},{"class":227,"line":1391},32,[1393,1398,1403],{"type":58,"tag":225,"props":1394,"children":1395},{"style":629},[1396],{"type":63,"value":1397},"    \u003C\u003C:",{"type":58,"tag":225,"props":1399,"children":1400},{"style":832},[1401],{"type":63,"value":1402}," *",{"type":58,"tag":225,"props":1404,"children":1406},{"style":1405},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1407],{"type":63,"value":840},{"type":58,"tag":225,"props":1409,"children":1411},{"class":227,"line":1410},33,[1412,1417,1421],{"type":58,"tag":225,"props":1413,"children":1414},{"style":822},[1415],{"type":63,"value":1416},"    entrypoint",{"type":58,"tag":225,"props":1418,"children":1419},{"style":629},[1420],{"type":63,"value":807},{"type":58,"tag":225,"props":1422,"children":1423},{"style":238},[1424],{"type":63,"value":1425}," \u002Fbin\u002Fbash\n",{"type":58,"tag":225,"props":1427,"children":1429},{"class":227,"line":1428},34,[1430,1435],{"type":58,"tag":225,"props":1431,"children":1432},{"style":822},[1433],{"type":63,"value":1434},"    command",{"type":58,"tag":225,"props":1436,"children":1437},{"style":629},[1438],{"type":63,"value":980},{"type":58,"tag":225,"props":1440,"children":1442},{"class":227,"line":1441},35,[1443,1447],{"type":58,"tag":225,"props":1444,"children":1445},{"style":629},[1446],{"type":63,"value":1205},{"type":58,"tag":225,"props":1448,"children":1449},{"style":238},[1450],{"type":63,"value":1451}," -c\n",{"type":58,"tag":225,"props":1453,"children":1455},{"class":227,"line":1454},36,[1456,1460],{"type":58,"tag":225,"props":1457,"children":1458},{"style":629},[1459],{"type":63,"value":1205},{"type":58,"tag":225,"props":1461,"children":1462},{"style":832},[1463],{"type":63,"value":1464}," |\n",{"type":58,"tag":225,"props":1466,"children":1468},{"class":227,"line":1467},37,[1469],{"type":58,"tag":225,"props":1470,"children":1471},{"style":238},[1472],{"type":63,"value":1473},"        airflow db migrate\n",{"type":58,"tag":225,"props":1475,"children":1477},{"class":227,"line":1476},38,[1478],{"type":58,"tag":225,"props":1479,"children":1480},{"style":238},[1481],{"type":63,"value":1482},"        airflow users create \\\n",{"type":58,"tag":225,"props":1484,"children":1486},{"class":227,"line":1485},39,[1487],{"type":58,"tag":225,"props":1488,"children":1489},{"style":238},[1490],{"type":63,"value":1491},"          --username admin \\\n",{"type":58,"tag":225,"props":1493,"children":1495},{"class":227,"line":1494},40,[1496],{"type":58,"tag":225,"props":1497,"children":1498},{"style":238},[1499],{"type":63,"value":1500},"          --firstname Admin \\\n",{"type":58,"tag":225,"props":1502,"children":1504},{"class":227,"line":1503},41,[1505],{"type":58,"tag":225,"props":1506,"children":1507},{"style":238},[1508],{"type":63,"value":1509},"          --lastname User \\\n",{"type":58,"tag":225,"props":1511,"children":1513},{"class":227,"line":1512},42,[1514],{"type":58,"tag":225,"props":1515,"children":1516},{"style":238},[1517],{"type":63,"value":1518},"          --role Admin \\\n",{"type":58,"tag":225,"props":1520,"children":1522},{"class":227,"line":1521},43,[1523],{"type":58,"tag":225,"props":1524,"children":1525},{"style":238},[1526],{"type":63,"value":1527},"          --email admin@example.com \\\n",{"type":58,"tag":225,"props":1529,"children":1531},{"class":227,"line":1530},44,[1532],{"type":58,"tag":225,"props":1533,"children":1534},{"style":238},[1535],{"type":63,"value":1536},"          --password admin\n",{"type":58,"tag":225,"props":1538,"children":1540},{"class":227,"line":1539},45,[1541,1546],{"type":58,"tag":225,"props":1542,"children":1543},{"style":822},[1544],{"type":63,"value":1545},"    depends_on",{"type":58,"tag":225,"props":1547,"children":1548},{"style":629},[1549],{"type":63,"value":980},{"type":58,"tag":225,"props":1551,"children":1553},{"class":227,"line":1552},46,[1554,1559],{"type":58,"tag":225,"props":1555,"children":1556},{"style":822},[1557],{"type":63,"value":1558},"      postgres",{"type":58,"tag":225,"props":1560,"children":1561},{"style":629},[1562],{"type":63,"value":980},{"type":58,"tag":225,"props":1564,"children":1566},{"class":227,"line":1565},47,[1567,1572,1576],{"type":58,"tag":225,"props":1568,"children":1569},{"style":822},[1570],{"type":63,"value":1571},"        condition",{"type":58,"tag":225,"props":1573,"children":1574},{"style":629},[1575],{"type":63,"value":807},{"type":58,"tag":225,"props":1577,"children":1578},{"style":238},[1579],{"type":63,"value":1064},{"type":58,"tag":225,"props":1581,"children":1583},{"class":227,"line":1582},48,[1584],{"type":58,"tag":225,"props":1585,"children":1586},{"emptyLinePlaceholder":1071},[1587],{"type":63,"value":1074},{"type":58,"tag":225,"props":1589,"children":1591},{"class":227,"line":1590},49,[1592,1597],{"type":58,"tag":225,"props":1593,"children":1594},{"style":822},[1595],{"type":63,"value":1596},"  airflow-apiserver",{"type":58,"tag":225,"props":1598,"children":1599},{"style":629},[1600],{"type":63,"value":980},{"type":58,"tag":225,"props":1602,"children":1604},{"class":227,"line":1603},50,[1605,1609,1613],{"type":58,"tag":225,"props":1606,"children":1607},{"style":629},[1608],{"type":63,"value":1397},{"type":58,"tag":225,"props":1610,"children":1611},{"style":832},[1612],{"type":63,"value":1402},{"type":58,"tag":225,"props":1614,"children":1615},{"style":1405},[1616],{"type":63,"value":840},{"type":58,"tag":225,"props":1618,"children":1620},{"class":227,"line":1619},51,[1621,1625,1629],{"type":58,"tag":225,"props":1622,"children":1623},{"style":822},[1624],{"type":63,"value":1434},{"type":58,"tag":225,"props":1626,"children":1627},{"style":629},[1628],{"type":63,"value":807},{"type":58,"tag":225,"props":1630,"children":1631},{"style":238},[1632],{"type":63,"value":1633}," airflow api-server\n",{"type":58,"tag":225,"props":1635,"children":1637},{"class":227,"line":1636},52,[1638,1643],{"type":58,"tag":225,"props":1639,"children":1640},{"style":822},[1641],{"type":63,"value":1642},"    ports",{"type":58,"tag":225,"props":1644,"children":1645},{"style":629},[1646],{"type":63,"value":980},{"type":58,"tag":225,"props":1648,"children":1650},{"class":227,"line":1649},53,[1651,1655,1659,1664],{"type":58,"tag":225,"props":1652,"children":1653},{"style":629},[1654],{"type":63,"value":1205},{"type":58,"tag":225,"props":1656,"children":1657},{"style":629},[1658],{"type":63,"value":1265},{"type":58,"tag":225,"props":1660,"children":1661},{"style":238},[1662],{"type":63,"value":1663},"8080:8080",{"type":58,"tag":225,"props":1665,"children":1666},{"style":629},[1667],{"type":63,"value":1668},"\"\n",{"type":58,"tag":225,"props":1670,"children":1672},{"class":227,"line":1671},54,[1673,1677],{"type":58,"tag":225,"props":1674,"children":1675},{"style":822},[1676],{"type":63,"value":1219},{"type":58,"tag":225,"props":1678,"children":1679},{"style":629},[1680],{"type":63,"value":980},{"type":58,"tag":225,"props":1682,"children":1683},{"class":227,"line":26},[1684,1688,1692,1696,1700,1704,1708,1712,1716,1720,1724,1728,1732,1737,1741,1745,1749,1754,1758],{"type":58,"tag":225,"props":1685,"children":1686},{"style":822},[1687],{"type":63,"value":1232},{"type":58,"tag":225,"props":1689,"children":1690},{"style":629},[1691],{"type":63,"value":807},{"type":58,"tag":225,"props":1693,"children":1694},{"style":629},[1695],{"type":63,"value":1241},{"type":58,"tag":225,"props":1697,"children":1698},{"style":629},[1699],{"type":63,"value":1246},{"type":58,"tag":225,"props":1701,"children":1702},{"style":238},[1703],{"type":63,"value":1251},{"type":58,"tag":225,"props":1705,"children":1706},{"style":629},[1707],{"type":63,"value":1246},{"type":58,"tag":225,"props":1709,"children":1710},{"style":629},[1711],{"type":63,"value":1260},{"type":58,"tag":225,"props":1713,"children":1714},{"style":629},[1715],{"type":63,"value":1265},{"type":58,"tag":225,"props":1717,"children":1718},{"style":238},[1719],{"type":63,"value":621},{"type":58,"tag":225,"props":1721,"children":1722},{"style":629},[1723],{"type":63,"value":1246},{"type":58,"tag":225,"props":1725,"children":1726},{"style":629},[1727],{"type":63,"value":1260},{"type":58,"tag":225,"props":1729,"children":1730},{"style":629},[1731],{"type":63,"value":1265},{"type":58,"tag":225,"props":1733,"children":1734},{"style":238},[1735],{"type":63,"value":1736},"--fail",{"type":58,"tag":225,"props":1738,"children":1739},{"style":629},[1740],{"type":63,"value":1246},{"type":58,"tag":225,"props":1742,"children":1743},{"style":629},[1744],{"type":63,"value":1260},{"type":58,"tag":225,"props":1746,"children":1747},{"style":629},[1748],{"type":63,"value":1265},{"type":58,"tag":225,"props":1750,"children":1751},{"style":238},[1752],{"type":63,"value":1753},"http:\u002F\u002Flocalhost:8080\u002Fhealth",{"type":58,"tag":225,"props":1755,"children":1756},{"style":629},[1757],{"type":63,"value":1246},{"type":58,"tag":225,"props":1759,"children":1760},{"style":629},[1761],{"type":63,"value":1312},{"type":58,"tag":225,"props":1763,"children":1765},{"class":227,"line":1764},56,[1766,1770,1774],{"type":58,"tag":225,"props":1767,"children":1768},{"style":822},[1769],{"type":63,"value":1321},{"type":58,"tag":225,"props":1771,"children":1772},{"style":629},[1773],{"type":63,"value":807},{"type":58,"tag":225,"props":1775,"children":1776},{"style":238},[1777],{"type":63,"value":1778}," 30s\n",{"type":58,"tag":225,"props":1780,"children":1782},{"class":227,"line":1781},57,[1783,1788,1792],{"type":58,"tag":225,"props":1784,"children":1785},{"style":822},[1786],{"type":63,"value":1787},"      timeout",{"type":58,"tag":225,"props":1789,"children":1790},{"style":629},[1791],{"type":63,"value":807},{"type":58,"tag":225,"props":1793,"children":1794},{"style":238},[1795],{"type":63,"value":1330},{"type":58,"tag":225,"props":1797,"children":1799},{"class":227,"line":1798},58,[1800,1804,1808],{"type":58,"tag":225,"props":1801,"children":1802},{"style":822},[1803],{"type":63,"value":1339},{"type":58,"tag":225,"props":1805,"children":1806},{"style":629},[1807],{"type":63,"value":807},{"type":58,"tag":225,"props":1809,"children":1810},{"style":1346},[1811],{"type":63,"value":1349},{"type":58,"tag":225,"props":1813,"children":1815},{"class":227,"line":1814},59,[1816,1820,1824],{"type":58,"tag":225,"props":1817,"children":1818},{"style":822},[1819],{"type":63,"value":1358},{"type":58,"tag":225,"props":1821,"children":1822},{"style":629},[1823],{"type":63,"value":807},{"type":58,"tag":225,"props":1825,"children":1826},{"style":238},[1827],{"type":63,"value":1778},{"type":58,"tag":225,"props":1829,"children":1831},{"class":227,"line":1830},60,[1832],{"type":58,"tag":225,"props":1833,"children":1834},{"emptyLinePlaceholder":1071},[1835],{"type":63,"value":1074},{"type":58,"tag":225,"props":1837,"children":1839},{"class":227,"line":1838},61,[1840,1845],{"type":58,"tag":225,"props":1841,"children":1842},{"style":822},[1843],{"type":63,"value":1844},"  airflow-scheduler",{"type":58,"tag":225,"props":1846,"children":1847},{"style":629},[1848],{"type":63,"value":980},{"type":58,"tag":225,"props":1850,"children":1852},{"class":227,"line":1851},62,[1853,1857,1861],{"type":58,"tag":225,"props":1854,"children":1855},{"style":629},[1856],{"type":63,"value":1397},{"type":58,"tag":225,"props":1858,"children":1859},{"style":832},[1860],{"type":63,"value":1402},{"type":58,"tag":225,"props":1862,"children":1863},{"style":1405},[1864],{"type":63,"value":840},{"type":58,"tag":225,"props":1866,"children":1868},{"class":227,"line":1867},63,[1869,1873,1877],{"type":58,"tag":225,"props":1870,"children":1871},{"style":822},[1872],{"type":63,"value":1434},{"type":58,"tag":225,"props":1874,"children":1875},{"style":629},[1876],{"type":63,"value":807},{"type":58,"tag":225,"props":1878,"children":1879},{"style":238},[1880],{"type":63,"value":1881}," airflow scheduler\n",{"type":58,"tag":225,"props":1883,"children":1885},{"class":227,"line":1884},64,[1886],{"type":58,"tag":225,"props":1887,"children":1888},{"emptyLinePlaceholder":1071},[1889],{"type":63,"value":1074},{"type":58,"tag":225,"props":1891,"children":1893},{"class":227,"line":1892},65,[1894,1899],{"type":58,"tag":225,"props":1895,"children":1896},{"style":822},[1897],{"type":63,"value":1898},"  airflow-dag-processor",{"type":58,"tag":225,"props":1900,"children":1901},{"style":629},[1902],{"type":63,"value":980},{"type":58,"tag":225,"props":1904,"children":1906},{"class":227,"line":1905},66,[1907,1911,1915],{"type":58,"tag":225,"props":1908,"children":1909},{"style":629},[1910],{"type":63,"value":1397},{"type":58,"tag":225,"props":1912,"children":1913},{"style":832},[1914],{"type":63,"value":1402},{"type":58,"tag":225,"props":1916,"children":1917},{"style":1405},[1918],{"type":63,"value":840},{"type":58,"tag":225,"props":1920,"children":1922},{"class":227,"line":1921},67,[1923,1927,1931],{"type":58,"tag":225,"props":1924,"children":1925},{"style":822},[1926],{"type":63,"value":1434},{"type":58,"tag":225,"props":1928,"children":1929},{"style":629},[1930],{"type":63,"value":807},{"type":58,"tag":225,"props":1932,"children":1933},{"style":238},[1934],{"type":63,"value":1935}," airflow dag-processor\n",{"type":58,"tag":225,"props":1937,"children":1939},{"class":227,"line":1938},68,[1940],{"type":58,"tag":225,"props":1941,"children":1942},{"emptyLinePlaceholder":1071},[1943],{"type":63,"value":1074},{"type":58,"tag":225,"props":1945,"children":1947},{"class":227,"line":1946},69,[1948,1953],{"type":58,"tag":225,"props":1949,"children":1950},{"style":822},[1951],{"type":63,"value":1952},"  airflow-triggerer",{"type":58,"tag":225,"props":1954,"children":1955},{"style":629},[1956],{"type":63,"value":980},{"type":58,"tag":225,"props":1958,"children":1960},{"class":227,"line":1959},70,[1961,1965,1969],{"type":58,"tag":225,"props":1962,"children":1963},{"style":629},[1964],{"type":63,"value":1397},{"type":58,"tag":225,"props":1966,"children":1967},{"style":832},[1968],{"type":63,"value":1402},{"type":58,"tag":225,"props":1970,"children":1971},{"style":1405},[1972],{"type":63,"value":840},{"type":58,"tag":225,"props":1974,"children":1976},{"class":227,"line":1975},71,[1977,1981,1985],{"type":58,"tag":225,"props":1978,"children":1979},{"style":822},[1980],{"type":63,"value":1434},{"type":58,"tag":225,"props":1982,"children":1983},{"style":629},[1984],{"type":63,"value":807},{"type":58,"tag":225,"props":1986,"children":1987},{"style":238},[1988],{"type":63,"value":1989}," airflow triggerer\n",{"type":58,"tag":225,"props":1991,"children":1993},{"class":227,"line":1992},72,[1994],{"type":58,"tag":225,"props":1995,"children":1996},{"emptyLinePlaceholder":1071},[1997],{"type":63,"value":1074},{"type":58,"tag":225,"props":1999,"children":2001},{"class":227,"line":2000},73,[2002,2007],{"type":58,"tag":225,"props":2003,"children":2004},{"style":822},[2005],{"type":63,"value":2006},"volumes",{"type":58,"tag":225,"props":2008,"children":2009},{"style":629},[2010],{"type":63,"value":980},{"type":58,"tag":225,"props":2012,"children":2014},{"class":227,"line":2013},74,[2015,2020],{"type":58,"tag":225,"props":2016,"children":2017},{"style":822},[2018],{"type":63,"value":2019},"  postgres-db-volume",{"type":58,"tag":225,"props":2021,"children":2022},{"style":629},[2023],{"type":63,"value":980},{"type":58,"tag":2025,"props":2026,"children":2027},"blockquote",{},[2028],{"type":58,"tag":66,"props":2029,"children":2030},{},[2031,2036,2038,2043,2045,2051,2053,2058],{"type":58,"tag":75,"props":2032,"children":2033},{},[2034],{"type":63,"value":2035},"Airflow 3 architecture note",{"type":63,"value":2037},": The webserver has been replaced by the ",{"type":58,"tag":75,"props":2039,"children":2040},{},[2041],{"type":63,"value":2042},"API server",{"type":63,"value":2044}," (",{"type":58,"tag":140,"props":2046,"children":2048},{"className":2047},[],[2049],{"type":63,"value":2050},"airflow api-server",{"type":63,"value":2052},"), and the ",{"type":58,"tag":75,"props":2054,"children":2055},{},[2056],{"type":63,"value":2057},"DAG processor",{"type":63,"value":2059}," now runs as a standalone process separate from the scheduler.",{"type":58,"tag":99,"props":2061,"children":2063},{"id":2062},"common-operations",[2064],{"type":63,"value":2065},"Common Operations",{"type":58,"tag":214,"props":2067,"children":2069},{"className":216,"code":2068,"language":218,"meta":219,"style":219},"# Start all services\ndocker compose up -d\n\n# Stop all services\ndocker compose down\n\n# View logs\ndocker compose logs -f airflow-scheduler\n\n# Restart after requirements change\ndocker compose down && docker compose up -d --build\n\n# Run a one-off Airflow CLI command\ndocker compose exec airflow-apiserver airflow dags list\n",[2070],{"type":58,"tag":140,"props":2071,"children":2072},{"__ignoreMap":219},[2073,2081,2104,2111,2119,2135,2142,2150,2176,2183,2191,2235,2242,2250],{"type":58,"tag":225,"props":2074,"children":2075},{"class":227,"line":228},[2076],{"type":58,"tag":225,"props":2077,"children":2078},{"style":861},[2079],{"type":63,"value":2080},"# Start all services\n",{"type":58,"tag":225,"props":2082,"children":2083},{"class":227,"line":843},[2084,2089,2094,2099],{"type":58,"tag":225,"props":2085,"children":2086},{"style":232},[2087],{"type":63,"value":2088},"docker",{"type":58,"tag":225,"props":2090,"children":2091},{"style":238},[2092],{"type":63,"value":2093}," compose",{"type":58,"tag":225,"props":2095,"children":2096},{"style":238},[2097],{"type":63,"value":2098}," up",{"type":58,"tag":225,"props":2100,"children":2101},{"style":238},[2102],{"type":63,"value":2103}," -d\n",{"type":58,"tag":225,"props":2105,"children":2106},{"class":227,"line":867},[2107],{"type":58,"tag":225,"props":2108,"children":2109},{"emptyLinePlaceholder":1071},[2110],{"type":63,"value":1074},{"type":58,"tag":225,"props":2112,"children":2113},{"class":227,"line":889},[2114],{"type":58,"tag":225,"props":2115,"children":2116},{"style":861},[2117],{"type":63,"value":2118},"# Stop all services\n",{"type":58,"tag":225,"props":2120,"children":2121},{"class":227,"line":907},[2122,2126,2130],{"type":58,"tag":225,"props":2123,"children":2124},{"style":232},[2125],{"type":63,"value":2088},{"type":58,"tag":225,"props":2127,"children":2128},{"style":238},[2129],{"type":63,"value":2093},{"type":58,"tag":225,"props":2131,"children":2132},{"style":238},[2133],{"type":63,"value":2134}," down\n",{"type":58,"tag":225,"props":2136,"children":2137},{"class":227,"line":925},[2138],{"type":58,"tag":225,"props":2139,"children":2140},{"emptyLinePlaceholder":1071},[2141],{"type":63,"value":1074},{"type":58,"tag":225,"props":2143,"children":2144},{"class":227,"line":951},[2145],{"type":58,"tag":225,"props":2146,"children":2147},{"style":861},[2148],{"type":63,"value":2149},"# View logs\n",{"type":58,"tag":225,"props":2151,"children":2152},{"class":227,"line":969},[2153,2157,2161,2166,2171],{"type":58,"tag":225,"props":2154,"children":2155},{"style":232},[2156],{"type":63,"value":2088},{"type":58,"tag":225,"props":2158,"children":2159},{"style":238},[2160],{"type":63,"value":2093},{"type":58,"tag":225,"props":2162,"children":2163},{"style":238},[2164],{"type":63,"value":2165}," logs",{"type":58,"tag":225,"props":2167,"children":2168},{"style":238},[2169],{"type":63,"value":2170}," -f",{"type":58,"tag":225,"props":2172,"children":2173},{"style":238},[2174],{"type":63,"value":2175}," airflow-scheduler\n",{"type":58,"tag":225,"props":2177,"children":2178},{"class":227,"line":983},[2179],{"type":58,"tag":225,"props":2180,"children":2181},{"emptyLinePlaceholder":1071},[2182],{"type":63,"value":1074},{"type":58,"tag":225,"props":2184,"children":2185},{"class":227,"line":997},[2186],{"type":58,"tag":225,"props":2187,"children":2188},{"style":861},[2189],{"type":63,"value":2190},"# Restart after requirements change\n",{"type":58,"tag":225,"props":2192,"children":2193},{"class":227,"line":1010},[2194,2198,2202,2207,2212,2217,2221,2225,2230],{"type":58,"tag":225,"props":2195,"children":2196},{"style":232},[2197],{"type":63,"value":2088},{"type":58,"tag":225,"props":2199,"children":2200},{"style":238},[2201],{"type":63,"value":2093},{"type":58,"tag":225,"props":2203,"children":2204},{"style":238},[2205],{"type":63,"value":2206}," down",{"type":58,"tag":225,"props":2208,"children":2209},{"style":629},[2210],{"type":63,"value":2211}," &&",{"type":58,"tag":225,"props":2213,"children":2214},{"style":232},[2215],{"type":63,"value":2216}," docker",{"type":58,"tag":225,"props":2218,"children":2219},{"style":238},[2220],{"type":63,"value":2093},{"type":58,"tag":225,"props":2222,"children":2223},{"style":238},[2224],{"type":63,"value":2098},{"type":58,"tag":225,"props":2226,"children":2227},{"style":238},[2228],{"type":63,"value":2229}," -d",{"type":58,"tag":225,"props":2231,"children":2232},{"style":238},[2233],{"type":63,"value":2234}," --build\n",{"type":58,"tag":225,"props":2236,"children":2237},{"class":227,"line":1023},[2238],{"type":58,"tag":225,"props":2239,"children":2240},{"emptyLinePlaceholder":1071},[2241],{"type":63,"value":1074},{"type":58,"tag":225,"props":2243,"children":2244},{"class":227,"line":1036},[2245],{"type":58,"tag":225,"props":2246,"children":2247},{"style":861},[2248],{"type":63,"value":2249},"# Run a one-off Airflow CLI command\n",{"type":58,"tag":225,"props":2251,"children":2252},{"class":227,"line":1049},[2253,2257,2261,2266,2271,2276,2281],{"type":58,"tag":225,"props":2254,"children":2255},{"style":232},[2256],{"type":63,"value":2088},{"type":58,"tag":225,"props":2258,"children":2259},{"style":238},[2260],{"type":63,"value":2093},{"type":58,"tag":225,"props":2262,"children":2263},{"style":238},[2264],{"type":63,"value":2265}," exec",{"type":58,"tag":225,"props":2267,"children":2268},{"style":238},[2269],{"type":63,"value":2270}," airflow-apiserver",{"type":58,"tag":225,"props":2272,"children":2273},{"style":238},[2274],{"type":63,"value":2275}," airflow",{"type":58,"tag":225,"props":2277,"children":2278},{"style":238},[2279],{"type":63,"value":2280}," dags",{"type":58,"tag":225,"props":2282,"children":2283},{"style":238},[2284],{"type":63,"value":2285}," list\n",{"type":58,"tag":99,"props":2287,"children":2289},{"id":2288},"installing-python-packages",[2290],{"type":63,"value":2291},"Installing Python Packages",{"type":58,"tag":66,"props":2293,"children":2294},{},[2295,2297,2302],{"type":63,"value":2296},"Add packages to ",{"type":58,"tag":140,"props":2298,"children":2300},{"className":2299},[],[2301],{"type":63,"value":252},{"type":63,"value":2303}," and rebuild:",{"type":58,"tag":214,"props":2305,"children":2307},{"className":216,"code":2306,"language":218,"meta":219,"style":219},"# Add to requirements.txt, then:\ndocker compose down\ndocker compose up -d --build\n",[2308],{"type":58,"tag":140,"props":2309,"children":2310},{"__ignoreMap":219},[2311,2319,2334],{"type":58,"tag":225,"props":2312,"children":2313},{"class":227,"line":228},[2314],{"type":58,"tag":225,"props":2315,"children":2316},{"style":861},[2317],{"type":63,"value":2318},"# Add to requirements.txt, then:\n",{"type":58,"tag":225,"props":2320,"children":2321},{"class":227,"line":843},[2322,2326,2330],{"type":58,"tag":225,"props":2323,"children":2324},{"style":232},[2325],{"type":63,"value":2088},{"type":58,"tag":225,"props":2327,"children":2328},{"style":238},[2329],{"type":63,"value":2093},{"type":58,"tag":225,"props":2331,"children":2332},{"style":238},[2333],{"type":63,"value":2134},{"type":58,"tag":225,"props":2335,"children":2336},{"class":227,"line":867},[2337,2341,2345,2349,2353],{"type":58,"tag":225,"props":2338,"children":2339},{"style":232},[2340],{"type":63,"value":2088},{"type":58,"tag":225,"props":2342,"children":2343},{"style":238},[2344],{"type":63,"value":2093},{"type":58,"tag":225,"props":2346,"children":2347},{"style":238},[2348],{"type":63,"value":2098},{"type":58,"tag":225,"props":2350,"children":2351},{"style":238},[2352],{"type":63,"value":2229},{"type":58,"tag":225,"props":2354,"children":2355},{"style":238},[2356],{"type":63,"value":2234},{"type":58,"tag":66,"props":2358,"children":2359},{},[2360],{"type":63,"value":2361},"Or use a custom Dockerfile:",{"type":58,"tag":214,"props":2363,"children":2367},{"className":2364,"code":2365,"language":2366,"meta":219,"style":219},"language-dockerfile shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","FROM apache\u002Fairflow:3  # Pin to a specific version (e.g., 3.1.7) for reproducibility\nCOPY requirements.txt .\nRUN pip install --no-cache-dir -r requirements.txt\n","dockerfile",[2368],{"type":58,"tag":140,"props":2369,"children":2370},{"__ignoreMap":219},[2371,2379,2387],{"type":58,"tag":225,"props":2372,"children":2373},{"class":227,"line":228},[2374],{"type":58,"tag":225,"props":2375,"children":2376},{},[2377],{"type":63,"value":2378},"FROM apache\u002Fairflow:3  # Pin to a specific version (e.g., 3.1.7) for reproducibility\n",{"type":58,"tag":225,"props":2380,"children":2381},{"class":227,"line":843},[2382],{"type":58,"tag":225,"props":2383,"children":2384},{},[2385],{"type":63,"value":2386},"COPY requirements.txt .\n",{"type":58,"tag":225,"props":2388,"children":2389},{"class":227,"line":867},[2390],{"type":58,"tag":225,"props":2391,"children":2392},{},[2393],{"type":63,"value":2394},"RUN pip install --no-cache-dir -r requirements.txt\n",{"type":58,"tag":66,"props":2396,"children":2397},{},[2398,2400,2405],{"type":63,"value":2399},"Update ",{"type":58,"tag":140,"props":2401,"children":2403},{"className":2402},[],[2404],{"type":63,"value":805},{"type":63,"value":2406}," to build from the Dockerfile:",{"type":58,"tag":214,"props":2408,"children":2410},{"className":810,"code":2409,"language":812,"meta":219,"style":219},"x-airflow-common: &airflow-common\n  build:\n    context: .\n    dockerfile: Dockerfile\n  # ... rest of config\n",[2411],{"type":58,"tag":140,"props":2412,"children":2413},{"__ignoreMap":219},[2414,2433,2445,2462,2479],{"type":58,"tag":225,"props":2415,"children":2416},{"class":227,"line":228},[2417,2421,2425,2429],{"type":58,"tag":225,"props":2418,"children":2419},{"style":822},[2420],{"type":63,"value":825},{"type":58,"tag":225,"props":2422,"children":2423},{"style":629},[2424],{"type":63,"value":807},{"type":58,"tag":225,"props":2426,"children":2427},{"style":832},[2428],{"type":63,"value":835},{"type":58,"tag":225,"props":2430,"children":2431},{"style":232},[2432],{"type":63,"value":840},{"type":58,"tag":225,"props":2434,"children":2435},{"class":227,"line":843},[2436,2441],{"type":58,"tag":225,"props":2437,"children":2438},{"style":822},[2439],{"type":63,"value":2440},"  build",{"type":58,"tag":225,"props":2442,"children":2443},{"style":629},[2444],{"type":63,"value":980},{"type":58,"tag":225,"props":2446,"children":2447},{"class":227,"line":867},[2448,2453,2457],{"type":58,"tag":225,"props":2449,"children":2450},{"style":822},[2451],{"type":63,"value":2452},"    context",{"type":58,"tag":225,"props":2454,"children":2455},{"style":629},[2456],{"type":63,"value":807},{"type":58,"tag":225,"props":2458,"children":2459},{"style":1346},[2460],{"type":63,"value":2461}," .\n",{"type":58,"tag":225,"props":2463,"children":2464},{"class":227,"line":889},[2465,2470,2474],{"type":58,"tag":225,"props":2466,"children":2467},{"style":822},[2468],{"type":63,"value":2469},"    dockerfile",{"type":58,"tag":225,"props":2471,"children":2472},{"style":629},[2473],{"type":63,"value":807},{"type":58,"tag":225,"props":2475,"children":2476},{"style":238},[2477],{"type":63,"value":2478}," Dockerfile\n",{"type":58,"tag":225,"props":2480,"children":2481},{"class":227,"line":907},[2482],{"type":58,"tag":225,"props":2483,"children":2484},{"style":861},[2485],{"type":63,"value":2486},"  # ... rest of config\n",{"type":58,"tag":99,"props":2488,"children":2490},{"id":2489},"environment-variables",[2491],{"type":63,"value":2492},"Environment Variables",{"type":58,"tag":66,"props":2494,"children":2495},{},[2496,2498,2503],{"type":63,"value":2497},"Configure Airflow settings via environment variables in ",{"type":58,"tag":140,"props":2499,"children":2501},{"className":2500},[],[2502],{"type":63,"value":805},{"type":63,"value":807},{"type":58,"tag":214,"props":2505,"children":2507},{"className":810,"code":2506,"language":812,"meta":219,"style":219},"environment:\n  # Core settings\n  AIRFLOW__CORE__EXECUTOR: LocalExecutor\n  AIRFLOW__CORE__PARALLELISM: 32\n  AIRFLOW__CORE__MAX_ACTIVE_TASKS_PER_DAG: 16\n\n  # Email\n  AIRFLOW__EMAIL__EMAIL_BACKEND: airflow.utils.email.send_email_smtp\n  AIRFLOW__SMTP__SMTP_HOST: smtp.example.com\n\n  # Connections (as URI)\n  AIRFLOW_CONN_MY_DB: postgresql:\u002F\u002Fuser:pass@host:5432\u002Fdb\n",[2508],{"type":58,"tag":140,"props":2509,"children":2510},{"__ignoreMap":219},[2511,2523,2531,2547,2564,2581,2588,2596,2613,2630,2637,2645],{"type":58,"tag":225,"props":2512,"children":2513},{"class":227,"line":228},[2514,2519],{"type":58,"tag":225,"props":2515,"children":2516},{"style":822},[2517],{"type":63,"value":2518},"environment",{"type":58,"tag":225,"props":2520,"children":2521},{"style":629},[2522],{"type":63,"value":980},{"type":58,"tag":225,"props":2524,"children":2525},{"class":227,"line":843},[2526],{"type":58,"tag":225,"props":2527,"children":2528},{"style":861},[2529],{"type":63,"value":2530},"  # Core settings\n",{"type":58,"tag":225,"props":2532,"children":2533},{"class":227,"line":867},[2534,2539,2543],{"type":58,"tag":225,"props":2535,"children":2536},{"style":822},[2537],{"type":63,"value":2538},"  AIRFLOW__CORE__EXECUTOR",{"type":58,"tag":225,"props":2540,"children":2541},{"style":629},[2542],{"type":63,"value":807},{"type":58,"tag":225,"props":2544,"children":2545},{"style":238},[2546],{"type":63,"value":904},{"type":58,"tag":225,"props":2548,"children":2549},{"class":227,"line":889},[2550,2555,2559],{"type":58,"tag":225,"props":2551,"children":2552},{"style":822},[2553],{"type":63,"value":2554},"  AIRFLOW__CORE__PARALLELISM",{"type":58,"tag":225,"props":2556,"children":2557},{"style":629},[2558],{"type":63,"value":807},{"type":58,"tag":225,"props":2560,"children":2561},{"style":1346},[2562],{"type":63,"value":2563}," 32\n",{"type":58,"tag":225,"props":2565,"children":2566},{"class":227,"line":907},[2567,2572,2576],{"type":58,"tag":225,"props":2568,"children":2569},{"style":822},[2570],{"type":63,"value":2571},"  AIRFLOW__CORE__MAX_ACTIVE_TASKS_PER_DAG",{"type":58,"tag":225,"props":2573,"children":2574},{"style":629},[2575],{"type":63,"value":807},{"type":58,"tag":225,"props":2577,"children":2578},{"style":1346},[2579],{"type":63,"value":2580}," 16\n",{"type":58,"tag":225,"props":2582,"children":2583},{"class":227,"line":925},[2584],{"type":58,"tag":225,"props":2585,"children":2586},{"emptyLinePlaceholder":1071},[2587],{"type":63,"value":1074},{"type":58,"tag":225,"props":2589,"children":2590},{"class":227,"line":951},[2591],{"type":58,"tag":225,"props":2592,"children":2593},{"style":861},[2594],{"type":63,"value":2595},"  # Email\n",{"type":58,"tag":225,"props":2597,"children":2598},{"class":227,"line":969},[2599,2604,2608],{"type":58,"tag":225,"props":2600,"children":2601},{"style":822},[2602],{"type":63,"value":2603},"  AIRFLOW__EMAIL__EMAIL_BACKEND",{"type":58,"tag":225,"props":2605,"children":2606},{"style":629},[2607],{"type":63,"value":807},{"type":58,"tag":225,"props":2609,"children":2610},{"style":238},[2611],{"type":63,"value":2612}," airflow.utils.email.send_email_smtp\n",{"type":58,"tag":225,"props":2614,"children":2615},{"class":227,"line":983},[2616,2621,2625],{"type":58,"tag":225,"props":2617,"children":2618},{"style":822},[2619],{"type":63,"value":2620},"  AIRFLOW__SMTP__SMTP_HOST",{"type":58,"tag":225,"props":2622,"children":2623},{"style":629},[2624],{"type":63,"value":807},{"type":58,"tag":225,"props":2626,"children":2627},{"style":238},[2628],{"type":63,"value":2629}," smtp.example.com\n",{"type":58,"tag":225,"props":2631,"children":2632},{"class":227,"line":997},[2633],{"type":58,"tag":225,"props":2634,"children":2635},{"emptyLinePlaceholder":1071},[2636],{"type":63,"value":1074},{"type":58,"tag":225,"props":2638,"children":2639},{"class":227,"line":1010},[2640],{"type":58,"tag":225,"props":2641,"children":2642},{"style":861},[2643],{"type":63,"value":2644},"  # Connections (as URI)\n",{"type":58,"tag":225,"props":2646,"children":2647},{"class":227,"line":1023},[2648,2653,2657],{"type":58,"tag":225,"props":2649,"children":2650},{"style":822},[2651],{"type":63,"value":2652},"  AIRFLOW_CONN_MY_DB",{"type":58,"tag":225,"props":2654,"children":2655},{"style":629},[2656],{"type":63,"value":807},{"type":58,"tag":225,"props":2658,"children":2659},{"style":238},[2660],{"type":63,"value":2661}," postgresql:\u002F\u002Fuser:pass@host:5432\u002Fdb\n",{"type":58,"tag":83,"props":2663,"children":2664},{},[],{"type":58,"tag":87,"props":2666,"children":2668},{"id":2667},"open-source-kubernetes-helm-chart",[2669],{"type":63,"value":2670},"Open-Source: Kubernetes (Helm Chart)",{"type":58,"tag":66,"props":2672,"children":2673},{},[2674],{"type":63,"value":2675},"Deploy Airflow on Kubernetes using the official Apache Airflow Helm chart.",{"type":58,"tag":99,"props":2677,"children":2679},{"id":2678},"prerequisites-1",[2680],{"type":63,"value":574},{"type":58,"tag":403,"props":2682,"children":2683},{},[2684,2689,2700],{"type":58,"tag":407,"props":2685,"children":2686},{},[2687],{"type":63,"value":2688},"A Kubernetes cluster",{"type":58,"tag":407,"props":2690,"children":2691},{},[2692,2698],{"type":58,"tag":140,"props":2693,"children":2695},{"className":2694},[],[2696],{"type":63,"value":2697},"kubectl",{"type":63,"value":2699}," configured",{"type":58,"tag":407,"props":2701,"children":2702},{},[2703,2709],{"type":58,"tag":140,"props":2704,"children":2706},{"className":2705},[],[2707],{"type":63,"value":2708},"helm",{"type":63,"value":2710}," installed",{"type":58,"tag":99,"props":2712,"children":2714},{"id":2713},"installation",[2715],{"type":63,"value":2716},"Installation",{"type":58,"tag":214,"props":2718,"children":2720},{"className":216,"code":2719,"language":218,"meta":219,"style":219},"# Add the Airflow Helm repo\nhelm repo add apache-airflow https:\u002F\u002Fairflow.apache.org\nhelm repo update\n\n# Install with default values\nhelm install airflow apache-airflow\u002Fairflow \\\n  --namespace airflow \\\n  --create-namespace\n\n# Install with custom values\nhelm install airflow apache-airflow\u002Fairflow \\\n  --namespace airflow \\\n  --create-namespace \\\n  -f values.yaml\n",[2721],{"type":58,"tag":140,"props":2722,"children":2723},{"__ignoreMap":219},[2724,2732,2759,2775,2782,2790,2816,2832,2840,2847,2855,2878,2893,2905],{"type":58,"tag":225,"props":2725,"children":2726},{"class":227,"line":228},[2727],{"type":58,"tag":225,"props":2728,"children":2729},{"style":861},[2730],{"type":63,"value":2731},"# Add the Airflow Helm repo\n",{"type":58,"tag":225,"props":2733,"children":2734},{"class":227,"line":843},[2735,2739,2744,2749,2754],{"type":58,"tag":225,"props":2736,"children":2737},{"style":232},[2738],{"type":63,"value":2708},{"type":58,"tag":225,"props":2740,"children":2741},{"style":238},[2742],{"type":63,"value":2743}," repo",{"type":58,"tag":225,"props":2745,"children":2746},{"style":238},[2747],{"type":63,"value":2748}," add",{"type":58,"tag":225,"props":2750,"children":2751},{"style":238},[2752],{"type":63,"value":2753}," apache-airflow",{"type":58,"tag":225,"props":2755,"children":2756},{"style":238},[2757],{"type":63,"value":2758}," https:\u002F\u002Fairflow.apache.org\n",{"type":58,"tag":225,"props":2760,"children":2761},{"class":227,"line":867},[2762,2766,2770],{"type":58,"tag":225,"props":2763,"children":2764},{"style":232},[2765],{"type":63,"value":2708},{"type":58,"tag":225,"props":2767,"children":2768},{"style":238},[2769],{"type":63,"value":2743},{"type":58,"tag":225,"props":2771,"children":2772},{"style":238},[2773],{"type":63,"value":2774}," update\n",{"type":58,"tag":225,"props":2776,"children":2777},{"class":227,"line":889},[2778],{"type":58,"tag":225,"props":2779,"children":2780},{"emptyLinePlaceholder":1071},[2781],{"type":63,"value":1074},{"type":58,"tag":225,"props":2783,"children":2784},{"class":227,"line":907},[2785],{"type":58,"tag":225,"props":2786,"children":2787},{"style":861},[2788],{"type":63,"value":2789},"# Install with default values\n",{"type":58,"tag":225,"props":2791,"children":2792},{"class":227,"line":925},[2793,2797,2802,2806,2811],{"type":58,"tag":225,"props":2794,"children":2795},{"style":232},[2796],{"type":63,"value":2708},{"type":58,"tag":225,"props":2798,"children":2799},{"style":238},[2800],{"type":63,"value":2801}," install",{"type":58,"tag":225,"props":2803,"children":2804},{"style":238},[2805],{"type":63,"value":2275},{"type":58,"tag":225,"props":2807,"children":2808},{"style":238},[2809],{"type":63,"value":2810}," apache-airflow\u002Fairflow",{"type":58,"tag":225,"props":2812,"children":2813},{"style":1405},[2814],{"type":63,"value":2815}," \\\n",{"type":58,"tag":225,"props":2817,"children":2818},{"class":227,"line":951},[2819,2824,2828],{"type":58,"tag":225,"props":2820,"children":2821},{"style":238},[2822],{"type":63,"value":2823},"  --namespace",{"type":58,"tag":225,"props":2825,"children":2826},{"style":238},[2827],{"type":63,"value":2275},{"type":58,"tag":225,"props":2829,"children":2830},{"style":1405},[2831],{"type":63,"value":2815},{"type":58,"tag":225,"props":2833,"children":2834},{"class":227,"line":969},[2835],{"type":58,"tag":225,"props":2836,"children":2837},{"style":238},[2838],{"type":63,"value":2839},"  --create-namespace\n",{"type":58,"tag":225,"props":2841,"children":2842},{"class":227,"line":983},[2843],{"type":58,"tag":225,"props":2844,"children":2845},{"emptyLinePlaceholder":1071},[2846],{"type":63,"value":1074},{"type":58,"tag":225,"props":2848,"children":2849},{"class":227,"line":997},[2850],{"type":58,"tag":225,"props":2851,"children":2852},{"style":861},[2853],{"type":63,"value":2854},"# Install with custom values\n",{"type":58,"tag":225,"props":2856,"children":2857},{"class":227,"line":1010},[2858,2862,2866,2870,2874],{"type":58,"tag":225,"props":2859,"children":2860},{"style":232},[2861],{"type":63,"value":2708},{"type":58,"tag":225,"props":2863,"children":2864},{"style":238},[2865],{"type":63,"value":2801},{"type":58,"tag":225,"props":2867,"children":2868},{"style":238},[2869],{"type":63,"value":2275},{"type":58,"tag":225,"props":2871,"children":2872},{"style":238},[2873],{"type":63,"value":2810},{"type":58,"tag":225,"props":2875,"children":2876},{"style":1405},[2877],{"type":63,"value":2815},{"type":58,"tag":225,"props":2879,"children":2880},{"class":227,"line":1023},[2881,2885,2889],{"type":58,"tag":225,"props":2882,"children":2883},{"style":238},[2884],{"type":63,"value":2823},{"type":58,"tag":225,"props":2886,"children":2887},{"style":238},[2888],{"type":63,"value":2275},{"type":58,"tag":225,"props":2890,"children":2891},{"style":1405},[2892],{"type":63,"value":2815},{"type":58,"tag":225,"props":2894,"children":2895},{"class":227,"line":1036},[2896,2901],{"type":58,"tag":225,"props":2897,"children":2898},{"style":238},[2899],{"type":63,"value":2900},"  --create-namespace",{"type":58,"tag":225,"props":2902,"children":2903},{"style":1405},[2904],{"type":63,"value":2815},{"type":58,"tag":225,"props":2906,"children":2907},{"class":227,"line":1049},[2908,2913],{"type":58,"tag":225,"props":2909,"children":2910},{"style":238},[2911],{"type":63,"value":2912},"  -f",{"type":58,"tag":225,"props":2914,"children":2915},{"style":238},[2916],{"type":63,"value":2917}," values.yaml\n",{"type":58,"tag":99,"props":2919,"children":2921},{"id":2920},"key-valuesyaml-configuration",[2922],{"type":63,"value":2923},"Key values.yaml Configuration",{"type":58,"tag":214,"props":2925,"children":2927},{"className":810,"code":2926,"language":812,"meta":219,"style":219},"# Executor type\nexecutor: KubernetesExecutor  # or CeleryExecutor, LocalExecutor\n\n# Airflow image (pin to your desired version)\ndefaultAirflowRepository: apache\u002Fairflow\ndefaultAirflowTag: \"3\"  # Or pin: \"3.1.7\"\n\n# Git-sync for DAGs (recommended for production)\ndags:\n  gitSync:\n    enabled: true\n    repo: https:\u002F\u002Fgithub.com\u002Fyour-org\u002Fyour-dags.git\n    branch: main\n    subPath: dags\n    wait: 60  # seconds between syncs\n\n# API server (replaces webserver in Airflow 3)\napiServer:\n  resources:\n    requests:\n      cpu: \"250m\"\n      memory: \"512Mi\"\n    limits:\n      cpu: \"500m\"\n      memory: \"1Gi\"\n  replicas: 1\n\n# Scheduler\nscheduler:\n  resources:\n    requests:\n      cpu: \"500m\"\n      memory: \"1Gi\"\n    limits:\n      cpu: \"1000m\"\n      memory: \"2Gi\"\n\n# Standalone DAG processor\ndagProcessor:\n  enabled: true\n  resources:\n    requests:\n      cpu: \"250m\"\n      memory: \"512Mi\"\n    limits:\n      cpu: \"500m\"\n      memory: \"1Gi\"\n\n# Triggerer (for deferrable tasks)\ntriggerer:\n  resources:\n    requests:\n      cpu: \"250m\"\n      memory: \"512Mi\"\n    limits:\n      cpu: \"500m\"\n      memory: \"1Gi\"\n\n# Worker resources (CeleryExecutor only)\nworkers:\n  resources:\n    requests:\n      cpu: \"500m\"\n      memory: \"1Gi\"\n    limits:\n      cpu: \"2000m\"\n      memory: \"4Gi\"\n  replicas: 2\n\n# Log persistence\nlogs:\n  persistence:\n    enabled: true\n    size: 10Gi\n\n# PostgreSQL (built-in)\npostgresql:\n  enabled: true\n\n# Or use an external database\n# postgresql:\n#   enabled: false\n# data:\n#   metadataConnection:\n#     user: airflow\n#     pass: airflow\n#     host: your-rds-host.amazonaws.com\n#     port: 5432\n#     db: airflow\n",[2928],{"type":58,"tag":140,"props":2929,"children":2930},{"__ignoreMap":219},[2931,2939,2961,2968,2976,2993,3023,3030,3038,3050,3062,3080,3097,3114,3131,3153,3160,3168,3180,3192,3204,3229,3254,3266,3290,3314,3331,3338,3346,3358,3369,3380,3403,3426,3437,3461,3485,3492,3500,3512,3528,3539,3550,3573,3596,3607,3630,3653,3660,3668,3680,3691,3702,3725,3748,3759,3782,3805,3812,3820,3832,3843,3854,3877,3900,3911,3935,3959,3975,3982,3990,4002,4014,4029,4046,4054,4063,4076,4092,4100,4109,4118,4127,4136,4145,4154,4163,4172,4181],{"type":58,"tag":225,"props":2932,"children":2933},{"class":227,"line":228},[2934],{"type":58,"tag":225,"props":2935,"children":2936},{"style":861},[2937],{"type":63,"value":2938},"# Executor type\n",{"type":58,"tag":225,"props":2940,"children":2941},{"class":227,"line":843},[2942,2947,2951,2956],{"type":58,"tag":225,"props":2943,"children":2944},{"style":822},[2945],{"type":63,"value":2946},"executor",{"type":58,"tag":225,"props":2948,"children":2949},{"style":629},[2950],{"type":63,"value":807},{"type":58,"tag":225,"props":2952,"children":2953},{"style":238},[2954],{"type":63,"value":2955}," KubernetesExecutor",{"type":58,"tag":225,"props":2957,"children":2958},{"style":861},[2959],{"type":63,"value":2960},"  # or CeleryExecutor, LocalExecutor\n",{"type":58,"tag":225,"props":2962,"children":2963},{"class":227,"line":867},[2964],{"type":58,"tag":225,"props":2965,"children":2966},{"emptyLinePlaceholder":1071},[2967],{"type":63,"value":1074},{"type":58,"tag":225,"props":2969,"children":2970},{"class":227,"line":889},[2971],{"type":58,"tag":225,"props":2972,"children":2973},{"style":861},[2974],{"type":63,"value":2975},"# Airflow image (pin to your desired version)\n",{"type":58,"tag":225,"props":2977,"children":2978},{"class":227,"line":907},[2979,2984,2988],{"type":58,"tag":225,"props":2980,"children":2981},{"style":822},[2982],{"type":63,"value":2983},"defaultAirflowRepository",{"type":58,"tag":225,"props":2985,"children":2986},{"style":629},[2987],{"type":63,"value":807},{"type":58,"tag":225,"props":2989,"children":2990},{"style":238},[2991],{"type":63,"value":2992}," apache\u002Fairflow\n",{"type":58,"tag":225,"props":2994,"children":2995},{"class":227,"line":925},[2996,3001,3005,3009,3014,3018],{"type":58,"tag":225,"props":2997,"children":2998},{"style":822},[2999],{"type":63,"value":3000},"defaultAirflowTag",{"type":58,"tag":225,"props":3002,"children":3003},{"style":629},[3004],{"type":63,"value":807},{"type":58,"tag":225,"props":3006,"children":3007},{"style":629},[3008],{"type":63,"value":1265},{"type":58,"tag":225,"props":3010,"children":3011},{"style":238},[3012],{"type":63,"value":3013},"3",{"type":58,"tag":225,"props":3015,"children":3016},{"style":629},[3017],{"type":63,"value":1246},{"type":58,"tag":225,"props":3019,"children":3020},{"style":861},[3021],{"type":63,"value":3022},"  # Or pin: \"3.1.7\"\n",{"type":58,"tag":225,"props":3024,"children":3025},{"class":227,"line":951},[3026],{"type":58,"tag":225,"props":3027,"children":3028},{"emptyLinePlaceholder":1071},[3029],{"type":63,"value":1074},{"type":58,"tag":225,"props":3031,"children":3032},{"class":227,"line":969},[3033],{"type":58,"tag":225,"props":3034,"children":3035},{"style":861},[3036],{"type":63,"value":3037},"# Git-sync for DAGs (recommended for production)\n",{"type":58,"tag":225,"props":3039,"children":3040},{"class":227,"line":983},[3041,3046],{"type":58,"tag":225,"props":3042,"children":3043},{"style":822},[3044],{"type":63,"value":3045},"dags",{"type":58,"tag":225,"props":3047,"children":3048},{"style":629},[3049],{"type":63,"value":980},{"type":58,"tag":225,"props":3051,"children":3052},{"class":227,"line":997},[3053,3058],{"type":58,"tag":225,"props":3054,"children":3055},{"style":822},[3056],{"type":63,"value":3057},"  gitSync",{"type":58,"tag":225,"props":3059,"children":3060},{"style":629},[3061],{"type":63,"value":980},{"type":58,"tag":225,"props":3063,"children":3064},{"class":227,"line":1010},[3065,3070,3074],{"type":58,"tag":225,"props":3066,"children":3067},{"style":822},[3068],{"type":63,"value":3069},"    enabled",{"type":58,"tag":225,"props":3071,"children":3072},{"style":629},[3073],{"type":63,"value":807},{"type":58,"tag":225,"props":3075,"children":3077},{"style":3076},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[3078],{"type":63,"value":3079}," true\n",{"type":58,"tag":225,"props":3081,"children":3082},{"class":227,"line":1023},[3083,3088,3092],{"type":58,"tag":225,"props":3084,"children":3085},{"style":822},[3086],{"type":63,"value":3087},"    repo",{"type":58,"tag":225,"props":3089,"children":3090},{"style":629},[3091],{"type":63,"value":807},{"type":58,"tag":225,"props":3093,"children":3094},{"style":238},[3095],{"type":63,"value":3096}," https:\u002F\u002Fgithub.com\u002Fyour-org\u002Fyour-dags.git\n",{"type":58,"tag":225,"props":3098,"children":3099},{"class":227,"line":1036},[3100,3105,3109],{"type":58,"tag":225,"props":3101,"children":3102},{"style":822},[3103],{"type":63,"value":3104},"    branch",{"type":58,"tag":225,"props":3106,"children":3107},{"style":629},[3108],{"type":63,"value":807},{"type":58,"tag":225,"props":3110,"children":3111},{"style":238},[3112],{"type":63,"value":3113}," main\n",{"type":58,"tag":225,"props":3115,"children":3116},{"class":227,"line":1049},[3117,3122,3126],{"type":58,"tag":225,"props":3118,"children":3119},{"style":822},[3120],{"type":63,"value":3121},"    subPath",{"type":58,"tag":225,"props":3123,"children":3124},{"style":629},[3125],{"type":63,"value":807},{"type":58,"tag":225,"props":3127,"children":3128},{"style":238},[3129],{"type":63,"value":3130}," dags\n",{"type":58,"tag":225,"props":3132,"children":3133},{"class":227,"line":1067},[3134,3139,3143,3148],{"type":58,"tag":225,"props":3135,"children":3136},{"style":822},[3137],{"type":63,"value":3138},"    wait",{"type":58,"tag":225,"props":3140,"children":3141},{"style":629},[3142],{"type":63,"value":807},{"type":58,"tag":225,"props":3144,"children":3145},{"style":1346},[3146],{"type":63,"value":3147}," 60",{"type":58,"tag":225,"props":3149,"children":3150},{"style":861},[3151],{"type":63,"value":3152},"  # seconds between syncs\n",{"type":58,"tag":225,"props":3154,"children":3155},{"class":227,"line":1077},[3156],{"type":58,"tag":225,"props":3157,"children":3158},{"emptyLinePlaceholder":1071},[3159],{"type":63,"value":1074},{"type":58,"tag":225,"props":3161,"children":3162},{"class":227,"line":1090},[3163],{"type":58,"tag":225,"props":3164,"children":3165},{"style":861},[3166],{"type":63,"value":3167},"# API server (replaces webserver in Airflow 3)\n",{"type":58,"tag":225,"props":3169,"children":3170},{"class":227,"line":1103},[3171,3176],{"type":58,"tag":225,"props":3172,"children":3173},{"style":822},[3174],{"type":63,"value":3175},"apiServer",{"type":58,"tag":225,"props":3177,"children":3178},{"style":629},[3179],{"type":63,"value":980},{"type":58,"tag":225,"props":3181,"children":3182},{"class":227,"line":1121},[3183,3188],{"type":58,"tag":225,"props":3184,"children":3185},{"style":822},[3186],{"type":63,"value":3187},"  resources",{"type":58,"tag":225,"props":3189,"children":3190},{"style":629},[3191],{"type":63,"value":980},{"type":58,"tag":225,"props":3193,"children":3194},{"class":227,"line":1134},[3195,3200],{"type":58,"tag":225,"props":3196,"children":3197},{"style":822},[3198],{"type":63,"value":3199},"    requests",{"type":58,"tag":225,"props":3201,"children":3202},{"style":629},[3203],{"type":63,"value":980},{"type":58,"tag":225,"props":3205,"children":3206},{"class":227,"line":1152},[3207,3212,3216,3220,3225],{"type":58,"tag":225,"props":3208,"children":3209},{"style":822},[3210],{"type":63,"value":3211},"      cpu",{"type":58,"tag":225,"props":3213,"children":3214},{"style":629},[3215],{"type":63,"value":807},{"type":58,"tag":225,"props":3217,"children":3218},{"style":629},[3219],{"type":63,"value":1265},{"type":58,"tag":225,"props":3221,"children":3222},{"style":238},[3223],{"type":63,"value":3224},"250m",{"type":58,"tag":225,"props":3226,"children":3227},{"style":629},[3228],{"type":63,"value":1668},{"type":58,"tag":225,"props":3230,"children":3231},{"class":227,"line":1169},[3232,3237,3241,3245,3250],{"type":58,"tag":225,"props":3233,"children":3234},{"style":822},[3235],{"type":63,"value":3236},"      memory",{"type":58,"tag":225,"props":3238,"children":3239},{"style":629},[3240],{"type":63,"value":807},{"type":58,"tag":225,"props":3242,"children":3243},{"style":629},[3244],{"type":63,"value":1265},{"type":58,"tag":225,"props":3246,"children":3247},{"style":238},[3248],{"type":63,"value":3249},"512Mi",{"type":58,"tag":225,"props":3251,"children":3252},{"style":629},[3253],{"type":63,"value":1668},{"type":58,"tag":225,"props":3255,"children":3256},{"class":227,"line":1186},[3257,3262],{"type":58,"tag":225,"props":3258,"children":3259},{"style":822},[3260],{"type":63,"value":3261},"    limits",{"type":58,"tag":225,"props":3263,"children":3264},{"style":629},[3265],{"type":63,"value":980},{"type":58,"tag":225,"props":3267,"children":3268},{"class":227,"line":1199},[3269,3273,3277,3281,3286],{"type":58,"tag":225,"props":3270,"children":3271},{"style":822},[3272],{"type":63,"value":3211},{"type":58,"tag":225,"props":3274,"children":3275},{"style":629},[3276],{"type":63,"value":807},{"type":58,"tag":225,"props":3278,"children":3279},{"style":629},[3280],{"type":63,"value":1265},{"type":58,"tag":225,"props":3282,"children":3283},{"style":238},[3284],{"type":63,"value":3285},"500m",{"type":58,"tag":225,"props":3287,"children":3288},{"style":629},[3289],{"type":63,"value":1668},{"type":58,"tag":225,"props":3291,"children":3292},{"class":227,"line":1213},[3293,3297,3301,3305,3310],{"type":58,"tag":225,"props":3294,"children":3295},{"style":822},[3296],{"type":63,"value":3236},{"type":58,"tag":225,"props":3298,"children":3299},{"style":629},[3300],{"type":63,"value":807},{"type":58,"tag":225,"props":3302,"children":3303},{"style":629},[3304],{"type":63,"value":1265},{"type":58,"tag":225,"props":3306,"children":3307},{"style":238},[3308],{"type":63,"value":3309},"1Gi",{"type":58,"tag":225,"props":3311,"children":3312},{"style":629},[3313],{"type":63,"value":1668},{"type":58,"tag":225,"props":3315,"children":3316},{"class":227,"line":1226},[3317,3322,3326],{"type":58,"tag":225,"props":3318,"children":3319},{"style":822},[3320],{"type":63,"value":3321},"  replicas",{"type":58,"tag":225,"props":3323,"children":3324},{"style":629},[3325],{"type":63,"value":807},{"type":58,"tag":225,"props":3327,"children":3328},{"style":1346},[3329],{"type":63,"value":3330}," 1\n",{"type":58,"tag":225,"props":3332,"children":3333},{"class":227,"line":1315},[3334],{"type":58,"tag":225,"props":3335,"children":3336},{"emptyLinePlaceholder":1071},[3337],{"type":63,"value":1074},{"type":58,"tag":225,"props":3339,"children":3340},{"class":227,"line":1333},[3341],{"type":58,"tag":225,"props":3342,"children":3343},{"style":861},[3344],{"type":63,"value":3345},"# Scheduler\n",{"type":58,"tag":225,"props":3347,"children":3348},{"class":227,"line":1352},[3349,3354],{"type":58,"tag":225,"props":3350,"children":3351},{"style":822},[3352],{"type":63,"value":3353},"scheduler",{"type":58,"tag":225,"props":3355,"children":3356},{"style":629},[3357],{"type":63,"value":980},{"type":58,"tag":225,"props":3359,"children":3360},{"class":227,"line":1370},[3361,3365],{"type":58,"tag":225,"props":3362,"children":3363},{"style":822},[3364],{"type":63,"value":3187},{"type":58,"tag":225,"props":3366,"children":3367},{"style":629},[3368],{"type":63,"value":980},{"type":58,"tag":225,"props":3370,"children":3371},{"class":227,"line":1378},[3372,3376],{"type":58,"tag":225,"props":3373,"children":3374},{"style":822},[3375],{"type":63,"value":3199},{"type":58,"tag":225,"props":3377,"children":3378},{"style":629},[3379],{"type":63,"value":980},{"type":58,"tag":225,"props":3381,"children":3382},{"class":227,"line":1391},[3383,3387,3391,3395,3399],{"type":58,"tag":225,"props":3384,"children":3385},{"style":822},[3386],{"type":63,"value":3211},{"type":58,"tag":225,"props":3388,"children":3389},{"style":629},[3390],{"type":63,"value":807},{"type":58,"tag":225,"props":3392,"children":3393},{"style":629},[3394],{"type":63,"value":1265},{"type":58,"tag":225,"props":3396,"children":3397},{"style":238},[3398],{"type":63,"value":3285},{"type":58,"tag":225,"props":3400,"children":3401},{"style":629},[3402],{"type":63,"value":1668},{"type":58,"tag":225,"props":3404,"children":3405},{"class":227,"line":1410},[3406,3410,3414,3418,3422],{"type":58,"tag":225,"props":3407,"children":3408},{"style":822},[3409],{"type":63,"value":3236},{"type":58,"tag":225,"props":3411,"children":3412},{"style":629},[3413],{"type":63,"value":807},{"type":58,"tag":225,"props":3415,"children":3416},{"style":629},[3417],{"type":63,"value":1265},{"type":58,"tag":225,"props":3419,"children":3420},{"style":238},[3421],{"type":63,"value":3309},{"type":58,"tag":225,"props":3423,"children":3424},{"style":629},[3425],{"type":63,"value":1668},{"type":58,"tag":225,"props":3427,"children":3428},{"class":227,"line":1428},[3429,3433],{"type":58,"tag":225,"props":3430,"children":3431},{"style":822},[3432],{"type":63,"value":3261},{"type":58,"tag":225,"props":3434,"children":3435},{"style":629},[3436],{"type":63,"value":980},{"type":58,"tag":225,"props":3438,"children":3439},{"class":227,"line":1441},[3440,3444,3448,3452,3457],{"type":58,"tag":225,"props":3441,"children":3442},{"style":822},[3443],{"type":63,"value":3211},{"type":58,"tag":225,"props":3445,"children":3446},{"style":629},[3447],{"type":63,"value":807},{"type":58,"tag":225,"props":3449,"children":3450},{"style":629},[3451],{"type":63,"value":1265},{"type":58,"tag":225,"props":3453,"children":3454},{"style":238},[3455],{"type":63,"value":3456},"1000m",{"type":58,"tag":225,"props":3458,"children":3459},{"style":629},[3460],{"type":63,"value":1668},{"type":58,"tag":225,"props":3462,"children":3463},{"class":227,"line":1454},[3464,3468,3472,3476,3481],{"type":58,"tag":225,"props":3465,"children":3466},{"style":822},[3467],{"type":63,"value":3236},{"type":58,"tag":225,"props":3469,"children":3470},{"style":629},[3471],{"type":63,"value":807},{"type":58,"tag":225,"props":3473,"children":3474},{"style":629},[3475],{"type":63,"value":1265},{"type":58,"tag":225,"props":3477,"children":3478},{"style":238},[3479],{"type":63,"value":3480},"2Gi",{"type":58,"tag":225,"props":3482,"children":3483},{"style":629},[3484],{"type":63,"value":1668},{"type":58,"tag":225,"props":3486,"children":3487},{"class":227,"line":1467},[3488],{"type":58,"tag":225,"props":3489,"children":3490},{"emptyLinePlaceholder":1071},[3491],{"type":63,"value":1074},{"type":58,"tag":225,"props":3493,"children":3494},{"class":227,"line":1476},[3495],{"type":58,"tag":225,"props":3496,"children":3497},{"style":861},[3498],{"type":63,"value":3499},"# Standalone DAG processor\n",{"type":58,"tag":225,"props":3501,"children":3502},{"class":227,"line":1485},[3503,3508],{"type":58,"tag":225,"props":3504,"children":3505},{"style":822},[3506],{"type":63,"value":3507},"dagProcessor",{"type":58,"tag":225,"props":3509,"children":3510},{"style":629},[3511],{"type":63,"value":980},{"type":58,"tag":225,"props":3513,"children":3514},{"class":227,"line":1494},[3515,3520,3524],{"type":58,"tag":225,"props":3516,"children":3517},{"style":822},[3518],{"type":63,"value":3519},"  enabled",{"type":58,"tag":225,"props":3521,"children":3522},{"style":629},[3523],{"type":63,"value":807},{"type":58,"tag":225,"props":3525,"children":3526},{"style":3076},[3527],{"type":63,"value":3079},{"type":58,"tag":225,"props":3529,"children":3530},{"class":227,"line":1503},[3531,3535],{"type":58,"tag":225,"props":3532,"children":3533},{"style":822},[3534],{"type":63,"value":3187},{"type":58,"tag":225,"props":3536,"children":3537},{"style":629},[3538],{"type":63,"value":980},{"type":58,"tag":225,"props":3540,"children":3541},{"class":227,"line":1512},[3542,3546],{"type":58,"tag":225,"props":3543,"children":3544},{"style":822},[3545],{"type":63,"value":3199},{"type":58,"tag":225,"props":3547,"children":3548},{"style":629},[3549],{"type":63,"value":980},{"type":58,"tag":225,"props":3551,"children":3552},{"class":227,"line":1521},[3553,3557,3561,3565,3569],{"type":58,"tag":225,"props":3554,"children":3555},{"style":822},[3556],{"type":63,"value":3211},{"type":58,"tag":225,"props":3558,"children":3559},{"style":629},[3560],{"type":63,"value":807},{"type":58,"tag":225,"props":3562,"children":3563},{"style":629},[3564],{"type":63,"value":1265},{"type":58,"tag":225,"props":3566,"children":3567},{"style":238},[3568],{"type":63,"value":3224},{"type":58,"tag":225,"props":3570,"children":3571},{"style":629},[3572],{"type":63,"value":1668},{"type":58,"tag":225,"props":3574,"children":3575},{"class":227,"line":1530},[3576,3580,3584,3588,3592],{"type":58,"tag":225,"props":3577,"children":3578},{"style":822},[3579],{"type":63,"value":3236},{"type":58,"tag":225,"props":3581,"children":3582},{"style":629},[3583],{"type":63,"value":807},{"type":58,"tag":225,"props":3585,"children":3586},{"style":629},[3587],{"type":63,"value":1265},{"type":58,"tag":225,"props":3589,"children":3590},{"style":238},[3591],{"type":63,"value":3249},{"type":58,"tag":225,"props":3593,"children":3594},{"style":629},[3595],{"type":63,"value":1668},{"type":58,"tag":225,"props":3597,"children":3598},{"class":227,"line":1539},[3599,3603],{"type":58,"tag":225,"props":3600,"children":3601},{"style":822},[3602],{"type":63,"value":3261},{"type":58,"tag":225,"props":3604,"children":3605},{"style":629},[3606],{"type":63,"value":980},{"type":58,"tag":225,"props":3608,"children":3609},{"class":227,"line":1552},[3610,3614,3618,3622,3626],{"type":58,"tag":225,"props":3611,"children":3612},{"style":822},[3613],{"type":63,"value":3211},{"type":58,"tag":225,"props":3615,"children":3616},{"style":629},[3617],{"type":63,"value":807},{"type":58,"tag":225,"props":3619,"children":3620},{"style":629},[3621],{"type":63,"value":1265},{"type":58,"tag":225,"props":3623,"children":3624},{"style":238},[3625],{"type":63,"value":3285},{"type":58,"tag":225,"props":3627,"children":3628},{"style":629},[3629],{"type":63,"value":1668},{"type":58,"tag":225,"props":3631,"children":3632},{"class":227,"line":1565},[3633,3637,3641,3645,3649],{"type":58,"tag":225,"props":3634,"children":3635},{"style":822},[3636],{"type":63,"value":3236},{"type":58,"tag":225,"props":3638,"children":3639},{"style":629},[3640],{"type":63,"value":807},{"type":58,"tag":225,"props":3642,"children":3643},{"style":629},[3644],{"type":63,"value":1265},{"type":58,"tag":225,"props":3646,"children":3647},{"style":238},[3648],{"type":63,"value":3309},{"type":58,"tag":225,"props":3650,"children":3651},{"style":629},[3652],{"type":63,"value":1668},{"type":58,"tag":225,"props":3654,"children":3655},{"class":227,"line":1582},[3656],{"type":58,"tag":225,"props":3657,"children":3658},{"emptyLinePlaceholder":1071},[3659],{"type":63,"value":1074},{"type":58,"tag":225,"props":3661,"children":3662},{"class":227,"line":1590},[3663],{"type":58,"tag":225,"props":3664,"children":3665},{"style":861},[3666],{"type":63,"value":3667},"# Triggerer (for deferrable tasks)\n",{"type":58,"tag":225,"props":3669,"children":3670},{"class":227,"line":1603},[3671,3676],{"type":58,"tag":225,"props":3672,"children":3673},{"style":822},[3674],{"type":63,"value":3675},"triggerer",{"type":58,"tag":225,"props":3677,"children":3678},{"style":629},[3679],{"type":63,"value":980},{"type":58,"tag":225,"props":3681,"children":3682},{"class":227,"line":1619},[3683,3687],{"type":58,"tag":225,"props":3684,"children":3685},{"style":822},[3686],{"type":63,"value":3187},{"type":58,"tag":225,"props":3688,"children":3689},{"style":629},[3690],{"type":63,"value":980},{"type":58,"tag":225,"props":3692,"children":3693},{"class":227,"line":1636},[3694,3698],{"type":58,"tag":225,"props":3695,"children":3696},{"style":822},[3697],{"type":63,"value":3199},{"type":58,"tag":225,"props":3699,"children":3700},{"style":629},[3701],{"type":63,"value":980},{"type":58,"tag":225,"props":3703,"children":3704},{"class":227,"line":1649},[3705,3709,3713,3717,3721],{"type":58,"tag":225,"props":3706,"children":3707},{"style":822},[3708],{"type":63,"value":3211},{"type":58,"tag":225,"props":3710,"children":3711},{"style":629},[3712],{"type":63,"value":807},{"type":58,"tag":225,"props":3714,"children":3715},{"style":629},[3716],{"type":63,"value":1265},{"type":58,"tag":225,"props":3718,"children":3719},{"style":238},[3720],{"type":63,"value":3224},{"type":58,"tag":225,"props":3722,"children":3723},{"style":629},[3724],{"type":63,"value":1668},{"type":58,"tag":225,"props":3726,"children":3727},{"class":227,"line":1671},[3728,3732,3736,3740,3744],{"type":58,"tag":225,"props":3729,"children":3730},{"style":822},[3731],{"type":63,"value":3236},{"type":58,"tag":225,"props":3733,"children":3734},{"style":629},[3735],{"type":63,"value":807},{"type":58,"tag":225,"props":3737,"children":3738},{"style":629},[3739],{"type":63,"value":1265},{"type":58,"tag":225,"props":3741,"children":3742},{"style":238},[3743],{"type":63,"value":3249},{"type":58,"tag":225,"props":3745,"children":3746},{"style":629},[3747],{"type":63,"value":1668},{"type":58,"tag":225,"props":3749,"children":3750},{"class":227,"line":26},[3751,3755],{"type":58,"tag":225,"props":3752,"children":3753},{"style":822},[3754],{"type":63,"value":3261},{"type":58,"tag":225,"props":3756,"children":3757},{"style":629},[3758],{"type":63,"value":980},{"type":58,"tag":225,"props":3760,"children":3761},{"class":227,"line":1764},[3762,3766,3770,3774,3778],{"type":58,"tag":225,"props":3763,"children":3764},{"style":822},[3765],{"type":63,"value":3211},{"type":58,"tag":225,"props":3767,"children":3768},{"style":629},[3769],{"type":63,"value":807},{"type":58,"tag":225,"props":3771,"children":3772},{"style":629},[3773],{"type":63,"value":1265},{"type":58,"tag":225,"props":3775,"children":3776},{"style":238},[3777],{"type":63,"value":3285},{"type":58,"tag":225,"props":3779,"children":3780},{"style":629},[3781],{"type":63,"value":1668},{"type":58,"tag":225,"props":3783,"children":3784},{"class":227,"line":1781},[3785,3789,3793,3797,3801],{"type":58,"tag":225,"props":3786,"children":3787},{"style":822},[3788],{"type":63,"value":3236},{"type":58,"tag":225,"props":3790,"children":3791},{"style":629},[3792],{"type":63,"value":807},{"type":58,"tag":225,"props":3794,"children":3795},{"style":629},[3796],{"type":63,"value":1265},{"type":58,"tag":225,"props":3798,"children":3799},{"style":238},[3800],{"type":63,"value":3309},{"type":58,"tag":225,"props":3802,"children":3803},{"style":629},[3804],{"type":63,"value":1668},{"type":58,"tag":225,"props":3806,"children":3807},{"class":227,"line":1798},[3808],{"type":58,"tag":225,"props":3809,"children":3810},{"emptyLinePlaceholder":1071},[3811],{"type":63,"value":1074},{"type":58,"tag":225,"props":3813,"children":3814},{"class":227,"line":1814},[3815],{"type":58,"tag":225,"props":3816,"children":3817},{"style":861},[3818],{"type":63,"value":3819},"# Worker resources (CeleryExecutor only)\n",{"type":58,"tag":225,"props":3821,"children":3822},{"class":227,"line":1830},[3823,3828],{"type":58,"tag":225,"props":3824,"children":3825},{"style":822},[3826],{"type":63,"value":3827},"workers",{"type":58,"tag":225,"props":3829,"children":3830},{"style":629},[3831],{"type":63,"value":980},{"type":58,"tag":225,"props":3833,"children":3834},{"class":227,"line":1838},[3835,3839],{"type":58,"tag":225,"props":3836,"children":3837},{"style":822},[3838],{"type":63,"value":3187},{"type":58,"tag":225,"props":3840,"children":3841},{"style":629},[3842],{"type":63,"value":980},{"type":58,"tag":225,"props":3844,"children":3845},{"class":227,"line":1851},[3846,3850],{"type":58,"tag":225,"props":3847,"children":3848},{"style":822},[3849],{"type":63,"value":3199},{"type":58,"tag":225,"props":3851,"children":3852},{"style":629},[3853],{"type":63,"value":980},{"type":58,"tag":225,"props":3855,"children":3856},{"class":227,"line":1867},[3857,3861,3865,3869,3873],{"type":58,"tag":225,"props":3858,"children":3859},{"style":822},[3860],{"type":63,"value":3211},{"type":58,"tag":225,"props":3862,"children":3863},{"style":629},[3864],{"type":63,"value":807},{"type":58,"tag":225,"props":3866,"children":3867},{"style":629},[3868],{"type":63,"value":1265},{"type":58,"tag":225,"props":3870,"children":3871},{"style":238},[3872],{"type":63,"value":3285},{"type":58,"tag":225,"props":3874,"children":3875},{"style":629},[3876],{"type":63,"value":1668},{"type":58,"tag":225,"props":3878,"children":3879},{"class":227,"line":1884},[3880,3884,3888,3892,3896],{"type":58,"tag":225,"props":3881,"children":3882},{"style":822},[3883],{"type":63,"value":3236},{"type":58,"tag":225,"props":3885,"children":3886},{"style":629},[3887],{"type":63,"value":807},{"type":58,"tag":225,"props":3889,"children":3890},{"style":629},[3891],{"type":63,"value":1265},{"type":58,"tag":225,"props":3893,"children":3894},{"style":238},[3895],{"type":63,"value":3309},{"type":58,"tag":225,"props":3897,"children":3898},{"style":629},[3899],{"type":63,"value":1668},{"type":58,"tag":225,"props":3901,"children":3902},{"class":227,"line":1892},[3903,3907],{"type":58,"tag":225,"props":3904,"children":3905},{"style":822},[3906],{"type":63,"value":3261},{"type":58,"tag":225,"props":3908,"children":3909},{"style":629},[3910],{"type":63,"value":980},{"type":58,"tag":225,"props":3912,"children":3913},{"class":227,"line":1905},[3914,3918,3922,3926,3931],{"type":58,"tag":225,"props":3915,"children":3916},{"style":822},[3917],{"type":63,"value":3211},{"type":58,"tag":225,"props":3919,"children":3920},{"style":629},[3921],{"type":63,"value":807},{"type":58,"tag":225,"props":3923,"children":3924},{"style":629},[3925],{"type":63,"value":1265},{"type":58,"tag":225,"props":3927,"children":3928},{"style":238},[3929],{"type":63,"value":3930},"2000m",{"type":58,"tag":225,"props":3932,"children":3933},{"style":629},[3934],{"type":63,"value":1668},{"type":58,"tag":225,"props":3936,"children":3937},{"class":227,"line":1921},[3938,3942,3946,3950,3955],{"type":58,"tag":225,"props":3939,"children":3940},{"style":822},[3941],{"type":63,"value":3236},{"type":58,"tag":225,"props":3943,"children":3944},{"style":629},[3945],{"type":63,"value":807},{"type":58,"tag":225,"props":3947,"children":3948},{"style":629},[3949],{"type":63,"value":1265},{"type":58,"tag":225,"props":3951,"children":3952},{"style":238},[3953],{"type":63,"value":3954},"4Gi",{"type":58,"tag":225,"props":3956,"children":3957},{"style":629},[3958],{"type":63,"value":1668},{"type":58,"tag":225,"props":3960,"children":3961},{"class":227,"line":1938},[3962,3966,3970],{"type":58,"tag":225,"props":3963,"children":3964},{"style":822},[3965],{"type":63,"value":3321},{"type":58,"tag":225,"props":3967,"children":3968},{"style":629},[3969],{"type":63,"value":807},{"type":58,"tag":225,"props":3971,"children":3972},{"style":1346},[3973],{"type":63,"value":3974}," 2\n",{"type":58,"tag":225,"props":3976,"children":3977},{"class":227,"line":1946},[3978],{"type":58,"tag":225,"props":3979,"children":3980},{"emptyLinePlaceholder":1071},[3981],{"type":63,"value":1074},{"type":58,"tag":225,"props":3983,"children":3984},{"class":227,"line":1959},[3985],{"type":58,"tag":225,"props":3986,"children":3987},{"style":861},[3988],{"type":63,"value":3989},"# Log persistence\n",{"type":58,"tag":225,"props":3991,"children":3992},{"class":227,"line":1975},[3993,3998],{"type":58,"tag":225,"props":3994,"children":3995},{"style":822},[3996],{"type":63,"value":3997},"logs",{"type":58,"tag":225,"props":3999,"children":4000},{"style":629},[4001],{"type":63,"value":980},{"type":58,"tag":225,"props":4003,"children":4004},{"class":227,"line":1992},[4005,4010],{"type":58,"tag":225,"props":4006,"children":4007},{"style":822},[4008],{"type":63,"value":4009},"  persistence",{"type":58,"tag":225,"props":4011,"children":4012},{"style":629},[4013],{"type":63,"value":980},{"type":58,"tag":225,"props":4015,"children":4016},{"class":227,"line":2000},[4017,4021,4025],{"type":58,"tag":225,"props":4018,"children":4019},{"style":822},[4020],{"type":63,"value":3069},{"type":58,"tag":225,"props":4022,"children":4023},{"style":629},[4024],{"type":63,"value":807},{"type":58,"tag":225,"props":4026,"children":4027},{"style":3076},[4028],{"type":63,"value":3079},{"type":58,"tag":225,"props":4030,"children":4031},{"class":227,"line":2013},[4032,4037,4041],{"type":58,"tag":225,"props":4033,"children":4034},{"style":822},[4035],{"type":63,"value":4036},"    size",{"type":58,"tag":225,"props":4038,"children":4039},{"style":629},[4040],{"type":63,"value":807},{"type":58,"tag":225,"props":4042,"children":4043},{"style":238},[4044],{"type":63,"value":4045}," 10Gi\n",{"type":58,"tag":225,"props":4047,"children":4049},{"class":227,"line":4048},75,[4050],{"type":58,"tag":225,"props":4051,"children":4052},{"emptyLinePlaceholder":1071},[4053],{"type":63,"value":1074},{"type":58,"tag":225,"props":4055,"children":4057},{"class":227,"line":4056},76,[4058],{"type":58,"tag":225,"props":4059,"children":4060},{"style":861},[4061],{"type":63,"value":4062},"# PostgreSQL (built-in)\n",{"type":58,"tag":225,"props":4064,"children":4066},{"class":227,"line":4065},77,[4067,4072],{"type":58,"tag":225,"props":4068,"children":4069},{"style":822},[4070],{"type":63,"value":4071},"postgresql",{"type":58,"tag":225,"props":4073,"children":4074},{"style":629},[4075],{"type":63,"value":980},{"type":58,"tag":225,"props":4077,"children":4079},{"class":227,"line":4078},78,[4080,4084,4088],{"type":58,"tag":225,"props":4081,"children":4082},{"style":822},[4083],{"type":63,"value":3519},{"type":58,"tag":225,"props":4085,"children":4086},{"style":629},[4087],{"type":63,"value":807},{"type":58,"tag":225,"props":4089,"children":4090},{"style":3076},[4091],{"type":63,"value":3079},{"type":58,"tag":225,"props":4093,"children":4095},{"class":227,"line":4094},79,[4096],{"type":58,"tag":225,"props":4097,"children":4098},{"emptyLinePlaceholder":1071},[4099],{"type":63,"value":1074},{"type":58,"tag":225,"props":4101,"children":4103},{"class":227,"line":4102},80,[4104],{"type":58,"tag":225,"props":4105,"children":4106},{"style":861},[4107],{"type":63,"value":4108},"# Or use an external database\n",{"type":58,"tag":225,"props":4110,"children":4112},{"class":227,"line":4111},81,[4113],{"type":58,"tag":225,"props":4114,"children":4115},{"style":861},[4116],{"type":63,"value":4117},"# postgresql:\n",{"type":58,"tag":225,"props":4119,"children":4121},{"class":227,"line":4120},82,[4122],{"type":58,"tag":225,"props":4123,"children":4124},{"style":861},[4125],{"type":63,"value":4126},"#   enabled: false\n",{"type":58,"tag":225,"props":4128,"children":4130},{"class":227,"line":4129},83,[4131],{"type":58,"tag":225,"props":4132,"children":4133},{"style":861},[4134],{"type":63,"value":4135},"# data:\n",{"type":58,"tag":225,"props":4137,"children":4139},{"class":227,"line":4138},84,[4140],{"type":58,"tag":225,"props":4141,"children":4142},{"style":861},[4143],{"type":63,"value":4144},"#   metadataConnection:\n",{"type":58,"tag":225,"props":4146,"children":4148},{"class":227,"line":4147},85,[4149],{"type":58,"tag":225,"props":4150,"children":4151},{"style":861},[4152],{"type":63,"value":4153},"#     user: airflow\n",{"type":58,"tag":225,"props":4155,"children":4157},{"class":227,"line":4156},86,[4158],{"type":58,"tag":225,"props":4159,"children":4160},{"style":861},[4161],{"type":63,"value":4162},"#     pass: airflow\n",{"type":58,"tag":225,"props":4164,"children":4166},{"class":227,"line":4165},87,[4167],{"type":58,"tag":225,"props":4168,"children":4169},{"style":861},[4170],{"type":63,"value":4171},"#     host: your-rds-host.amazonaws.com\n",{"type":58,"tag":225,"props":4173,"children":4175},{"class":227,"line":4174},88,[4176],{"type":58,"tag":225,"props":4177,"children":4178},{"style":861},[4179],{"type":63,"value":4180},"#     port: 5432\n",{"type":58,"tag":225,"props":4182,"children":4184},{"class":227,"line":4183},89,[4185],{"type":58,"tag":225,"props":4186,"children":4187},{"style":861},[4188],{"type":63,"value":4189},"#     db: airflow\n",{"type":58,"tag":99,"props":4191,"children":4193},{"id":4192},"upgrading",[4194],{"type":63,"value":4195},"Upgrading",{"type":58,"tag":214,"props":4197,"children":4199},{"className":216,"code":4198,"language":218,"meta":219,"style":219},"# Upgrade with new values\nhelm upgrade airflow apache-airflow\u002Fairflow \\\n  --namespace airflow \\\n  -f values.yaml\n\n# Upgrade to a new Airflow version\nhelm upgrade airflow apache-airflow\u002Fairflow \\\n  --namespace airflow \\\n  --set defaultAirflowTag=\"\u003Cversion>\"\n",[4200],{"type":58,"tag":140,"props":4201,"children":4202},{"__ignoreMap":219},[4203,4211,4235,4250,4261,4268,4276,4299,4314],{"type":58,"tag":225,"props":4204,"children":4205},{"class":227,"line":228},[4206],{"type":58,"tag":225,"props":4207,"children":4208},{"style":861},[4209],{"type":63,"value":4210},"# Upgrade with new values\n",{"type":58,"tag":225,"props":4212,"children":4213},{"class":227,"line":843},[4214,4218,4223,4227,4231],{"type":58,"tag":225,"props":4215,"children":4216},{"style":232},[4217],{"type":63,"value":2708},{"type":58,"tag":225,"props":4219,"children":4220},{"style":238},[4221],{"type":63,"value":4222}," upgrade",{"type":58,"tag":225,"props":4224,"children":4225},{"style":238},[4226],{"type":63,"value":2275},{"type":58,"tag":225,"props":4228,"children":4229},{"style":238},[4230],{"type":63,"value":2810},{"type":58,"tag":225,"props":4232,"children":4233},{"style":1405},[4234],{"type":63,"value":2815},{"type":58,"tag":225,"props":4236,"children":4237},{"class":227,"line":867},[4238,4242,4246],{"type":58,"tag":225,"props":4239,"children":4240},{"style":238},[4241],{"type":63,"value":2823},{"type":58,"tag":225,"props":4243,"children":4244},{"style":238},[4245],{"type":63,"value":2275},{"type":58,"tag":225,"props":4247,"children":4248},{"style":1405},[4249],{"type":63,"value":2815},{"type":58,"tag":225,"props":4251,"children":4252},{"class":227,"line":889},[4253,4257],{"type":58,"tag":225,"props":4254,"children":4255},{"style":238},[4256],{"type":63,"value":2912},{"type":58,"tag":225,"props":4258,"children":4259},{"style":238},[4260],{"type":63,"value":2917},{"type":58,"tag":225,"props":4262,"children":4263},{"class":227,"line":907},[4264],{"type":58,"tag":225,"props":4265,"children":4266},{"emptyLinePlaceholder":1071},[4267],{"type":63,"value":1074},{"type":58,"tag":225,"props":4269,"children":4270},{"class":227,"line":925},[4271],{"type":58,"tag":225,"props":4272,"children":4273},{"style":861},[4274],{"type":63,"value":4275},"# Upgrade to a new Airflow version\n",{"type":58,"tag":225,"props":4277,"children":4278},{"class":227,"line":951},[4279,4283,4287,4291,4295],{"type":58,"tag":225,"props":4280,"children":4281},{"style":232},[4282],{"type":63,"value":2708},{"type":58,"tag":225,"props":4284,"children":4285},{"style":238},[4286],{"type":63,"value":4222},{"type":58,"tag":225,"props":4288,"children":4289},{"style":238},[4290],{"type":63,"value":2275},{"type":58,"tag":225,"props":4292,"children":4293},{"style":238},[4294],{"type":63,"value":2810},{"type":58,"tag":225,"props":4296,"children":4297},{"style":1405},[4298],{"type":63,"value":2815},{"type":58,"tag":225,"props":4300,"children":4301},{"class":227,"line":969},[4302,4306,4310],{"type":58,"tag":225,"props":4303,"children":4304},{"style":238},[4305],{"type":63,"value":2823},{"type":58,"tag":225,"props":4307,"children":4308},{"style":238},[4309],{"type":63,"value":2275},{"type":58,"tag":225,"props":4311,"children":4312},{"style":1405},[4313],{"type":63,"value":2815},{"type":58,"tag":225,"props":4315,"children":4316},{"class":227,"line":983},[4317,4322,4327,4331,4336],{"type":58,"tag":225,"props":4318,"children":4319},{"style":238},[4320],{"type":63,"value":4321},"  --set",{"type":58,"tag":225,"props":4323,"children":4324},{"style":238},[4325],{"type":63,"value":4326}," defaultAirflowTag=",{"type":58,"tag":225,"props":4328,"children":4329},{"style":629},[4330],{"type":63,"value":1246},{"type":58,"tag":225,"props":4332,"children":4333},{"style":238},[4334],{"type":63,"value":4335},"\u003Cversion>",{"type":58,"tag":225,"props":4337,"children":4338},{"style":629},[4339],{"type":63,"value":1668},{"type":58,"tag":99,"props":4341,"children":4343},{"id":4342},"dag-deployment-strategies-on-kubernetes",[4344],{"type":63,"value":4345},"DAG Deployment Strategies on Kubernetes",{"type":58,"tag":462,"props":4347,"children":4348},{},[4349,4359,4369],{"type":58,"tag":407,"props":4350,"children":4351},{},[4352,4357],{"type":58,"tag":75,"props":4353,"children":4354},{},[4355],{"type":63,"value":4356},"Git-sync",{"type":63,"value":4358}," (recommended): DAGs are synced from a Git repository automatically",{"type":58,"tag":407,"props":4360,"children":4361},{},[4362,4367],{"type":58,"tag":75,"props":4363,"children":4364},{},[4365],{"type":63,"value":4366},"Persistent Volume",{"type":63,"value":4368},": Mount a shared PV containing DAGs",{"type":58,"tag":407,"props":4370,"children":4371},{},[4372,4377],{"type":58,"tag":75,"props":4373,"children":4374},{},[4375],{"type":63,"value":4376},"Baked into image",{"type":63,"value":4378},": Include DAGs in a custom Docker image",{"type":58,"tag":99,"props":4380,"children":4382},{"id":4381},"useful-commands",[4383],{"type":63,"value":4384},"Useful Commands",{"type":58,"tag":214,"props":4386,"children":4388},{"className":216,"code":4387,"language":218,"meta":219,"style":219},"# Check pod status\nkubectl get pods -n airflow\n\n# View scheduler logs\nkubectl logs -f deployment\u002Fairflow-scheduler -n airflow\n\n# Port-forward the API server\nkubectl port-forward svc\u002Fairflow-apiserver 8080:8080 -n airflow\n\n# Run a one-off CLI command\nkubectl exec -it deployment\u002Fairflow-scheduler -n airflow -- airflow dags list\n",[4389],{"type":58,"tag":140,"props":4390,"children":4391},{"__ignoreMap":219},[4392,4400,4426,4433,4441,4469,4476,4484,4514,4521,4529],{"type":58,"tag":225,"props":4393,"children":4394},{"class":227,"line":228},[4395],{"type":58,"tag":225,"props":4396,"children":4397},{"style":861},[4398],{"type":63,"value":4399},"# Check pod status\n",{"type":58,"tag":225,"props":4401,"children":4402},{"class":227,"line":843},[4403,4407,4412,4417,4422],{"type":58,"tag":225,"props":4404,"children":4405},{"style":232},[4406],{"type":63,"value":2697},{"type":58,"tag":225,"props":4408,"children":4409},{"style":238},[4410],{"type":63,"value":4411}," get",{"type":58,"tag":225,"props":4413,"children":4414},{"style":238},[4415],{"type":63,"value":4416}," pods",{"type":58,"tag":225,"props":4418,"children":4419},{"style":238},[4420],{"type":63,"value":4421}," -n",{"type":58,"tag":225,"props":4423,"children":4424},{"style":238},[4425],{"type":63,"value":1149},{"type":58,"tag":225,"props":4427,"children":4428},{"class":227,"line":867},[4429],{"type":58,"tag":225,"props":4430,"children":4431},{"emptyLinePlaceholder":1071},[4432],{"type":63,"value":1074},{"type":58,"tag":225,"props":4434,"children":4435},{"class":227,"line":889},[4436],{"type":58,"tag":225,"props":4437,"children":4438},{"style":861},[4439],{"type":63,"value":4440},"# View scheduler logs\n",{"type":58,"tag":225,"props":4442,"children":4443},{"class":227,"line":907},[4444,4448,4452,4456,4461,4465],{"type":58,"tag":225,"props":4445,"children":4446},{"style":232},[4447],{"type":63,"value":2697},{"type":58,"tag":225,"props":4449,"children":4450},{"style":238},[4451],{"type":63,"value":2165},{"type":58,"tag":225,"props":4453,"children":4454},{"style":238},[4455],{"type":63,"value":2170},{"type":58,"tag":225,"props":4457,"children":4458},{"style":238},[4459],{"type":63,"value":4460}," deployment\u002Fairflow-scheduler",{"type":58,"tag":225,"props":4462,"children":4463},{"style":238},[4464],{"type":63,"value":4421},{"type":58,"tag":225,"props":4466,"children":4467},{"style":238},[4468],{"type":63,"value":1149},{"type":58,"tag":225,"props":4470,"children":4471},{"class":227,"line":925},[4472],{"type":58,"tag":225,"props":4473,"children":4474},{"emptyLinePlaceholder":1071},[4475],{"type":63,"value":1074},{"type":58,"tag":225,"props":4477,"children":4478},{"class":227,"line":951},[4479],{"type":58,"tag":225,"props":4480,"children":4481},{"style":861},[4482],{"type":63,"value":4483},"# Port-forward the API server\n",{"type":58,"tag":225,"props":4485,"children":4486},{"class":227,"line":969},[4487,4491,4496,4501,4506,4510],{"type":58,"tag":225,"props":4488,"children":4489},{"style":232},[4490],{"type":63,"value":2697},{"type":58,"tag":225,"props":4492,"children":4493},{"style":238},[4494],{"type":63,"value":4495}," port-forward",{"type":58,"tag":225,"props":4497,"children":4498},{"style":238},[4499],{"type":63,"value":4500}," svc\u002Fairflow-apiserver",{"type":58,"tag":225,"props":4502,"children":4503},{"style":238},[4504],{"type":63,"value":4505}," 8080:8080",{"type":58,"tag":225,"props":4507,"children":4508},{"style":238},[4509],{"type":63,"value":4421},{"type":58,"tag":225,"props":4511,"children":4512},{"style":238},[4513],{"type":63,"value":1149},{"type":58,"tag":225,"props":4515,"children":4516},{"class":227,"line":983},[4517],{"type":58,"tag":225,"props":4518,"children":4519},{"emptyLinePlaceholder":1071},[4520],{"type":63,"value":1074},{"type":58,"tag":225,"props":4522,"children":4523},{"class":227,"line":997},[4524],{"type":58,"tag":225,"props":4525,"children":4526},{"style":861},[4527],{"type":63,"value":4528},"# Run a one-off CLI command\n",{"type":58,"tag":225,"props":4530,"children":4531},{"class":227,"line":1010},[4532,4536,4540,4545,4549,4553,4557,4562,4566,4570],{"type":58,"tag":225,"props":4533,"children":4534},{"style":232},[4535],{"type":63,"value":2697},{"type":58,"tag":225,"props":4537,"children":4538},{"style":238},[4539],{"type":63,"value":2265},{"type":58,"tag":225,"props":4541,"children":4542},{"style":238},[4543],{"type":63,"value":4544}," -it",{"type":58,"tag":225,"props":4546,"children":4547},{"style":238},[4548],{"type":63,"value":4460},{"type":58,"tag":225,"props":4550,"children":4551},{"style":238},[4552],{"type":63,"value":4421},{"type":58,"tag":225,"props":4554,"children":4555},{"style":238},[4556],{"type":63,"value":2275},{"type":58,"tag":225,"props":4558,"children":4559},{"style":238},[4560],{"type":63,"value":4561}," --",{"type":58,"tag":225,"props":4563,"children":4564},{"style":238},[4565],{"type":63,"value":2275},{"type":58,"tag":225,"props":4567,"children":4568},{"style":238},[4569],{"type":63,"value":2280},{"type":58,"tag":225,"props":4571,"children":4572},{"style":238},[4573],{"type":63,"value":2285},{"type":58,"tag":83,"props":4575,"children":4576},{},[],{"type":58,"tag":87,"props":4578,"children":4580},{"id":4579},"related-skills",[4581],{"type":63,"value":4582},"Related Skills",{"type":58,"tag":403,"props":4584,"children":4585},{},[4586,4596,4612,4622],{"type":58,"tag":407,"props":4587,"children":4588},{},[4589,4594],{"type":58,"tag":75,"props":4590,"children":4591},{},[4592],{"type":63,"value":4593},"setting-up-astro-project",{"type":63,"value":4595},": For initializing a new Astro project",{"type":58,"tag":407,"props":4597,"children":4598},{},[4599,4604,4606],{"type":58,"tag":75,"props":4600,"children":4601},{},[4602],{"type":63,"value":4603},"managing-astro-local-env",{"type":63,"value":4605},": For local development with ",{"type":58,"tag":140,"props":4607,"children":4609},{"className":4608},[],[4610],{"type":63,"value":4611},"astro dev",{"type":58,"tag":407,"props":4613,"children":4614},{},[4615,4620],{"type":58,"tag":75,"props":4616,"children":4617},{},[4618],{"type":63,"value":4619},"authoring-dags",{"type":63,"value":4621},": For writing DAGs before deployment",{"type":58,"tag":407,"props":4623,"children":4624},{},[4625,4630],{"type":58,"tag":75,"props":4626,"children":4627},{},[4628],{"type":63,"value":4629},"testing-dags",{"type":63,"value":4631},": For testing DAGs before deployment",{"type":58,"tag":4633,"props":4634,"children":4635},"style",{},[4636],{"type":63,"value":4637},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":4639,"total":1428},[4640,4654,4666,4683,4697,4714,4727,4739,4754,4768,4778,4791],{"slug":14,"name":14,"fn":4641,"description":4642,"org":4643,"tags":4644,"stars":22,"repoUrl":23,"updatedAt":4653},"manage and troubleshoot Airflow via CLI","Queries, manages, and troubleshoots Apache Airflow using the `af` CLI. Use when working with anything related to Airflow - a DAG, a DAG run, a task log, an import or parse error, a broken DAG, or any Airflow operation. Covers listing and triggering DAGs, retrying runs, reading task logs, diagnosing failures, debugging import and parse errors, checking connections, variables and pools, exploring the REST API, and monitoring health (for example \"trigger a pipeline\", \"retry a run\", \"list connections\", \"check Airflow health\", \"why did my DAG fail\"). This is the entrypoint that routes to sibling skills for authoring, testing, deploying, and migrating Airflow 2 to 3. Not for warehouse\u002FSQL analytics on Airflow metadata tables (use analyzing-data); for deep root-cause reports use debugging-dags or airflow-investigation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4645,4646,4649,4650],{"name":13,"slug":14,"type":15},{"name":4647,"slug":4648,"type":15},"CLI","cli",{"name":17,"slug":18,"type":15},{"name":4651,"slug":4652,"type":15},"Debugging","debugging","2026-04-06T18:01:43.992997",{"slug":4655,"name":4655,"fn":4656,"description":4657,"org":4658,"tags":4659,"stars":22,"repoUrl":23,"updatedAt":4665},"airflow-hitl","add human-in-the-loop steps to Airflow DAGs","Builds human-in-the-loop (HITL) Airflow workflows - approval gates, form input, and human-driven branching. Use when a DAG needs a human in the loop - an approval or reject step, sign-off before a task runs, a decision or approval UI, branching on a human choice, or collecting form input mid-run; also on mentions of ApprovalOperator, HITLOperator, HITLBranchOperator, HITLEntryOperator, or HITLTrigger. Requires Airflow 3.1+. Not for AI\u002FLLM task calls (see migrating-ai-sdk-to-common-ai).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4660,4661,4664],{"name":13,"slug":14,"type":15},{"name":4662,"slug":4663,"type":15},"Approvals","approvals",{"name":17,"slug":18,"type":15},"2026-04-06T18:01:46.758548",{"slug":4667,"name":4667,"fn":4668,"description":4669,"org":4670,"tags":4671,"stars":22,"repoUrl":23,"updatedAt":4682},"airflow-plugins","build Airflow UI plugins","Builds Airflow 3.1+ plugins that embed FastAPI apps, custom UI pages, React components, middleware, macros, and operator links directly into the Airflow UI. Use when building anything custom inside Airflow 3.1+ that involves Python and a browser-facing interface - creating an Airflow plugin, adding a custom UI page or nav entry, building FastAPI-backed endpoints inside Airflow, serving static assets from a plugin, embedding a React app, adding middleware to the API server, creating custom operator extra links, or calling the Airflow REST API from inside a plugin; also when AirflowPlugin, fastapi_apps, external_views, react_apps, or plugin registration come up.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4672,4673,4676,4679],{"name":13,"slug":14,"type":15},{"name":4674,"slug":4675,"type":15},"Plugin Development","plugin-development",{"name":4677,"slug":4678,"type":15},"Python","python",{"name":4680,"slug":4681,"type":15},"UI Components","ui-components","2026-04-06T18:01:56.827891",{"slug":4684,"name":4684,"fn":4685,"description":4686,"org":4687,"tags":4688,"stars":22,"repoUrl":23,"updatedAt":4696},"airflow-state-store","persist Airflow task and asset state","Persists task and asset state across retries and DAG runs using Airflow 3.3's AIP-103 key\u002Fvalue stores (`task_state_store`, `asset_state_store`) and the crash-safe `ResumableJobMixin`. Use when the user asks about task state store, checkpointing in tasks, persisting state across retries, job IDs surviving worker crashes, watermarks, asset metadata, resumable tasks, crash-safe operators, or \"what's new in Airflow 3.3\". Also use proactively when reading a DAG that uses Variables or XCom for intra-task coordination state — flag the anti-pattern and recommend task_state_store or asset_state_store instead. Requires Airflow 3.3+.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4689,4690,4692,4693],{"name":13,"slug":14,"type":15},{"name":4691,"slug":36,"type":15},"Data Engineering",{"name":17,"slug":18,"type":15},{"name":4694,"slug":4695,"type":15},"Operations","operations","2026-07-07T06:43:11.160671",{"slug":4698,"name":4698,"fn":4699,"description":4700,"org":4701,"tags":4702,"stars":22,"repoUrl":23,"updatedAt":4713},"analyzing-data","query data warehouses for business questions","Queries the data warehouse with SQL and answers business questions about data. Use when answering anything that needs warehouse data - counts, metrics, trends, aggregations, joins across tables, data lookups, or ad-hoc SQL analysis (for example \"who uses X\", \"how many Y\", \"show me Z\", \"find customers\", \"what is the count\").",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4703,4706,4709,4710],{"name":4704,"slug":4705,"type":15},"Analytics","analytics",{"name":4707,"slug":4708,"type":15},"Data Analysis","data-analysis",{"name":4691,"slug":36,"type":15},{"name":4711,"slug":4712,"type":15},"SQL","sql","2026-04-06T18:01:49.599775",{"slug":4715,"name":4715,"fn":4716,"description":4717,"org":4718,"tags":4719,"stars":22,"repoUrl":23,"updatedAt":4726},"annotating-task-lineage","annotate Airflow tasks with data lineage","Annotate Airflow tasks with data lineage using inlets and outlets. Use when the user wants to add lineage metadata to tasks, specify input\u002Foutput datasets, or enable lineage tracking for operators without built-in OpenLineage extraction.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4720,4721,4722,4723],{"name":13,"slug":14,"type":15},{"name":4691,"slug":36,"type":15},{"name":17,"slug":18,"type":15},{"name":4724,"slug":4725,"type":15},"Observability","observability","2026-04-06T18:02:03.487365",{"slug":4619,"name":4619,"fn":4728,"description":4729,"org":4730,"tags":4731,"stars":22,"repoUrl":23,"updatedAt":4738},"author Airflow DAGs","Workflow and best practices for writing Apache Airflow DAGs. Use when creating a new DAG, write pipeline code, handling questions about DAG patterns and conventions or extending an existing DAG with a follow-up\u002Fdownstream task. ANY request shaped like 'add a DAG named X', 'write a pipeline', 'add a task that runs after Y', or 'extend the DAG'. For testing and debugging DAGs, see the testing-dags skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4732,4733,4734,4737],{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":4735,"slug":4736,"type":15},"ETL","etl",{"name":4677,"slug":4678,"type":15},"2026-04-06T18:01:52.679888",{"slug":4740,"name":4740,"fn":4741,"description":4742,"org":4743,"tags":4744,"stars":22,"repoUrl":23,"updatedAt":4753},"authoring-go-sdk-tasks","implement Airflow tasks in Go","Writes Airflow task logic in Go using the Airflow Go SDK. Use when the user wants to implement Airflow tasks in Go, asks about `BundleProvider`\u002F`RegisterDags`, the `bundlev1` Registry\u002FDag interfaces, registering Go tasks (`AddTask`\u002F`AddTaskWithName`), dependency injection by parameter type (`context.Context`, `sdk.TIRunContext`, `*slog.Logger`, `sdk.Client`), or reading connections\u002Fvariables\u002FXComs from Go. This skill covers the Go-specific native API; the shared Python-stub pattern and conceptual model live in authoring-language-sdk-tasks. For building\u002Fpacking\u002Fshipping the bundle see deploying-go-sdk-bundles; for coordinator config see configuring-airflow-language-sdks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4745,4746,4749,4750],{"name":13,"slug":14,"type":15},{"name":4747,"slug":4748,"type":15},"API Development","api-development",{"name":17,"slug":18,"type":15},{"name":4751,"slug":4752,"type":15},"Go","go","2026-07-11T05:39:13.552213",{"slug":4755,"name":4755,"fn":4756,"description":4757,"org":4758,"tags":4759,"stars":22,"repoUrl":23,"updatedAt":4767},"authoring-java-sdk-tasks","implement Airflow tasks in Java","Writes Airflow task logic in Java, Kotlin, or any JVM language using the Airflow Java SDK. Use when the user wants to implement Airflow tasks in Java\u002FJVM, asks about `@Builder.Dag`\u002F`@Builder.Task`\u002F`@Builder.XCom`, the `Task`\u002F`BundleBuilder` interfaces, reading connections\u002Fvariables\u002FXComs from Java, the JSON-to-Java type mapping, or logging from Java tasks. This skill covers the Java-specific native API; the shared Python-stub pattern and conceptual model live in authoring-language-sdk-tasks. For building\u002Fshipping the bundle see deploying-java-sdk-bundles; for coordinator config see configuring-airflow-language-sdks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4760,4761,4764],{"name":17,"slug":18,"type":15},{"name":4762,"slug":4763,"type":15},"Engineering","engineering",{"name":4765,"slug":4766,"type":15},"Java","java","2026-07-18T05:48:13.374003",{"slug":4769,"name":4769,"fn":4770,"description":4771,"org":4772,"tags":4773,"stars":22,"repoUrl":23,"updatedAt":4777},"authoring-language-sdk-tasks","implement non-Python Airflow tasks","The language-neutral foundation for Airflow language SDKs — implement task logic in a non-Python language while the DAG stays in Python. Use when the user wants to run an Airflow task in another language (Java, Kotlin, Go, or other JVM\u002Fnative languages), asks how the Python `@task.stub` pairs with native task code, how task\u002FDAG IDs must match across the two sides, how data passes via XCom as JSON, or which language SDKs exist. This skill owns the shared Python-stub pattern and conceptual model; for a specific language's native API, build, and runtime, use that language's skill (e.g. authoring-java-sdk-tasks, authoring-go-sdk-tasks).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4774,4775,4776],{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":4762,"slug":4763,"type":15},"2026-07-18T05:11:54.496539",{"slug":4779,"name":4779,"fn":4780,"description":4781,"org":4782,"tags":4783,"stars":22,"repoUrl":23,"updatedAt":4790},"blueprint","build reusable Airflow task group templates","Define reusable Airflow task group templates with Pydantic validation and compose DAGs from YAML. Use when creating blueprint templates, composing DAGs from YAML, validating configurations, or enabling no-code DAG authoring for non-engineers.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4784,4785,4786,4787],{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":4735,"slug":4736,"type":15},{"name":4788,"slug":4789,"type":15},"Templates","templates","2026-04-06T18:01:45.361425",{"slug":4792,"name":4792,"fn":4793,"description":4794,"org":4795,"tags":4796,"stars":22,"repoUrl":23,"updatedAt":4803},"checking-freshness","check data freshness in warehouses","Quick data freshness check. Use when the user asks if data is up to date, when a table was last updated, if data is stale, or needs to verify data currency before using it.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4797,4798,4799,4802],{"name":13,"slug":14,"type":15},{"name":4691,"slug":36,"type":15},{"name":4800,"slug":4801,"type":15},"Data Quality","data-quality",{"name":4735,"slug":4736,"type":15},"2026-04-06T18:02:02.138565",{"items":4805,"total":1428},[4806,4813,4819,4826,4833,4840,4847],{"slug":14,"name":14,"fn":4641,"description":4642,"org":4807,"tags":4808,"stars":22,"repoUrl":23,"updatedAt":4653},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4809,4810,4811,4812],{"name":13,"slug":14,"type":15},{"name":4647,"slug":4648,"type":15},{"name":17,"slug":18,"type":15},{"name":4651,"slug":4652,"type":15},{"slug":4655,"name":4655,"fn":4656,"description":4657,"org":4814,"tags":4815,"stars":22,"repoUrl":23,"updatedAt":4665},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4816,4817,4818],{"name":13,"slug":14,"type":15},{"name":4662,"slug":4663,"type":15},{"name":17,"slug":18,"type":15},{"slug":4667,"name":4667,"fn":4668,"description":4669,"org":4820,"tags":4821,"stars":22,"repoUrl":23,"updatedAt":4682},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4822,4823,4824,4825],{"name":13,"slug":14,"type":15},{"name":4674,"slug":4675,"type":15},{"name":4677,"slug":4678,"type":15},{"name":4680,"slug":4681,"type":15},{"slug":4684,"name":4684,"fn":4685,"description":4686,"org":4827,"tags":4828,"stars":22,"repoUrl":23,"updatedAt":4696},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4829,4830,4831,4832],{"name":13,"slug":14,"type":15},{"name":4691,"slug":36,"type":15},{"name":17,"slug":18,"type":15},{"name":4694,"slug":4695,"type":15},{"slug":4698,"name":4698,"fn":4699,"description":4700,"org":4834,"tags":4835,"stars":22,"repoUrl":23,"updatedAt":4713},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4836,4837,4838,4839],{"name":4704,"slug":4705,"type":15},{"name":4707,"slug":4708,"type":15},{"name":4691,"slug":36,"type":15},{"name":4711,"slug":4712,"type":15},{"slug":4715,"name":4715,"fn":4716,"description":4717,"org":4841,"tags":4842,"stars":22,"repoUrl":23,"updatedAt":4726},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4843,4844,4845,4846],{"name":13,"slug":14,"type":15},{"name":4691,"slug":36,"type":15},{"name":17,"slug":18,"type":15},{"name":4724,"slug":4725,"type":15},{"slug":4619,"name":4619,"fn":4728,"description":4729,"org":4848,"tags":4849,"stars":22,"repoUrl":23,"updatedAt":4738},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4850,4851,4852,4853],{"name":13,"slug":14,"type":15},{"name":17,"slug":18,"type":15},{"name":4735,"slug":4736,"type":15},{"name":4677,"slug":4678,"type":15}]