Джина как сделать

Джина ❤️ Terraform

Легко определяйте свою инфраструктуру Jina с помощью кода

Всем привет!

Недавно я работал с Terraform и возился с ним, чтобы увидеть, как мы можем интегрировать его с Jina, поэтому я решил поделиться с вами всем, что у меня есть.

Первым делом нужно было посмотреть, что такое Terraform и почему все так взволнованы этим. Согласно их сайту:

Terraform - это инструмент для безопасного и эффективного создания, изменения и управления версиями инфраструктуры. Terraform может управлять существующими и популярными поставщиками услуг, а также настраивать собственные решения.

Это много причудливых слов, чтобы сказать, что это способ определить вашу инфраструктуру с помощью кода. Нет необходимости заходить в консоль AWS и определять там все части инфраструктуры. Это очень удобно, так как отлаживать проще, когда у вас есть все в одном скрипте, так что вы можете видеть все детали в одном месте.

Прохладный! Хорошо, продано, что теперь?

Давайте настроим наш пример Южный парк и вместо того, чтобы запускать наш образ Docker локально и затем проверять результаты с помощью Curl, давайте настроим все на экземпляре AWS и будем использовать этот URL. И, конечно же, поскольку в противном случае этот пост не имел бы смысла и вместо этого я мог бы вздремнуть, давайте настроим инфраструктуру с помощью Terraform.

Что вам понадобится?

  1. Terraform
  2. Аккаунт AWS
  3. Образ Docker Южный парк

Первым делом нужно установить Terraform, и установка будет зависеть от вашей ОС. Я использую macOS и установил через Homebrew:

brew install terraform

После его установки вам необходимо настроить AWS, поэтому на консоли первая команда, которую вы запустите, будет:

aws configure

Это потребует учетных данных вашей учетной записи AWS. После того, как вы установите это, вам не нужно будет указывать ключи с помощью кода, что хорошо, потому что это плохая практика, и ваша учетная запись окажется в карантине ... это могло случиться или не случиться со мной.

Ok! у нас есть все настройки, и мы можем начать писать наш файл Terraform.

Что творится? Что произойдет?

  1. Создайте репозиторий образов в AWS и отправьте наш образ докера Южного парка.
  2. Создание кластера и задачи ECS
  3. Создайте сервис ECS и балансировщик нагрузки

Создайте репозиторий образов в AWS и разместите наш образ Docker в Южном парке

У нас уже есть образ Docker с примером South Park, поэтому нам не нужно создавать новый.

Итак, первым делом создадим наш скрипт Terraform. Его можно называть как угодно, но с расширением .tf:

Первая часть - создание провайдера: с Terraform вы можете использовать AWS, Azure, Google Cloud Platform или многие другие, или даже напишите свой, если вам кажется, что жизнь слишком скучна, и вы являетесь экспертом в го. Все, что плывет на вашей лодке. В этом примере мы будем использовать AWS. Вторая часть - создать наш репозиторий, и нам просто нужно указать для него имя. Теги всегда необязательны.

Это самый простой файл Terraform, который у вас есть. Если вы запустите это, Terraform создаст для вас репозиторий AWS, так что давайте сделаем это.

Вы можете запустить:

terraform plan

И это распечатает план со всеми ресурсами, которые будут созданы, изменены или удалены. В этом случае мы только создаем ресурс, чтобы он это показал. Эту команду всегда удобно выполнять для проверки работоспособности, поэтому вы видите, что произойдет до того, как это произойдет, и, если мы согласны с этим, мы запускаем сценарий с помощью:

terraform apply

После запуска, если мы перейдем в нашу консоль AWS, мы увидим, что sp-repo был создан:

Отлично, у нас готов репозиторий. Но на данный момент он пуст, поэтому нам нужно вставить в него наш образ South Park Docker. Для этого щелкните имя репозитория, а затем в правом верхнем углу вы увидите кнопку «Просмотр команд push»:

Мы будем использовать эту информацию для отправки нашего образа Docker:

Выполните указанные здесь шаги, кроме шага 2. Нам это не нужно, поскольку у нас уже есть образ Docker. После того, как вы это сделаете, у вас должно быть изображение Южного парка в вашем хранилище. Ура.

Создать кластер и задачу

Следующим шагом будет создание кластера:

Хорошо, для задачи нам понадобится еще несколько деталей:

Для этого мы установим URL-адрес нашего образа Docker и установим порты на 45678, как в примере South Park.

Если вы запустите terraform apply , вы должны увидеть новый кластер с прикрепленной к нему задачей.

Создание службы и балансировщика нагрузки

Хорошо, теперь мы хотим создать сервис, который будет использовать только что созданную задачу в качестве чертежа. Здесь мы зададим имя сервиса, ссылку на наш кластер и на только что выполненную задачу. У нас только один контейнер, поэтому мы устанавливаем desired_count на 1

Нам нужен балансировщик нагрузки в качестве точки доступа к нашему контейнеру. Балансировщику нагрузки нужна группа безопасности, поэтому нам нужно создать и ее:

Идея в том, что весь трафик будет получать наш load_balancer_security_group (ALB), а service_security_group будет получать только от ALB.

Просто для отладки у нас также есть вывод, который показывает нам URL-адрес для доступа к нашему примеру Южного парка:

Если вы запустите terraform apply , теперь у вас будет кластер с одной задачей и одной запущенной на нем службой:

Также в вашем терминале вы увидите вывод с URL-адресом для проверки наших результатов с помощью CURL, как в примере South Park.

Вот и все! Но непосредственно перед тем, как пойти и вздремнуть, сделайте terraform destroy , если он вам больше не понадобится, чтобы высвободить все ресурсы и не платить дополнительную плату в AWS, если вы используете бесплатную версию. .