Нет времени объяснять! или как подружить terraform с minikube и kubernetes

  • Tutorial


Как начать пользоваться terraform, развернув локально приложение поверх minikube, и потом запустить его поверх kubernetes в cloud.google.com


Minikube


Для начала настроим minikube и при помощи terraform развернем наше приложение, для этого уже подготовил проект. Остается только:


  1. Установить VirtualBox
  2. Установить Vagrant
  3. Сделать копию репозитория ultral/terraform-example
  4. Сделать
    vagrant up

На выходе у нас есть виртуальная машина по адресу 192.168.56.123 c логином/паролем vagrant/vagrant и/или вашим публичным ключом для пользователей root и vagrant.


Google cloud


Тут все становится интересней, будем подключаться к cloud.google.com и запускать там наше приложение.


  1. Регистрируемся https://cloud.google.com что бы получить $ 300
  2. На развернутой VM делаем gcloud init и следуем инструкции
    gcloud init
  3. По инструкции получаем ключ в консоли разработчика и складываем в /root/.gcloud/terraform.json на виртуальную машину
  4. Создаем кластер в cloud.google.com
    gcloud container clusters create gke-cluster
    gcloud container clusters list
  5. Получаем явки/пароли для подключения 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.
  6. Переключаем контекст 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".
  7. Переименовываем контекст 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".
  8. Готовим переменные по образу и подобию для terraform
    cp /vagrant/terraform/terraform.tfvars.example /vagrant/terraform/terraform.tfvars
    vi /vagrant/terraform/terraform.tfvars
  9. Подготавливаем и применяем terraform
    terraform workspace new prod
    terraform init
    terraform plan
    terraform apply
  10. Теперь можно получить адрес нашего приложения и зайти через браузер. Мы молодцы.
    terraform output lb_ingress
  11. Подчищаем хвосты за собой
    terraform destroy
    gcloud container clusters delete gke-cluster

Заключение


Terraform оказался не так страшен. Terraform открывает простор для структурирования и поддержания окружений в идентичном состоянии.

Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама
Комментарии 2
  • 0

    Странная статья…
    Создаете контейнерный кластер руками вместо того что-бы его терраформом и создать…
    Терраформ просто идеален иммено для описания инфраструкутры, в вашем случае той инфрастукуры на которой будер развернут kubernetes.

    • 0
      Таки создавать кластер лучше используя Terraform:
      www.terraform.io/docs/providers/google/r/container_cluster.html

      А вот кейс с описаниями примитивов k8s — очень спорное решение.

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.