Как начать пользоваться terraform, развернув локально приложение поверх minikube, и потом запустить его поверх kubernetes в cloud.google.com
Minikube
Для начала настроим minikube и при помощи terraform развернем наше приложение, для этого уже подготовил проект. Остается только:
- Установить VirtualBox
- Установить Vagrant
- Сделать копию репозитория ultral/terraform-example
- Сделать
vagrant up
На выходе у нас есть виртуальная машина по адресу 192.168.56.123 c логином/паролем vagrant/vagrant и/или вашим публичным ключом для пользователей root и vagrant.
Google cloud
Тут все становится интересней, будем подключаться к cloud.google.com и запускать там наше приложение.
- Регистрируемся https://cloud.google.com что бы получить $ 300
- На развернутой VM делаем
gcloud init
и следуем инструкции
gcloud init
- По инструкции получаем ключ в консоли разработчика и складываем в /root/.gcloud/terraform.json на виртуальную машину
- Создаем кластер в cloud.google.com
gcloud container clusters create gke-cluster gcloud container clusters list
- Получаем явки/пароли для подключения kubectl к cloud.google.com
[root@terraform-adm terraform]# gcloud container clusters get-credentials gke-cluster Fetching cluster endpoint and auth data. kubeconfig entry generated for gke-cluster.
- Переключаем контекст kubectl
[root@terraform-adm terraform]# kubectl config use-context gke_tutorial-project-183818_europe-west1-d_gke-cluster Switched to context "gke_tutorial-project-183818_europe-west1-d_gke-cluster".
- Переименовываем контекст kubectl (он у нас указан в terraform)
[root@terraform-adm terraform]# kubectl config rename-context gke_tutorial-project-183818_europe-west1-d_gke-cluster gke_tutorial Context "gke_tutorial-project-183818_europe-west1-d_gke-cluster" was renamed to "gke_tutorial".
- Готовим переменные по образу и подобию для terraform
cp /vagrant/terraform/terraform.tfvars.example /vagrant/terraform/terraform.tfvars vi /vagrant/terraform/terraform.tfvars
- Подготавливаем и применяем terraform
terraform workspace new prod terraform init terraform plan terraform apply
- Теперь можно получить адрес нашего приложения и зайти через браузер. Мы молодцы.
terraform output lb_ingress
- Подчищаем хвосты за собой
terraform destroy gcloud container clusters delete gke-cluster
Заключение
Terraform оказался не так страшен. Terraform открывает простор для структурирования и поддержания окружений в идентичном состоянии.