64 lines
1.5 KiB
Plaintext
64 lines
1.5 KiB
Plaintext
|
|
# 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 = [],
|
||
|
|
},
|
||
|
|
},
|
||
|
|
}
|