Автоматизация Установки Кластера Kubernetes С Помощью Kubespray И Terraform В Яндекс Облаке

Инструкции были основаны на видео «Установка кластера Kubernetes с помощью Kubespray» на Youtube. Код был форкнут из репозитория https://git.cloud-team.ru/lections/kubernetes_setup и добавлен с патчами в репозиторий https://github.com/patsevanton/kubespray_terraform_yandex_cloud Самое интересное в этом посте для Devops-специалистов с опытом — это сценарий для создания файла инвентаризации ansible из структур terraform. Яндекс.

Облако — облачная платформа, где каждый может создавать и совершенствовать свои цифровые сервисы, используя инфраструктуру и уникальные технологии Яндекса.

Кубеспрей — это набор ролей Ansible для установки и настройки системы оркестрации контейнеров Kubernetes. Кубернетес (K8s) — это программное обеспечение с открытым исходным кодом для автоматизации развертывания, масштабирования и управления контейнерными приложениями.



Регистрация в Яндекс Облаке

https://cloud.yandex.ru/docs/billing/quickstart/

Установка Яндекс.

Облака (CLI)

Интерфейс командной строки Yandex.Cloud (CLI) — это загружаемое программное обеспечение для управления облачными ресурсами через командную строку.

  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
   

$ curl https://storage.yandexcloud.net/yandexcloud-yc/install.sh | bash



Создание профиля в Яндекс Облаке

https://cloud.yandex.ru/docs/cli/quickstart

Установка биненв

Биненв — это утилита для загрузки, установки и управления двоичными программами, которые вам нужны в повседневной жизни DevOps (например, kubectl, helm, .

).



Установка Терраформа

Терраформировать — это инструмент создания декларативного кода, который позволяет разработчикам использовать язык высокого уровня под названием HCL (язык конфигурации HashiCorp) для описания желаемой облачной или локальной инфраструктуры «конечного состояния» для запуска приложения.

Затем он генерирует план достижения этого конечного состояния и выполняет план по обеспечению инфраструктуры.

https://cloud.yandex.ru/docs/solutions/infrastructure-management/terraform-quickstart https://gcorelabs.com/ru/blog/why-you-need-terraform/

$ binenv install terraform



Установка Кубектла

Кубектл — это инструмент командной строки для управления кластерами Kubernetes.

$ binenv install kubectl



Установка руля

Шлем — это менеджер пакетов для Kubernetes, который позволяет разработчикам и операторам легко упаковывать, настраивать и развертывать приложения и сервисы в кластерах Kubernetes.

$ binenv install helm



установка jq

Дж.

К.

— утилита для анализа, фильтрации, сравнения и преобразования данных JSON.

$ sudo apt install jq



Установка pip3 и git



$ sudo apt install python3-pip git



Загрузите Kubespray версии 2.14.2 и установите зависимости для Kubespray.

Выбираем версию 2.14.2, так как на момент создания исходного репозитория была версия 2.14.2.

$ wget https://github.com/kubernetes-sigs/kubespray/archive/refs/tags/v2.14.2.tar.gz $ tar -xvzf v2.14.2.tar.gz $ mv kubespray-2.14.2 kubespray $ sudo pip3 install -r kubespray/requirements.txt



Настроим переменные Terraform для доступа к Яндекс Облаку



$ cp terraform/private.auto.tfvars.example terraform/private.auto.tfvars $ yc config list $ vim terraform/private.auto.tfvars



Давайте поместим ключи ssh в каталог .

ssh.



Создание ресурсов в Яндекс Облаке и установка кластера Kubernetes с помощью Kubespray



$ bash cluster_install.sh



Диаграмма кластера Kubernetes

2 входящих и 2 рабочих сделаны для отказоустойчивости и постоянного обновления сервера.



Автоматизация установки кластера Kubernetes с помощью Kubespray и Terraform в Яндекс Облаке



Посмотрим на k8s-cluster.tf в веб-интерфейсе облака Яндекса.



