- PVSM.RU - https://www.pvsm.ru -

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

Нет времени объяснять! или как подружить terraform с minikube и kubernetes - 1
Как начать пользоваться terraform [1], развернув локально приложение поверх minikube [2], и потом запустить его поверх kubernetes [3] в cloud.google.com [4]

Minikube

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

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

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

Google cloud

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

  1. Регистрируемся https://cloud.google.com [4] что бы получить $ 300
  2. На развернутой VM делаем gcloud init и следуем инструкции
    gcloud init
  3. По инструкции [8] получаем ключ в консоли разработчика [9] и складываем в /root/.gcloud/terraform.json на виртуальную машину
  4. Создаем кластер в cloud.google.com [4]
    gcloud container clusters create gke-cluster
    gcloud container clusters list
  5. Получаем явки/пароли для подключения kubectl к cloud.google.com [4]
    [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 открывает простор для структурирования и поддержания окружений в идентичном состоянии.

Автор: ultral

Источник [10]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/hosting/266572

Ссылки в тексте:

[1] terraform: https://www.terraform.io/

[2] minikube: https://github.com/kubernetes/minikube

[3] kubernetes: https://kubernetes.io/

[4] cloud.google.com: https://cloud.google.com

[5] подготовил: https://github.com/ultral/terraform-example

[6] VirtualBox: https://www.virtualbox.org/wiki/Downloads

[7] Vagrant: https://www.vagrantup.com/downloads.html

[8] По инструкции: https://www.terraform.io/docs/providers/google/#authentication-json-file

[9] консоли разработчика: https://console.developers.google.com

[10] Источник: https://habrahabr.ru/post/340884/