Обновление версии Apache Airflow™ и Python
Со списком поддерживаемых версий можно ознакомиться в разделе Версионирование.
При обновлении версий в Managed Service for Apache Airflow™ вы можете изменить:
-
Версию Python на любую поддерживаемую для текущей версии Apache Airflow™.
-
Версию Apache Airflow™ на следующую поддерживаемую в рамках одной ветки —
2.Xили3.X.Обновление Apache Airflow™ версий
2.Xдо3.Xнедоступно. Чтобы перейти на версию3.X, создайте новый кластер и подключите к нему хранилище DAG-файлов старого кластера.
В сервисе недоступно одновременное обновление версии Apache Airflow™ и Python, так как пользовательские зависимости могут перестать работать на более новых версиях Python.
Например, чтобы обновить кластер с Apache Airflow™ 2.8 и Python 3.8 до Apache Airflow™ 2.10 и Python 3.12:
- Обновите версию Python до
3.10и проверьте работоспособность кластера с учетом используемых зависимостей. - Обновите версию Apache Airflow™ до
2.10и проверьте работоспособность кластера после миграции БД. - Обновите версию Python до
3.12и снова проверьте работоспособность используемых зависимостей.
Об обновлениях в рамках одной версии и обслуживании хостов см. в разделе Техническое обслуживание.
Внимание
Перед обновлением убедитесь, что это не нарушит работу ваших приложений — изучите историю изменений Apache Airflow™
После обновления версии Apache Airflow™ вернуть кластер к предыдущей версии невозможно.
Чтобы обновить версию Apache Airflow™ или Python:
- В консоли управления
перейдите в нужный каталог. - Перейдите в сервис Managed Service for Apache Airflow™.
- В строке с нужным кластером нажмите на значок
, затем выберите Редактировать. - В поле Версия выберите нужную версию Apache Airflow™ и Python.
- Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы обновить версию Apache Airflow™ или Python:
-
Получите список ваших кластеров Managed Service for Apache Airflow™:
yc managed-airflow cluster list -
Получите информацию о нужном кластере и проверьте версии в свойствах
config.airflow_versionиconfig.python_version:yc managed-airflow cluster get <имя_или_идентификатор_кластера> -
Чтобы обновить версию Apache Airflow™, выполните команду:
yc managed-airflow cluster update <имя_или_идентификатор_кластера> \ --airflow-version=<номер_новой_версии> -
Чтобы обновить версию Python, выполните команду:
yc managed-airflow cluster update <имя_или_идентификатор_кластера> \ --python-version=<номер_новой_версии>
Чтобы обновить версию Apache Airflow™ или Python:
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Добавьте к описанию кластера параметр
airflow_versionилиpython_versionили измените его значение, если он уже существует:resource "yandex_airflow_cluster" "<имя_кластера>" { ... airflow_version = "<версия_Apache_Airflow™>" python_version = "<версия_Python>" } -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform.
Чтобы обновить версию Apache Airflow™ или Python:
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.Update и выполните запрос, например с помощью cURL
.Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
updateMask(одной строкой через запятую).-
Чтобы обновить версию Apache Airflow™, выполните запрос:
curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://airflow.api.cloud.yandex.net/managed-airflow/v1/clusters/<идентификатор_кластера>' \ --data '{ "updateMask": "airflowVersion", "airflowVersion": "<версия_Apache_Airflow™>" }'Где:
-
updateMask— перечень изменяемых параметров. Укажите только параметрairflowVersion. -
airflowVersion— версия Apache Airflow™, до которой нужно обновиться.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Чтобы обновить версию Python, выполните запрос:
curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://airflow.api.cloud.yandex.net/managed-airflow/v1/clusters/<идентификатор_кластера>' \ --data '{ "updateMask": "pythonVersion", "pythonVersion": "<версия_Python>" }'Где:
-
updateMask— перечень изменяемых параметров. Укажите только параметрpythonVersion. -
pythonVersion— версия Python, до которой нужно обновиться.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Чтобы обновить версию Apache Airflow™ или Python:
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService/Update и выполните запрос, например с помощью gRPCurl
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
update_mask(в виде массива строкpaths[]).Формат перечисления настроек
"update_mask": { "paths": [ "<настройка_1>", "<настройка_2>", ... "<настройка_N>" ] }-
Чтобы обновить версию Apache Airflow™, выполните запрос:
grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/airflow/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "update_mask": { "paths": [ "airflow_version" ] }, "airflow_version": "<версия_Apache_Airflow™>" }' \ airflow.api.cloud.yandex.net:443 \ yandex.cloud.airflow.v1.ClusterService.UpdateГде:
-
update_mask— перечень изменяемых параметров. Укажите только параметрairflow_version. -
airflow_version— версия Apache Airflow™, до которой нужно обновиться.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Чтобы обновить версию Python, выполните запрос:
grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/airflow/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "update_mask": { "paths": [ "python_version" ] }, "python_version": "<версия_Python>" }' \ airflow.api.cloud.yandex.net:443 \ yandex.cloud.airflow.v1.ClusterService.UpdateГде:
-
update_mask— перечень изменяемых параметров. Укажите только параметрpython_version. -
python_version— версия Python, до которой нужно обновиться.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Примеры
Допустим, нужно обновить версию Apache Airflow™ с 2.10 до 2.11, а версию Python — с 3.10 до 3.12.
-
Чтобы получить список кластеров и узнать их идентификаторы и имена, выполните команду:
yc managed-airflow cluster list+----------------------+------------+---------------------+--------+---------+ | ID | NAME | CREATED AT | HEALTH | STATUS | +----------------------+------------+---------------------+--------+---------+ | c9qqhh2u3r20******** | airflow411 | 2026-02-26 15:39:33 | ALIVE | RUNNING | +----------------------+------------+---------------------+--------+---------+ -
Чтобы получить информацию о кластере с именем
airflow411, выполните команду:yc managed-airflow cluster get airflow411Результат:
id: c9qqhh2u3r20******** ... config: ... airflow-version: "2.10" python-version: "3.10" -
Для обновления версии Apache Airflow™ до
2.11выполните команду:yc managed-airflow cluster update airflow411 \ --airflow-version=2.11Дождитесь завершения операции.
-
Для обновления версии Python до
3.12выполните команду:yc managed-airflow cluster update airflow411 \ --python-version=3.12
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
-
В описании кластера укажите в поле
airflow_versionзначение2.11:resource "yandex_airflow_cluster" "<имя_кластера>" { ... airflow_version = "2.11" ... } -
Примените изменения:
terraform apply -
В поле
python_versionукажите значение3.12:resource "yandex_airflow_cluster" "<имя_кластера>" { ... python_version = "3.12" ... } -
Примените изменения еще раз:
terraform apply