resource "yandex_vpc_network" "k8s-network" { name = "k8s-network" }

yandex_vpc_network — описание облачной сети.

Облачная сеть — это аналог традиционной локальной сети в дата-центре.

Облачные сети создаются в каталогах и используются для передачи информации между облачными ресурсами и подключения ресурсов к Интернету.

Ресурс yandex_vpc_network находится в разделе Virtual Private Cloud

Автоматизация установки кластера Kubernetes с помощью Kubespray и Terraform в Яндекс Облаке

yandex_vpc_subnet — описание подсети, к которой будет подключена виртуальная машина.

Подсеть — это диапазон IP-адресов в облачной сети.

Адреса из этого диапазона можно назначать облачным ресурсам — виртуальным машинам и кластерам баз данных.

Подсети можно создавать только в том каталоге, которому принадлежит облачная сеть.

Размер подсети задается с помощью бесклассового метода адресации (CIDR).

Подсети могут использовать только частные адреса IPv4 из диапазонов, определенных в RFC 1918.

resource "yandex_vpc_subnet" "k8s-subnet-1" { name = "k8s-subnet-1" zone = "ru-central1-a" network_id = yandex_vpc_network.k8s-network.id v4_cidr_blocks = ["192.168.10.0/24"] depends_on = [ yandex_vpc_network.k8s-network, ] }

Этот блок создает ресурс yandex_vpc_subnet С именем k8s-подсеть-1 в пределах досягаемости ru-central1-a , у которого есть сеть v4_cidr_blocks воля 192.168.10.0/24 .

Ресурс "yandex_vpc_subnet" "k8s-subnet-1" находится в разделе Virtual Private Cloud в разделе k8s-network.

Автоматизация установки кластера Kubernetes с помощью Kubespray и Terraform в Яндекс Облаке

yandex_iam_service_account — описание сервисного аккаунта.

Все операции в группах экземпляров выполняются от имени сервисного аккаунта.

Ресурс «yandex_iam_service_account» находится в каталоге, где вы создаете инфраструктуру, в разделе «Учетные записи служб».



Автоматизация установки кластера Kubernetes с помощью Kubespray и Terraform в Яндекс Облаке

Группы экземпляров — это компонент службы Compute Cloud, который позволяет создавать группы виртуальных машин и управлять ими.

Группы экземпляров автоматически идентифицируют и исправляют неработоспособные виртуальные машины в группе, чтобы обеспечить их оптимальную работу.

Ресурс «yandex_compute_instance_group» находится в разделе Compute Cloud в разделе «Группы виртуальных машин».



Автоматизация установки кластера Kubernetes с помощью Kubespray и Terraform в Яндекс Облаке

Ресурс yandex_storage_bucket находится в разделе Object Storage. Имена бакетов уникальны во всем объектном хранилище, т. е.

вы не можете создать два бакета с одинаковыми именами даже в разных каталогах в разных облаках.

Имейте это в виду, если планируете автоматически создавать сегменты через API.

Автоматизация установки кластера Kubernetes с помощью Kubespray и Terraform в Яндекс Облаке



Копирование конфигурации kubernetes



$ mkdir -p ~/.

kube && cp kubespray/inventory/mycluster/artifacts/admin.conf ~/.

kube/config



Развертывание тестового приложения



$ kubectl apply -f manifests/test-app.yml



Добавление информации об имени и IP-адресах наших серверов в файл хостов



$ sudo sh -c "cat kubespray_inventory/etc-hosts >> /etc/hosts"



Проверка внешнего доступа тестового приложения



$ curl hello.local Hello from my-deployment-784598767c-7gjjs

Мониторинг кластера Kubernetes

Установка панели управления Kubernetes

Kubernetes Dashboard — универсальный веб-интерфейс для кластеров Kubernetes. Он позволяет пользователям управлять приложениями, работающими в кластере, и устранять неполадки, а также управлять самим кластером.



$ helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/ $ helm install --namespace monitoring --create-namespace -f manifests/dashboard-values.yml \ kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard $ kubectl apply -f manifests/dashboard-admin.yml $ kubectl -n monitoring describe secret \ $(kubectl -n monitoring get secret | grep admin-user | awk '{print $1}') $ kubectl port-forward -n monitoring $(kubectl get pods -n monitoring \ -l " app.kubernetes.io/name=kubernetes-dashboard " -o jsonpath="{.

items[0].

metadata.name}") 9090

Идти к http://localhost:9090 и используйте токен для аутентификации

Установка Прометея и Графаны

Prometheus — система мониторинга с открытым исходным кодом, многомерной моделью данных, гибким языком запросов, эффективной базой данных временных рядов и современным подходом к оповещению.

Grafana — это платформа с открытым исходным кодом для визуализации, мониторинга и анализа данных.



$ helm install --namespace monitoring --create-namespace -f manifests/prometheus-values.yml \ prometheus stable/prometheus $ helm install --namespace monitoring --create-namespace -f manifests/grafana-values.yml \ grafana stable/grafana



Доступ к пользовательскому интерфейсу Прометея

Идти к http://prometheus.local

Автоматизация установки кластера Kubernetes с помощью Kubespray и Terraform в Яндекс Облаке



Доступ к пользовательскому интерфейсу Grafana



$ kubectl get secret -n monitoring grafana -o jsonpath="{.

data.admin-password}" | base64 --decode ; echo

Идти к http://grafana.local (пользователь: admin, пароль: результат первой команды).

Добавьте новый источник данных с типом «Прометей» и URL-адресом « http://prometheus-server ".

Импортируйте новую панель мониторинга в Grafana (панель управления grafana.com: https://grafana.com/dashboards/1621 , Прометей: создал один).



Автоматизация установки кластера Kubernetes с помощью Kubespray и Terraform в Яндекс Облаке

Ведение журнала

Развертывание бревенчатого дома

Loghouse — система с открытым исходным кодом для работы с логами в Kubernetes.

$ helm repo add loghouse https://flant.github.io/loghouse/charts/ $ helm install --namespace loghouse --create-namespace -f manifests/loghouse-values.yml \ loghouse loghouse/loghouse

Идти к http://loghouse.local (логин: admin, пароль: ПАРОЛЬ).



Автоматизация установки кластера Kubernetes с помощью Kubespray и Terraform в Яндекс Облаке

Попробуйте выполнить поиск в журналах тестового приложения по запросу:

~app = "my-app"

Резервное копирование/восстановление кластера Kubernetes

Установка Велеро

Velero — удобный инструмент резервного копирования для Kubernetes, который сжимает и создает резервные копии объектов Kubernetes в хранилище объектов.

https://velero.io/docs/v1.4/basic-install/

Установка и настройка плагина AWS для Velero



$ velero install \ --provider aws \ --plugins velero/ velero-plugin-for-aws:v1.1.0 \ --bucket backup-backet-apatsev \ --backup-location-config region=ru-central1-a,s3ForcePathStyle="true",s3Url= https://storage.yandexcloud.net \ --snapshot-location-config region=ru-central1-a \ --secret-file kubespray_inventory/credentials-velero



Создание резервной копии и просмотр ее статуса



$ velero backup create my-first-backup $ velero backup get



Удаление тестового приложения



$ kubectl delete -f manifests/test-app.yml



Восстановление резервной копии и просмотр списка восстановленных резервных копий



$ velero restore create --from-backup my-first-backup $ velero restore get

Удаление кластера и ресурсов kubernetes в Яндекс Облаке

$ bash cluster_destroy.sh

Немного рекламы: На платформе https://rotoro.cloud/ Вы можете найти курсы с практическими занятиями: Теги: #ИТ-инфраструктура #Системное администрирование #Администрирование серверов #Kubernetes #terraform #DevOps #облако yandex #Kubespray #ansible инвентаризация
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.