fix+docs: FunctionJob label bugfix, job ErrAlreadyExists, python str→text/plain, operator.yaml v0.1.33, progress.md
- controllers/functionjob_controller.go: - PodTemplate labels: functionjob=, function= (k8s 1.27+ удалил job-name=) - getJobPodOutput принимает labelSelector вместо jobName - захват stderr при Failed job; truncateForStatus() helper - terraform/provider/internal/client/client.go: ErrJobAlreadyExists (409 Conflict) - terraform/provider/internal/resources/job_resource.go: при конфликте создания — читаем существующий job - runtimes/python3.11/server.py: str return → text/plain - internal/builder/context.go: python runtime base image → v0.1.3 - deployments/k8s/operator.yaml: image → v0.1.33 - doc/progress.md: добавлены секции FunctionJob bugfix, str→text/plain, web-console v0.2.0
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
# 2026-03-18
|
||||
# funcs-service.yaml — глобальный сервис листинга функций для всех пользователей.
|
||||
# Развёртывается ОДИН РАЗ в namespace sless рядом с оператором.
|
||||
# Доступен по: https://sless.kube5s.ru/funcs (с Bearer токеном пользователя)
|
||||
#
|
||||
# Обновить образ и применить:
|
||||
# docker push naeel/sless-funcs-service:v0.1.0
|
||||
# kubectl apply -f deployments/k8s/funcs-service.yaml
|
||||
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: sless-funcs-service
|
||||
namespace: sless
|
||||
labels:
|
||||
app: sless-funcs-service
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: sless-funcs-service
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: sless-funcs-service
|
||||
spec:
|
||||
containers:
|
||||
- name: funcs
|
||||
image: naeel/sless-funcs-service:v0.1.3
|
||||
ports:
|
||||
- containerPort: 8090
|
||||
env:
|
||||
- name: SLESS_OPERATOR_URL
|
||||
value: "http://sless-operator.sless.svc.cluster.local:9090"
|
||||
- name: SLESS_EXTERNAL_URL
|
||||
value: "https://sless.kube5s.ru"
|
||||
# Системные функции, скрытые из листинга
|
||||
- name: SLESS_EXCLUDE
|
||||
value: "event-writer,event-monitor,event-cleaner"
|
||||
# Токен сервиса задаётся через kubectl set env или Secret — не хранится в репо
|
||||
# kubectl set env deployment/sless-funcs-service -n sless SLESS_SERVICE_TOKEN="$(cat secrets/test.token)"
|
||||
- name: PORT
|
||||
value: "8090"
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: 8090
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 30
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: 8090
|
||||
initialDelaySeconds: 3
|
||||
periodSeconds: 10
|
||||
resources:
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 16Mi
|
||||
limits:
|
||||
cpu: 100m
|
||||
memory: 64Mi
|
||||
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: sless-funcs-service
|
||||
namespace: sless
|
||||
spec:
|
||||
selector:
|
||||
app: sless-funcs-service
|
||||
ports:
|
||||
- port: 8090
|
||||
targetPort: 8090
|
||||
|
||||
---
|
||||
# Отдельный Ingress для /funcs — nginx выбирает более специфичный путь перед /
|
||||
# Без rewrite: сервис сам обрабатывает /funcs path
|
||||
# TLS-сертификат sless-operator-tls уже управляется cert-manager через ingress оператора;
|
||||
# здесь только ссылаемся на существующий секрет без аннотации cert-manager.io/cluster-issuer.
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: sless-funcs-ingress
|
||||
namespace: sless
|
||||
annotations:
|
||||
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
|
||||
nginx.ingress.kubernetes.io/ssl-redirect: "true"
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
rules:
|
||||
- host: sless.kube5s.ru
|
||||
http:
|
||||
paths:
|
||||
- path: /funcs
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: sless-funcs-service
|
||||
port:
|
||||
number: 8090
|
||||
tls:
|
||||
- hosts:
|
||||
- sless.kube5s.ru
|
||||
secretName: sless-operator-tls
|
||||
Reference in New Issue
Block a user