Как обновить gcloud на рабочих узлах Google Cloud Composer?

#python #google-cloud-platform #airflow #gcloud #google-cloud-composer

#python #google-облачная платформа #поток воздуха #gcloud #google-cloud-composer

Вопрос:

Здесь возникает аналогичный вопрос, но с 2018 года решение требует изменения базового образа для рабочих. Другое предложение — подключить ssh к каждому узлу и установить там apt-get. Это не кажется полезным, потому что, когда автоматическое масштабирование порождает новые узлы, вам нужно будет делать это снова и снова.

В любом случае, есть ли разумный способ обновить базовый gcloud в конце 2020 года?

Комментарии:

1. Что не так с изменением базового образа? Можете ли вы предоставить какие-либо подробности, какое изображение вы используете и какой аналогичный вопрос?

2. Что плохого в том, чтобы возиться с базовым изображением, так это то, что тогда мне придется создавать и управлять этим изображением, что противоположно тому, что предлагает использование управляемого сервиса.

3. Итак, вы имеете в виду изменение (существующего) вместо изменения (для другого изображения). Нет более новой версии образа, соответствующей вашим потребностям?

4. @yedpodtrzitko Composer поддерживает собственные версии изображений, которые автоматически обрабатывают изображения в кластере Kubernetes среды. Изменение изображений вручную для служб в рамках этих кластеров считается «негарантийным» и, как правило, не рекомендуется.

5. Спасибо за ответ. Это то, что, как я предполагал, будет иметь место для управляемой службы на GCP, и, следовательно, почему я склонялся к тому, чтобы идти по этому пути.

Ответ №1:

Поскольку экземпляры задач выполняются в общей среде выполнения, обычно не рекомендуется использовать gcloud CLI в задачах Composer Airflow, когда это возможно, чтобы избежать конфликтов состояний или версий. Например, если у вас несколько пользователей, использующих одну и ту же среду Cloud Composer, и один из них изменяет активные учетные данные, используемые gcloud, то они могут неосознанно нарушать рабочие процессы другого.

Вместо этого рассмотрите возможность использования библиотек Cloud SDK Python для выполнения того, что вам нужно делать программно, или используйте airflow.providers.google.cloud операторы, в которых, возможно, уже есть то, что вам нужно.

Если вам действительно нужно использовать gcloud CLI и вы не используете среду общего доступа, вы можете использовать сценарий BashOperator установки / обновления для создания предварительного условия для любых задач, требующих использования CLI. Кроме того, вы можете создать пользовательский образ Docker с установленным gcloud и использовать GKEPodOperator или KubernetesPodOperator для запуска модуля Kubernetes pod для выполнения команды CLI. Это было бы медленнее, но надежнее, чем проверять зависимости каждый раз.

Комментарии:

1. Спасибо за ответы. Я уже широко использую Python SDK для многих сервисов GCP. К сожалению, пока не существует SDK для запуска Google Cloud. Конкретно, то, что я хочу сделать с Composer, — это обновить версию Cloud Run, чтобы добавить к ней пользовательский тег (чтобы я мог получить доступ к версии, не привлекая к ней трафик).). В версии gcloud 1.10.6-composer Google Cloud SDK 300.0.0, beta 2020.07.06, core 2020.07.06 эта функция, по-видимому, недоступна.

2. Что я делал, пока не появилась более естественная альтернатива: я делаю, как вы предлагаете, и запускаю команду bash для обновления gcloud в качестве задачи в моей базе данных. Не особенно горжусь этим, но он выполняет свою работу. Я подумал о том, чтобы эта часть моей базы данных запускала сборку Google Cloud Build, но в нашем случае было бы чище оставаться на 100% в Composer.