Files
sless/examples
Naeel a76baa62a3 fix: v0.1.50 — runtime 400 + SLESS_ENTRYPOINT в Deployment
Bug 1: services.go — k8s IsInvalid error (CRD enum validation) маппился в 500.
Теперь errors.IsInvalid() → 400 Bad Request (invalid service spec).

Bug 2: service_controller.go buildServiceDeployment не передавал env SLESS_ENTRYPOINT
в под. Добавлен в envVars из svc.Spec.Entrypoint. Без него server.py использовал
fallback handler.handle и не замечал неверный entrypoint.

operator_failure_test.sh 12B-2: обновлён под новое правильное поведение —
create ruby3.0 → 400 (не 201). Старый 201-путь сохранён как warn для совместимости.
2026-03-22 08:11:05 +03:00
..

Примеры использования sless

Обзор платформы

sless — система управления serverless-функциями на базе Kubernetes. Разработчик загружает код функции, платформа собирает из него Docker-образ, разворачивает его в кластере и предоставляет HTTP-эндпоинт для вызова. Всё описывается декларативно через Terraform.

Основные ресурсы провайдера

Ресурс Назначение
sless_service Long-running HTTP-сервис: всегда активен, отвечает на запросы. Имеет свой URL после деплоя.
sless_job Одноразовый запуск функции: собирает образ, выполняет код, завершается. Используется для миграций БД, batch-обработки и т.д.

Namespace функций вычисляется автоматически из JWT-токена: sless-{sha256[:8]}.


Требования

  • Terraform >= 1.3
  • JWT-токен для аутентификации в sless API
  • JWT-токен для Nubes Cloud API (если используются managed-ресурсы: PostgreSQL и т.д.)
  • Доступ к https://sless.kube5s.ru

Конфигурация провайдера

provider "sless" {
  endpoint = "https://sless.kube5s.ru"
  token    = var.sless_token
}

provider "nubes_cloud" {
  base_url = "https://deck-api-test.ngcloud.ru/api/v1"
  token    = var.nubes_token
}

Токены задаются в terraform.tfvars — этот файл добавлен в .gitignore.


Примеры

POSTGRES — Serverless-функции с Managed PostgreSQL

Полный пример: managed PostgreSQL + одноразовый init-job + 3 HTTP-сервиса (чтение/запись данных и информация о PG).

Языки: Python 3.11, Node.js 20.

cd POSTGRES
terraform init
terraform apply

Подробности: POSTGRES/README.md


Полезные команды

# Посмотреть состояние задеплоенных ресурсов:
terraform show

# Принудительно пересобрать сервис (после изменения кода):
terraform apply -replace=sless_service.<имя>

# Повторно запустить job: увеличить run_id в .tf-файле, затем:
terraform apply

# Удалить все ресурсы примера:
terraform destroy