Skip to content

Instantly share code, notes, and snippets.

@josqu4red
Created November 21, 2019 09:11
Show Gist options
  • Save josqu4red/e60e36984a7db2db75c7617239de4c31 to your computer and use it in GitHub Desktop.
Save josqu4red/e60e36984a7db2db75c7617239de4c31 to your computer and use it in GitHub Desktop.
Augmented kube.libsonnet's Service
local service_ = k.Service(cfg.name) {
metadata+: cfg.metadata_,
target_pod: deployment_.spec.template,
target_ports: ['http', 'admin'],
}
{
Service(name): kube._Object('v1', 'Service', name) {
local service = self,
target_pod:: error 'service target_pod required',
target_ports:: [],
local default_port = service.target_pod.spec.containers[0].ports[0],
ports:: (
if std.length(service.target_ports) == 0 then
[
{
name: default_port.name,
port: default_port.containerPort,
targetPort: default_port.containerPort,
},
]
else
[
{
name: port.name,
port: port.containerPort,
targetPort: port.containerPort,
}
for port in std.flattenArrays(std.map(function(o) o.ports, service.target_pod.spec.containers))
if std.count(service.target_ports, port.name) > 0
]
),
spec: {
selector: service.target_pod.metadata.labels,
type: 'ClusterIP',
ports: service.ports,
},
},
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment