В этом руководстве вы собираетесь развернуть простую облачную функцию, запускаемую событием облачного хранилища, с помощью Terraform.
Облачные функции — это масштабируемые функции как услуга (FaaS) с оплатой по мере использования от Google Cloud Platform (GCP) для запуска вашего кода без управления сервером.
Облачные функции могут быть написаны на языках программирования Node.js, Python, Go, Java, .NET, Ruby и PHP. Для удобочитаемости это руководство будет содержать облачную функцию, написанную на Python. Но, пожалуйста, не стесняйтесь выбирать предпочитаемый язык программирования.
Terraform — это инструмент разработки инфраструктура как код (IaC), который позволяет создавать, изменять и версионировать инфраструктуру безопасно, воспроизводимо и эффективно. Он кодирует облачные API (GCP, AWS, Azure, …) в декларативные файлы конфигурации.
В конце этого руководства у вас будет запущена облачная функция, как только файл будет загружен в корзину Google Cloud Storage.
Предпосылки
Чтобы следовать этому руководству, вам понадобятся:
- Terraform установлен на вашей локальной машине.
- Google Cloud SDK установлен на вашем локальном компьютере.
- Проект Google Cloud Platform, настроенный и привязанный к платежной учетной записи. Убедитесь, что облачные функции API включен.
Затем вы можете пройти аутентификацию с помощью GCP на вашем локальном компьютере с запущенным gcloud auth application-default login
в вашем терминале.
Цели
Цель этого руководства — использовать Terraform для развертывания в проекте GCP:
- ведро для загрузки файлов.
- ведро для хранения исходного кода облачной функции.
- облачная функция, которая запускается каждый раз, когда файл загружается в первую корзину, а исходный код находится во второй корзине.
Структура проекта
Вы можете создать новую папку, которую я назвал cloud_function_project
, но, пожалуйста, не стесняйтесь выбирать имя, которое вам удобно.
Затем создайте файлы, как указано ниже. Оставьте их пока пустыми, и вы завершите их по ходу обучения.
.cloud_function_project/ │
├── terraform/ │ │ │ ├── backend.tf │ ├── function.tf │ ├── main.tf │ ├── storage.tf │ └── variables.tf │ └── src/ │ ├── main.py
└── requirements.txt
Прежде чем вы начнете подавать разные файлы, мы быстро пройдемся по роли каждого из них.
Папка src
содержит исходный код облачной функции. Это структура, специфичная для Python.
main.py
: исходный код облачных функций.requirements.txt
: список библиотек Python, необходимых для запускаmain.py
. (вам это не понадобится в этом уроке)
Папка terraform
содержит файлы конфигурации среды для развертывания.
backend.tf
: объявление бэкенда Terraform.main.tf
: основные декларации окружения.variables.tf
: определение переменных.storage.tf
: объявление корзины Google Cloud Storage.function.tf
: объявление облачной функции.
Создайте облачную функцию
Написание и запуск облачной функции не является важной частью этого руководства. Вы развернете функцию, которая будет регистрировать некоторую полезную информацию о файле, который был загружен в корзину для отслеживания.
Примечание. Эта функция не имеет необходимых требований, поэтому
requirements.txt
остается пустым.
Примечание. это облачная функция Python, поэтому вы можете изменить источник кода в соответствии с выбранный вами язык программирования.
Создайте инфраструктуру Terraform
Бэкенд
Начните объявлять свою среду, указав серверную часть Terraform. Вы можете выбрать local
, что означает, что все файлы состояния будут храниться в локальном каталоге. Вы также можете выбрать бэкэнд gcs
, но давайте не будем усложнять.
Переменные
Объявите переменные, используемые в файлах Terraform. Вам нужно изменить переменную project_id
в соответствии с идентификатором проекта, в котором вы хотите развернуть ресурсы. Конечно, вы также можете изменить файл region
.
Основной
Объявите о подключении к провайдеру Google.
Облачное хранилище Google
Объявите две корзины Google Cloud Storage соответственно для хранения кода облачной функции и загрузки файлов.
Примечание. Имена сегментов начинаются с префикса
project_id
, потому что сегменты должны иметь уникальные имена.
Облачная функция Google
Последний шаг: объявите облачную функцию. Для этого необходимо сжать исходный код в zip-файл и загрузить его в корзину для хранения. Затем к исходному коду можно получить доступ при создании облачной функции с помощью Terraform.
Примечание. Файл немного длинный, поэтому не стесняйтесь просматривать комментарии, чтобы понять логику.
Развернуть среду
Все готово к развертыванию. Перейдите в корень проекта в вашем терминале, затем в корень папки terraform
.
$ cd ./terraform
Инициализируйте свой код, чтобы загрузить требования, упомянутые в вашем коде.
$ terraform init
Просмотрите изменения.
$ terraform plan
Примите изменения и примените их к реальной инфраструктуре.
$ terraform apply
Проверьте свою облачную функцию
Для проверки все работает нормально:
- Откройте Google Cloud Console и подключитесь к вашему проекту.
- Перейдите в Браузер Google Cloud Storage.
- Вы можете увидеть ведра
<YOUR-PROJECT-ID>-function
и<YOUR-PROJECT-ID>-input
. Нажмите на корзину с именем<YOUR-PROJECT-ID>-input
и загрузите в нее любой файл, чтобы активировать облачную функцию. - Чтобы убедиться, что это сработало, перейдите в Список облачных функций. Здесь должна быть облачная функция с именем
function-trigger-on-gcs
. Нажмите на его имя и перейдите на вкладкуLOGS
, чтобы увидеть, что он был вызван загруженным вами файлом.
Знаниями нужно делиться.
Поддержите меня и получите доступ ко всем моим статьям в одним кликом здесь сильный>.
Идти дальше
Надеюсь, вам понравился этот краткий учебник по развертыванию облачной функции. Можно применить множество улучшений. Ты можешь:
- установить IAM-политику.
- добавить переменные и преобразовать этот код в модуль Terraform для повторного использования.
- интегрируйте развертывание в процесс Cloud Build для непрерывного развертывания.
- многое другое…