Skip to content

patsevanton/kubespray_terraform_yandex_cloud

Repository files navigation

Автоматизация установки Kubernetes кластСра с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Kubespray ΠΈ Terraform Π² Yandex Cloud

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ Π±Ρ‹Π»Π° основана Π½Π° Π±Π°Π·Π΅ Π²ΠΈΠ΄Π΅ΠΎ "Установка кластСра Kubernetes с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Kubespray" Π² Youtube.

Код Π±Ρ‹Π» Ρ„ΠΎΡ€ΠΊΠ½ΡƒΡ‚ ΠΈΠ· рСпозитория https://git.cloud-team.ru/lections/kubernetes_setup ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ с ΠΏΠ°Ρ‚Ρ‡Π°ΠΌΠΈ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ https://github.com/patsevanton/kubespray_terraform_yandex_cloud

Π‘Π°ΠΌΠΎΠ΅ интСрСсноС Π² этом постС для devops спСциалистов с ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ это скрипт для создания ansible inventory Ρ„Π°ΠΉΠ»Π° ΠΈΠ· terraform структур.

Yandex.Cloud - облачная ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ свои Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅ сСрвисы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ инфраструктуру ΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ЯндСкса.

Kubespray β€” это Π½Π°Π±ΠΎΡ€ Ansible Ρ€ΠΎΠ»Π΅ΠΉ для установки ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ систСмы оркСстрации ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ Kubernetes.

Kubernetes (K8s) - это ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ развёртывания, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ управлСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ прилоТСниями.

РСгистрация Π½Π° Yandex Cloud

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

Установка Yandex.Cloud (CLI)

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Yandex.Cloud (CLI) β€” скачиваСмоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС для управлСния вашими ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹ΠΌΠΈ рСсурсами Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку.

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

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ профиля Yandex Cloud

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

Установка binenv

Binenv - ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, установки ΠΈ управлСния Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ Π² повсСднСвной ΠΆΠΈΠ·Π½ΠΈ DevOps (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, kubectl, helm, ...).

Установка Terraform

Terraform β€” это инструмСнт для создания Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ язык высокого уровня, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ HCL (HashiCorp Configuration Language) для описания Π½ΡƒΠΆΠ½ΠΎΠΉ ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠΉ ΠΈΠ»ΠΈ локальной инфраструктуры "ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ состояния" для запуска прилоТСния. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ»Π°Π½ для достиТСния этого ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ состояния ΠΈ выполняСт ΠΏΠ»Π°Π½ ΠΏΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ инфраструктуры. https://cloud.yandex.ru/docs/solutions/infrastructure-management/terraform-quickstart https://gcorelabs.com/ru/blog/why-you-need-terraform/

$ binenv install terraform

Установка Kubectl

Kubectl β€” это инструмСнт ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки для управлСния кластСрами Kubernetes.

$ binenv install kubectl

Установка Helm

Helm β€” это диспСтчСр ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для Kubernetes, ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΠΉ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΡƒ, настройку ΠΈ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ слуТб Π² кластСрах Kubernetes.

$ binenv install helm

Установка jq

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 ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для доступа ΠΊ Yandex Cloud

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

ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΠΌ ssh ΠΊΠ»ΡŽΡ‡ΠΈ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ .ssh

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ рСсурсов Π² Yandex Cloud ΠΈ установка Kubernetes кластСра с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Kubespray

$ bash cluster_install.sh

Π‘Ρ…Π΅ΠΌΠ° кластСра Kubernetes

2 ingress ΠΈ 2 worker сдСланы для отказоустойчивости ΠΈ для Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ обновлСния сСрвСров.

Рассмотрим k8s-cluster.tf Π² web интСрфСйсС ЯндСкс ΠΎΠ±Π»Π°ΠΊΠ°

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

