Запуск Apache Airflow в Kubernetes: несколько методов и примеры кода

Apache Airflow — это платформа с открытым исходным кодом, используемая для организации и планирования сложных рабочих процессов. Kubernetes, с другой стороны, представляет собой систему оркестровки контейнеров, которая упрощает развертывание и управление контейнерными приложениями. Сочетание мощи Airflow с Kubernetes может обеспечить масштабируемую и надежную среду для выполнения рабочих процессов. В этой статье блога мы рассмотрим несколько методов запуска Airflow в Kubernetes, а также приведем примеры кода.

Метод 1: использование диаграммы управления

Helm — это менеджер пакетов для Kubernetes, который упрощает развертывание приложений и управление ими. Airflow предоставляет официальную диаграмму Helm, которую можно использовать для ее развертывания в Kubernetes. Вот шаги, которые необходимо выполнить:

  1. Установить Helm: если вы еще не установили Helm, вы можете следовать официальной документации, чтобы установить его на свой локальный компьютер.

  2. Добавьте репозиторий Airflow Helm:

    helm repo add apache-airflow https://airflow.apache.org
    helm repo update
  3. Установите Airflow с помощью Helm:

    helm install my-airflow apache-airflow/airflow

Метод 2. Использование YAML-манифеста Kubernetes

Если вы предпочитаете использовать YAML-манифесты Kubernetes для развертывания Airflow, вы можете выполнить следующие действия:

  1. Создайте пространство имен:

    kubectl create namespace my-airflow
  2. Создайте PersistentVolumeClaim (PVC) для базы данных Airflow:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
     name: airflow-db-pvc
     namespace: my-airflow
    spec:
     storageClassName: standard
     accessModes:
       - ReadWriteOnce
     resources:
       requests:
         storage: 10Gi
  3. Создайте развертывание для Airflow:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
     name: airflow
     namespace: my-airflow
    spec:
     replicas: 1
     selector:
       matchLabels:
         app: airflow
     template:
       metadata:
         labels:
           app: airflow
       spec:
         containers:
           - name: airflow
             image: apache/airflow:latest
             ports:
               - containerPort: 8080
             volumeMounts:
               - name: airflow-db
                 mountPath: /opt/airflow/airflow.db
         volumes:
           - name: airflow-db
             persistentVolumeClaim:
               claimName: airflow-db-pvc
  4. Примените манифесты YAML:

    kubectl apply -f airflow.yaml

Метод 3. Использование операторов Kubernetes

Операторы Kubernetes — это специальные контроллеры, расширяющие функциональность Kubernetes API. Доступно несколько операторов Airflow, которые упрощают развертывание Airflow и управление им в Kubernetes. Одним из популярных операторов является оператор-астроном. Вот шаги по его использованию:

  1. Установить Astronomer Operation:

    helm repo add astronomer https://helm.astronomer.io
    helm repo update
    helm install my-operator astronomer/astro-operator
  2. Создайте экземпляр Airflow с помощью оператора:

    apiVersion: astro.astronomer.io/v1alpha1
    kind: Astro
    metadata:
     name: my-airflow
     namespace: my-namespace
    spec:
     version: "2.1.0"

В этой статье мы рассмотрели несколько способов запуска Apache Airflow в Kubernetes. Вы можете выбрать тот метод, который соответствует вашим требованиям и предпочтениям. Независимо от того, используете ли вы диаграммы Helm, YAML-манифесты Kubernetes или такие операторы, как Astronomer Operations, запуск Airflow в Kubernetes обеспечивает масштабируемую и гибкую среду для эффективного управления вашими рабочими процессами.