Опишите инфраструктуру будущего проекта в виде кода с инструкциями по развертке, нужен кластер Kubernetes и служебный сервер (будем называть его srv).
- Выбираем облачный провайдер и инфраструктуру.
- Описываем инфраструктуру.
- Автоматизируем установку.
Нам нужно:
- кластер Kubernetes;
- сервер srv для инструментов мониторинга, логгирования и сборок контейнеров.
Описывать инфраструктуру мы будем, конечно, в Terraform.
Надо реализовать возможность установки на сервер всех необходимых нам настроек и пакетов, будь то docker-compose, gitlab-runner или наши публичные ключи для доступа по SSH. Положите код автоматизации в Git-репозиторий.
- Вы должны производить действия на локальном хосте с Unix-системой (у меня Ubuntu 2204); должен быть установлен terraform; должны быть сгенерированы ssh-ключи без пароля с именами
id_rsa
иid_rsa.pub
в директории~/.ssh/
- Скачать репо и перейти в директорию
git clone https://github.com/andryplekhanov/sf-diploma-sprint1.git && cd sf-diploma-sprint1/terraform
- Инициировать терраформ
terraform init
- Применить
terraform apply -var="yandex_cloud_token=<ваш токен>" -var="cloud_id=<ваш cloud_id>" -var="folder_id=<ваш folder_id>"
- В результате получаем в консоли ip-адрес контроллер-сервера srv:
external_ip_address_srv = [
[
"158.160.45.224",
],
]
- Подключиться по ssh к серверу srv
ssh ubuntu@<external_ip_address_srv>
- Сделаться суперюзером
sudo su
- Перейти в директорию
cd /opt/kubernetes_setup
- Запустить скрипт
sh cluster_install.sh
Данный скрипт при помощи Terraform развернёт в Яндекс-облаке необходимую инфраструктуру для кластера k8s. После развёртывания получаем информацию об инфраструктуре. Нас интересует ip ингресс-контроллера и балансировщика:
instance_group_ingresses_public_ips = tolist([
"158.160.153.244",
])
load_balancer_public_ip = tolist([
"158.160.156.161",
])
Запомним ip. Нам они понадобятся на следующем спринте.
- Через 85 секунд автоматически начнётся развёртка кластера k8s при помощи Ansible.
- В результате получаем в консоли информацию о кластере:
Если ничего больше не нужно, то удаляем всё в 2 этапа:
- На сервере srv:
sudo su
,cd /opt/kubernetes_setup
,sh cluster_destroy.sh
- На локальном хосте в каталоге
sf-diploma-sprint1/terraform
:terraform destroy -var="yandex_cloud_token=<ваш токен>" -var="cloud_id=<ваш cloud_id>" -var="folder_id=<ваш folder_id>"