- handler.go: убраны бизнес-логика и k8s-типы (corev1/k8serrors/metav1)
handler.go теперь только инфраструктура: Handler struct + helpers
- namespace.go: новый файл — EnsureNamespace хендлер живёт здесь
SoC: создание namespace — отдельная ответственность, не смешивается с CRUD
- router.go: добавлен маршрут POST /v1/namespaces/{namespace}/ensure
- client.go: добавлен метод EnsureNamespace(ctx, ns) → POST /ensure
- provider.go: Configure() вызывает c.EnsureNamespace(ctx, namespace) после создания Client
Namespace создаётся ОДИН РАЗ при инициализации провайдера
Resource-хендлеры (Function, Trigger, Job) namespace не трогают
- .gitignore: добавлена директория secrets/ (токены, ключи)
- provider v0.1.13, operator v0.1.21
Operator: naeel/sless-operator:v0.1.21
Provider: terra.k8c.ru/naeel/sless v0.1.13
25 lines
806 B
HCL
25 lines
806 B
HCL
# 2026-03-11
|
|
# main.tf — провайдеры.
|
|
# Функции и их код определены в отдельных файлах:
|
|
# http.tf — HTTP-триггер (code/handler-http.js)
|
|
# job.tf — одноразовый запуск (code/handler-job.js)
|
|
#
|
|
# nubes_endpoint — провайдер делает GET запрос для валидации токена.
|
|
# Namespace вычисляется автоматически из JWT sub: sless-{sha256[:8]}
|
|
|
|
terraform {
|
|
required_providers {
|
|
sless = {
|
|
source = "terra.k8c.ru/naeel/sless"
|
|
version = "~> 0.1.13"
|
|
}
|
|
}
|
|
}
|
|
|
|
provider "sless" {
|
|
endpoint = "https://sless-api.kube5s.ru"
|
|
token = file("${path.module}/../../secrets/prod.token")
|
|
nubes_endpoint = "https://deck-api.ngcloud.ru/api/v1"
|
|
}
|
|
|