yandex_vpc_network β€” описаниС ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠΉ сСти. ΠžΠ±Π»Π°Ρ‡Π½Π°Ρ ΡΠ΅Ρ‚ΡŒ β€” это Π°Π½Π°Π»ΠΎΠ³ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ локальной сСти Π² Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π΅. ΠžΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ сСти ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹ΠΌΠΈ рСсурсами ΠΈ связи рСсурсов с ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ΠΎΠΌ. РСсурс yandex_vpc_network находится Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Virtual Private Cloud

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-subnet-1 Π² Π·ΠΎΠ½Π΅ доступности ru-central1-a, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΠ΅Ρ‚ΡŒ v4_cidr_blocks Π±ΡƒΠ΄Π΅Ρ‚ 192.168.10.0/24.

РСсурс "yandex_vpc_subnet" "k8s-subnet-1" находится Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Virtual Private Cloud Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ k8s-network

yandex_iam_service_account β€” описаниС сСрвисного Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°. ВсС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² Instance Groups Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ сСрвисного Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°. РСсурс "yandex_iam_service_account" находится Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π³Π΄Π΅ Π²Ρ‹ создаСтС инфраструктуру Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ БСрвисныС Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Ρ‹.

Instance Groups β€” ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ сСрвиса Compute Cloud, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин. Instance Groups автоматичСски ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ нСработоспособныС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π² Π³Ρ€ΡƒΠΏΠΏΠ΅ для обСспСчСния ΠΈΡ… ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹. РСсурс "yandex_compute_instance_group" находится Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Compute Cloud Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π“Ρ€ΡƒΠΏΠΏΡ‹ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин

РСсурс yandex_storage_bucket находится Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Object Storage. ИмСна Π±Π°ΠΊΠ΅Ρ‚ΠΎΠ² ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ для всСго Object Storage, Ρ‚.Π΅. нСльзя ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Π²Π° Π±Π°ΠΊΠ΅Ρ‚Π° с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Π΄Π°ΠΆΠ΅ Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠ±Π»Π°ΠΊΠΎΠ². ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎΠ± этом, Ссли ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π±Π°ΠΊΠ΅Ρ‚Ρ‹ автоматичСски Ρ‡Π΅Ρ€Π΅Π· API.

ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π° kubernetes

$ mkdir -p ~/.kube && cp kubespray/inventory/mycluster/artifacts/admin.conf ~/.kube/config

Π Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ тСстового прилоТСния

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

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² Ρ„Π°ΠΉΠ» hosts ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠΈ ΠΈ IP адрСсах Π½Π°ΡˆΠΈΡ… сСрвСров

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

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° внСшнСго доступа тСстового прилоТСния

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

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ кластСра Kubernetes

Установка Kubernetes Dashboard

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

Go to http://localhost:9090 and use token for authentication

Установка Prometheus ΠΈ Grafana

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

Доступ ΠΊ Prometheus UI

Go to http://prometheus.local

Доступ ΠΊ Grafana UI

$ kubectl get secret -n monitoring grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

Go to http://grafana.local (user: admin, password: result of first command). Add new data source with type "Prometheus" and url "http://prometheus-server". Import a new dashboard to Grafana (grafana.com dashboard: https://grafana.com/dashboards/1621, Prometheus: created one).

Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ Loghouse

Loghouse β€” Open Source-систСма для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π»ΠΎΠ³Π°ΠΌΠΈ Π² 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

Go to http://loghouse.local (login: admin, password: PASSWORD).

Try to search logs of test app with the query:

~app = "my-app"

Π‘Π΅ΠΊΠ°ΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅/восстановлСниС кластСра kubernetes

Установка Velero

Velero - это ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ инструмСнт Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования для kubernetes, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сТимаСт ΠΈ бэкапит ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ kubernetes Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅.

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

Установка ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ AWS plugin для 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

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π΅ΠΊΠ°ΠΏΠ° backup ΠΈ просмотр Π΅Π³ΠΎ статуса

$ 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 ΠΈ рСсурсов Π² Yandex Cloud

$ bash cluster_destroy.sh

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published