provisioning/schemas/platform/templates/kubernetes/orchestrator-service.yaml.ncl

64 lines
1.5 KiB
Plaintext
Raw Normal View History

# Orchestrator Kubernetes Service
# Exposes orchestrator deployment internally and externally
# Supports ClusterIP (internal) and LoadBalancer (external) service types
#
# Usage:
# nickel eval --format json orchestrator-service.yaml.ncl | yq -P > orchestrator-service.yaml
# kubectl apply -f orchestrator-service.yaml
{
apiVersion = "v1",
kind = "Service",
metadata = {
name = "orchestrator",
labels = {
app = "orchestrator",
component = "provisioning-platform",
},
annotations = {
"description" = "Orchestrator service for workflow engine and task queue",
},
},
spec = {
# Service type: ClusterIP (internal) or LoadBalancer (external)
# Solo/MultiUser/CI/CD: ClusterIP (internal only)
# Enterprise: LoadBalancer (external access with load balancer)
type = "ClusterIP",
# Session affinity for stateful services
sessionAffinity = "ClientIP",
sessionAffinityConfig = {
clientIP = {
timeoutSeconds = 10800, # 3 hours
},
},
# Selector matches deployment pods
selector = {
app = "orchestrator",
},
# Ports
ports = [
{
name = "http",
protocol = "TCP",
port = 9090,
targetPort = 9090,
},
{
name = "metrics",
protocol = "TCP",
port = 9091,
targetPort = 9091,
},
],
# Traffic policy
trafficPolicy = {
# For enterprise mode: distribute traffic across replicas
loadBalancerSourceRanges = [],
},
},
}