Юзкейс: развернуть MKS кластер в Yandex Cloud, поставить NGINX Ingress и Argo CD — с помощью ИИ

· Практика

Ниже — практический юзкейс для пользователей нашей системы: как с помощью ИИ-помощника повторить полный сценарий “с нуля до работающего Ingress и Argo CD” в Yandex Cloud (Managed Kubernetes).

Сценарий ориентирован на ситуацию, когда на вашей машине уже установлен и настроен yc (Yandex Cloud CLI), а ИИ имеет доступ к этой машине и может выполнять команды.


Что в итоге получится

  1. Managed Kubernetes кластер demo9-k8s
  2. Node group demo9-ng1
  3. Установленный ingress-nginx с внешним IP (Service LoadBalancer)
  4. Установленный Argo CD, опубликованный через Ingress
  5. Проверка, что Ingress реально роутит трафик на тестовый сервис

Шаг 0. Подготовка (что нужно заранее)

  • На машине, к которой подключена наша система, установлен yc и выполнен yc init.
  • Есть права создавать Managed Kubernetes, VPC, Load Balancer.
  • Есть сеть/подсеть в нужной зоне (часто уже есть default).

Команда для ИИ (пример запроса):

  • «Проверь, что yc настроен, покажи cloud-id/folder-id, список сетей и подсетей. Затем создай кластер demo9-k8s»

Место для скриншота #1: экран с результатом проверки окружения (версии yc, yc config list, сеть/подсеть).


Шаг 1. Создать кластер Managed Kubernetes

Попросите ИИ:

  • «Создай кластер Managed Kubernetes с именем demo9-k8s в ru-central1-a, в default network/subnet, с публичным endpoint мастера».

ИИ должен:

  • создать кластер
  • дождаться статуса RUNNING/HEALTHY

Место для скриншота #2: карточка/лог, где видно demo9-k8s: RUNNING/HEALTHY и внешний endpoint мастера.


Шаг 2. Создать node group

Попросите ИИ:

  • «Добавь node group demo9-ng1: 2 ноды, platform standard-v2, 2 CPU, 4 GB RAM, диск SSD 64GB, containerd, с публичными IP на нодах».

ИИ должен:

  • создать node group
  • дождаться готовности
  • получить kubeconfig (yc managed-kubernetes cluster get-credentials ...)
  • проверить kubectl get nodes (ноды Ready)

Шаг 3. Поставить NGINX Ingress Controller

Попросите ИИ:

  • «Поставь ingress-nginx через Helm в namespace ingress-nginx, сервис контроллера сделай LoadBalancer».

ИИ должен:

  • установить helm (если нет)
  • поставить chart ingress-nginx/ingress-nginx
  • дождаться готовности deployment
  • дождаться внешнего IP у сервиса ingress-nginx-controller

Частая проблема: квота на Load Balancer

Если внешний IP долго pending, ИИ проверит события сервиса и может увидеть ошибку:

  • Quota limit ylb.networkLoadBalancers.count exceeded

Тогда нужно увеличить квоту на ylb.networkLoadBalancers.count (в консоли/через поддержку, в зависимости от доступности quota-request API).

Место для скриншота #3: событие SyncLoadBalancerFailed с текстом про quota exceeded + (после фикса) сервис с EXTERNAL-IP.


Шаг 4. Проверить, что Ingress работает (тестовый сервис)

Попросите ИИ:

  • «Разверни тестовый сервис (например, echo-server) и создай Ingress, чтобы по host-запросу отдавался ответ через внешний IP ingress-nginx».

В демо использовался трюк с nip.io:

  • echo.<LB_IP>.nip.io резолвится в <LB_IP> без настройки DNS.

Проверка:

  • curl -H "Host: echo.<LB_IP>.nip.io" http://<LB_IP>/

Шаг 5. Поставить Argo CD и опубликовать через Ingress

Попросите ИИ:

  • «Накати Argo CD в namespace argocd (официальный манифест), выведи наружу через ingress-nginx, дай URL и админский пароль».

ИИ должен:

  • применить install.yaml Argo CD
  • дождаться Ready основных компонентов
  • (для простоты HTTP) включить server.insecure=true
  • создать Ingress на argocd.<LB_IP>.nip.io
  • вывести initial admin password из argocd-initial-admin-secret

Место для скриншота #4: веб-интерфейс Argo CD (страница логина) по argocd.<LB_IP>.nip.io.


Важный нюанс: admission webhook ingress-nginx

Иногда при создании Ingress может появиться ошибка валидации webhook с TLS (x509 unknown authority). В демо для ускорения ИИ временно отключил admission webhooks у ingress-nginx. Для production-использования лучше корректно починить webhook-сертификаты и включить проверку обратно.


Как “свернуть демо” (без риска сломать чужое)

Правильный запрос к ИИ:

  • «Удалить только то, что создавали в демо: namespaces demo/argocd/ingress-nginx (если это отдельный кластер), node group demo9-ng1 и кластер demo9-k8s. Другие кластера/балансеры не трогать. В конце покажи список оставшихся кластеров».

ИИ должен:

  • удалить demo, argocd, ingress-nginx
  • удалить node group demo9-ng1
  • удалить кластер demo9-k8s
  • проверить, что другие кластера не затронуты

Итог

Этот юзкейс показывает, как пользователь нашей системы может одной цепочкой запросов к ИИ:

  • поднять MKS кластер
  • добавить ноды
  • развернуть ingress-nginx
  • решить типичную проблему с квотой на LB
  • поставить Argo CD
  • получить публичный доступ через Ingress

Всё это делается без ручного SSH и без «копипасты» команд — пользователь описывает задачу на человеческом языке, а ИИ выполняет необходимые шаги и возвращает готовые ссылки/пароли/статусы.

Открыть чат ExecAI

Ещё в блоге