sless-primer/pg-query/main.tf
“Naeel” d32d0b9766 feat: add pg-query example + upload.go supports requirements.txt
- examples/pg-query/handler.py: Python function querying PostgreSQL invocations table
- examples/pg-query/requirements.txt: psycopg2-binary==2.9.9
- examples/pg-query/main.tf: terraform config for sless_function + sless_trigger
- internal/api/handler/upload.go: generateDockerfile() now accepts hasRequirements bool
  - scans zip for requirements.txt at upload time
  - adds RUN pip install --no-cache-dir to Dockerfile when requirements.txt present
- doc/progress.md: updated status for pg-query e2e task
2026-03-07 10:30:50 +04:00

65 lines
1.9 KiB
HCL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 2026-03-07
# main.tf — e2e тест: создать serverless функцию, которая читает из PostgreSQL.
#
# Использование:
# 1. Убедиться что оператор запущен локально: source hack/local.env && go run main.go
# 2. zip handler.py + requirements.txt:
# zip handler.zip handler.py requirements.txt
# 3. terraform init && terraform apply
# 4. После apply (ждёт ~2 мин пока kaniko соберёт образ):
# curl -s -X POST <url_из_trigger> -d '{}'
#
# Функция подключается к postgres.sless.svc.cluster.local:5432 изнутри кластера.
# PG_DSN задаётся как env_var ресурса sless_function.
terraform {
required_providers {
sless = {
source = "terra.k8c.ru/naeel/sless"
version = "~> 0.1"
}
}
}
provider "sless" {
endpoint = "http://localhost:9090"
token = "dev-token-change-me"
}
resource "sless_function" "pg_query" {
namespace = "default"
name = "pg-query"
runtime = "python3.11"
entrypoint = "handler.handle"
memory_mb = 128
timeout_sec = 30
# DSN для подключения к postgres внутри кластера
# Хост: postgres.sless.svc.cluster.local (Service в namespace sless)
env_vars = {
PG_DSN = "postgres://sless:sless-pg-password@postgres.sless.svc.cluster.local:5432/sless?sslmode=disable"
}
code_path = "${path.module}/handler.zip"
code_hash = filemd5("${path.module}/handler.zip")
}
resource "sless_trigger" "pg_query_http" {
namespace = "default"
name = "pg-query-http"
type = "http"
function = sless_function.pg_query.name
}
output "function_phase" {
value = sless_function.pg_query.phase
}
output "function_image" {
value = sless_function.pg_query.image_ref
}
output "trigger_url" {
value = sless_trigger.pg_query_http.url
}