TGViewer
DevOps 360° DevOps 360° @devops360 · 326 subscribers
Post #196 305
# 🚀 Разворачиваем Kubernetes в Yandex Cloud и деплоим NGINX через Terraform

Привет, облачные маги и кубернетические волшебники! Давно хожу вокруг да около , моей таске уже больше года на работке и я до сих пор до нее не добрался , чтобы с 1 кнопки запускать всю инфру - делюсь маааааленьким кусочком с вами 🌩✨

Сегодня разберём полный цикл:
1️⃣ Развернём Kubernetes-кластер в Yandex Cloud с помощью Terraform.
2️⃣ Задеплоим NGINX на нодах, используя YAML-манифесты прямо из кода IAC.

Никаких ручных kubectl apply – только чистая автоматизация! 🤖

---

## 🔹 Шаг 1: Поднимаем Kubernetes в Yandex Cloud

Для начала нам нужен рабочий K8s-кластер. Сделаем это через Terraform!

### 1. Настройка провайдера Yandex Cloud

provider "yandex" {
token = "ВАШ_OAUTH_ТОКЕН"
cloud_id = "ВАШ_CLOUD_ID"
folder_id = "ВАШ_FOLDER_ID"
zone = "ru-central1-a"
}


### 2. Создаём Managed Kubernetes (Yandex Managed Service for Kubernetes)

resource "yandex_kubernetes_cluster" "my_k8s" {
name = "my-awesome-cluster"
network_id = yandex_vpc_network.k8s-network.id

master {
regional {
region = "ru-central1"
location {
zone = "ru-central1-a"
subnet_id = yandex_vpc_subnet.k8s-subnet.id
}
}
version = "1.24"
public_ip = true # Чтобы был доступ извне
}

service_account_id = yandex_iam_service_account.k8s-admin.id
node_service_account_id = yandex_iam_service_account.k8s-nodes.id
}

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

resource "yandex_vpc_subnet" "k8s-subnet" {
name = "k8s-subnet"
zone = "ru-central1-a"
network_id = yandex_vpc_network.k8s-network.id
v4_cidr_blocks = ["10.10.0.0/16"]
}


### 3. Добавляем ноды (Node Group)

resource "yandex_kubernetes_node_group" "k8s_nodes" {
cluster_id = yandex_kubernetes_cluster.my_k8s.id
name = "k8s-workers"

instance_template {
platform_id = "standard-v2"
resources {
cores = 2
memory = 4
}

network_interface {
nat = true
subnet_ids = [yandex_vpc_subnet.k8s-subnet.id]
}
}

scale_policy {
fixed_scale {
size = 2 # Две ноды для отказоустойчивости
}
}
}


### 4. Получаем kubeconfig для доступа

После terraform apply добавляем конфиг в ~/.kube/config:

yc managed-kubernetes cluster get-credentials my-awesome-cluster --external


✅ Кластер готов! Проверим:

kubectl get nodes


---

## 🔹 Шаг 2: Деплоим NGINX через Terraform

Теперь, когда кластер работает, запустим в нём NGINX – и всё через Terraform!

### 1. Настраиваем провайдер Kubernetes

provider "kubernetes" {
config_path = "~/.kube/config" # Используем полученный конфиг
}


### 2. Вариант 1: Деплой через встроенный YAML

resource "kubernetes_deployment" "nginx" {
metadata {
name = "nginx"
}
spec {
replicas = 2
selector {
match_labels = {
app = "nginx"
}
}
template {
metadata {
labels = {
app = "nginx"
}
}
spec {
container {
name = "nginx"
image = "nginx:latest"
port {
container_port = 80
}
}
}
}
}
}

resource "kubernetes_service" "nginx" {
metadata {
name = "nginx-service"
}
spec {
selector = {
app = kubernetes_deployment.nginx.spec.0.template.0.metadata.0.labels.app
}
port {
port = 80
target_port = 80
}
type = "LoadBalancer" # Чтобы получить внешний IP
}
}


### 3. Вариант 2: Подключаем внешний YAML-файл

Если у вас уже есть манифест nginx-deployment.yaml:

resource "kubernetes_manifest" "nginx" {
manifest = yamldecode(file("nginx-deployment.yaml"))
}


---

## 🔥 Что получилось?
- Полностью автоматизированный кластер в Yandex Cloud.
- NGINX, развернутый через Terraform без ручных операций.
- Готовый LoadBalancer с внешним IP (проверьте через kubectl get svc).

---
  • 👍 3
More from @devops360
  1. Sep 28, 2026🔥 УРА, НОВОСТНЫЕ НОВОСТИ! (МНОГО БУКВ) 🔥 В современном IT процветает какой-то безумный к…
  2. Jul 20, 2026ПРИВЕТ! КРЧ если вкратце, то думаю через пару лет будем переходить с ямл инженеров и полно…
  3. May 21, 2026ХЕЛОУ! 🚀 Ingress NGINX — ВСЁ. Почему пора переезжать на Gateway API Главный сетевой контр…
  4. Jan 20, 2026ХЕЛЛОУ ГАЙЗ! смотрите какую интересную штуку мне подсказали , можно проверить свои знания…
  5. Nov 21, 2025Хелоу! Ingress NGINX уходит: что важно знать Kubernetes объявил о завершении поддержки Ing…
  6. Nov 14, 2025Всех с пятницей! Накидал доку как для себя так и для общего пользования по накатке бекапа…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →