Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Terraform 1 #5

Merged
merged 5 commits into from
Nov 9, 2018
Merged

Terraform 1 #5

merged 5 commits into from
Nov 9, 2018

Conversation

Kirill-Garbar
Copy link
Collaborator

Выполнено ДЗ № 6

  • Основное ДЗ
  • Задание со *
  • Задание со **

В процессе сделано:

  • Удалили ключ из метаданных проекта, чтобы протестировать добавление ключа через метаданый ресурса.
  • Я перевёз средство разработки из Linux nano в MS VS Code. Пришлось заново настроить аутентификацию пакера и терраформа в gcloud.
  • Создали ВМ из образа reddit-base. Посмотрели tfstate, грепнули его, чтобы получить IP-адрес.
  • Создали output переменные. После редактирования ВМ сразу в консоль выводился IP-адрес.
  • Создали ресурс правило фаерволла для нашего приложения. Удалил старое правило из прошлых дз для чистоты эксперимента.
  • Добавили provisioners для деплоя приложения, добавили systemd unit из прошлого ДЗ со *.
  • Добавили входные переменные.
  • Использовали полезную команду terraform fmt для автоматического форматирования конфигов терраформа.
  • Пометили ВМ для пересоздания командой terraform taint.resource_type.resource_name.
  • Добавили несколько юзеров с ключами в метаданные проекта. Изменения применились не сразу, т.к. у меня в ЛК были созданы ещё какие-то старые экспериментальные ключи. Конфиг применился только после ручного удаления юзеров. Было бы неплохо этот эксперимент добавить в ДЗ.
  • Последующее добавление вручную и применение конфига удалило вручную созданных юзеров.
  • Изучили метод создания load balancer в GCP и в Terraform. В конфигах есть комментарии к ресурсам. Что можно ещё добавить в конфигурацию приложения: 1. Добавить внутренние адреса для инстансов приложений, оставить внешний адрес только у балансера. 2. Добавить репликацию/честную кластеризацию БД.
  • Изучили метод параметризации количества инстансов ВМ с приложением.

Проблемы при добавлении ключей:

  • Изменения применились не сразу, т.к. у меня в ЛК были созданы ещё какие-то старые экспериментальные ключи. Конфиг применился только после ручного удаления юзеров. Было бы неплохо этот эксперимент добавить в ДЗ.

Недостатки LB конфигурации.

  • При добавлении дополнительного ресурса ВМ необходимо в нескольких местах поменять конфиги. 1. Добавить ресурс ВМ. 2. Добавить ВМ в instance_group. 3. Добавить IP в output (для сохранения шаблонности).
  • При изменении конфигурации ВМ в ТФ необходимо добавить изменения в нескольких ресурсах.

Что можно ещё добавить в конфигурацию приложения:

  • Добавить внутренние адреса для инстансов приложений, оставить внешний адрес только у балансера.
  • Добавить репликацию/честную кластеризацию БД.
  • Сейчас health-check работает только по недоступности приложения. Желательно, чтобы работала по превышению нагрузки, по кодам ответа HTTP. Чтобы работало распределение пользователей по прозрачным правилам, например, приблизительное непревышение разницы метрик нагрузки.

Как запустить проект:

  • Создать новый проект в GCP.
  • Клонировать репозиторий, ветку terraform-1.
  • Перейти в директорию terraform.
  • Выполнить terraform init.
  • Создать копию файла terraform.tfvar.example с именем terraform.tfvars и ввести в переменную project ID нового проекта в GCP. При необходимости изменить переменную count - количество инстансов ВМ.
  • terraform plan.
  • terraform apply. Должен вернуться адрес балансировщика lb_external_ip.
  • Пройти в браузере по адресу lb_external_ip.
  • Включать, отключать инстансы ВМ, приложение должно работать.

Как проверить работоспособность:

  • см. Как запустить проект.

PR checklist

  • Выставил label с номером домашнего задания
  • Выставил label с темой домашнего задания

@Kirill-Garbar Kirill-Garbar merged commit 1741540 into master Nov 9, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
2 participants