Создать кластер Apache Airflow™
Кластер Apache Airflow™ создается ресурсом AirflowCluster в пространстве имен проекта. Перед созданием кластера администратор установки должен включить Managed Service for Apache Airflow™.
База метаданных создается автоматически. Настраивать подключение к базе не требуется.
Перед началом
Подготовьте:
- пространство имен проекта;
- Git-репозиторий с DAG-файлами или S3-совместимое хранилище;
- S3-совместимое хранилище, если нужны удаленные логи задач;
- Secret с учетными данными, если используется приватный Git-репозиторий или внешнее S3-хранилище.
Создайте Secret и ConfigMap, на которые ссылается конфигурация, в том же пространстве имен, что и AirflowCluster.
Для автоматически создаваемых бакетов должен быть включен компонент Object Storage.
Проверьте доступные версии Apache Airflow™:
kubectl get airflowimagecatalog airflow \
-o jsonpath='{range .spec.images[*]}{.version}{"\n"}{end}'
Если команда не выводит версии, посмотрите структуру ресурса: kubectl get airflowimagecatalog airflow -o yaml.
Через CLI
-
Создайте файл ресурса
AirflowCluster, напримерairflow-cluster.yaml, и вставьте одну из конфигураций:Git и локальные логиObject Storage для DAG и логовПример использует публичный Git-репозиторий и локальные логи задач.
apiVersion: airflow.stackland.yandex.cloud/v1alpha1 kind: AirflowCluster metadata: name: airflow-demo spec: version: "3.1.8" dags: source: git git: repo: https://github.com/example/airflow-dags.git ref: main publicAccess: true deletionProtection: trueПример создает отдельные бакеты для DAG-файлов и логов задач. DAG-файлы загружаются из префикса
dags/в бакете.apiVersion: airflow.stackland.yandex.cloud/v1alpha1 kind: AirflowCluster metadata: name: airflow-demo spec: version: "3.1.8" dags: source: s3 s3: type: stackland-storage stacklandStorage: subPath: dags/ taskLogs: type: stackland-storage stacklandStorage: subPath: logs/ publicAccess: true deletionProtection: true -
Укажите имя кластера в
metadata.nameи доступную версию вspec.version. Для Git-источника замените URL репозитория и значениеrefна свои.В обоих примерах включены публичный доступ к веб-интерфейсу (
spec.publicAccess: true) и защита от удаления (spec.deletionProtection: true). При необходимости измените эти параметры. -
Примените манифест:
kubectl apply -f airflow-cluster.yaml -n <пространство_имен>Пространство имен также можно указать в
metadata.namespaceманифеста и не передавать параметр-nв команде. -
Дождитесь состояния
Ready, подставив имя кластера изmetadata.name:kubectl get airflowcluster <имя_кластера> \ -n <пространство_имен> \ -w -
Если кластер долго остается в
Provisioningили переходит вFailed, проверьте условия состояния вstatus.conditions:kubectl describe airflowcluster <имя_кластера> -n <пространство_имен>Рекомендации приведены в разделе Устранение неполадок.
Приватный Git-репозиторий
Для HTTPS создайте Secret с фиксированными ключами username и password:
kubectl create secret generic airflow-git-auth \
-n <пространство_имен> \
--from-literal=username=<имя_пользователя> \
--from-literal=password=<токен_или_пароль>
Добавьте ссылку в spec.dags.git.authSecretRef манифеста:
spec:
dags:
source: git
git:
repo: https://git.example.com/team/airflow-dags.git
ref: main
authSecretRef:
name: airflow-git-auth
Для SSH Secret должен содержать ключ ssh-privatekey, а ConfigMap — ключ known_hosts:
spec:
dags:
source: git
git:
repo: git@git.example.com:team/airflow-dags.git
ref: main
authSecretRef:
name: airflow-git-ssh
knownHostsConfigMapRef:
name: airflow-git-known-hosts
Интервал синхронизации Git и S3 составляет 60 секунд и не настраивается.
Внешнее S3-хранилище
Создайте Secret с ключами доступа:
kubectl create secret generic airflow-s3-credentials \
-n <пространство_имен> \
--from-literal=access-key-id=<идентификатор_ключа> \
--from-literal=secret-access-key=<секретный_ключ>
Для DAG-файлов задайте в spec:
spec:
dags:
source: s3
s3:
type: s3
s3:
bucket: airflow-dags
region: ru-central1
endpointUrl: https://storage.yandexcloud.net
credentialsSecretRef:
name: airflow-s3-credentials
accessKeyIdPath: access-key-id
secretAccessKeyPath: secret-access-key
subPath: dags/
Для удаленных логов задайте в spec поле taskLogs:
spec:
taskLogs:
type: s3
s3:
bucket: airflow-logs
region: ru-central1
endpointUrl: https://storage.yandexcloud.net
credentialsSecretRef:
name: airflow-s3-credentials
accessKeyIdPath: access-key-id
secretAccessKeyPath: secret-access-key
subPath: logs/
Дальнейшие действия
- Получите учетные данные администратора.
- Откройте веб-интерфейс Apache Airflow™.
- Измените настройки кластера, если требуется настроить ресурсы или зависимости.