37 lines
778 B
CUE
37 lines
778 B
CUE
|
package main
|
||
|
|
||
|
// Service template containing all the common boilerplate shared by
|
||
|
// services of this application.
|
||
|
#Service: {
|
||
|
// Name of the service. This will be used to label resources automatically
|
||
|
// and generate selector.
|
||
|
name: string
|
||
|
|
||
|
// NodePort is the default service type.
|
||
|
type: *"NodePort" | "LoadBalancer" | "ClusterIP" | "ExternalName"
|
||
|
|
||
|
// Ports where the service should listen
|
||
|
ports: [string]: number
|
||
|
|
||
|
// Service manifest. Uses the name, type and ports above to
|
||
|
// generate the resource manifest.
|
||
|
manifest: {
|
||
|
apiVersion: "v1"
|
||
|
kind: "Service"
|
||
|
metadata: {
|
||
|
"name": "\(name)-service"
|
||
|
labels: app: name
|
||
|
}
|
||
|
spec: {
|
||
|
"type": type
|
||
|
"ports": [
|
||
|
for k, v in ports {
|
||
|
name: k
|
||
|
port: v
|
||
|
},
|
||
|
]
|
||
|
selector: app: name
|
||
|
}
|
||
|
}
|
||
|
}
|