kube: add target:: convenience field to Service

Change-Id: If69116d93b6074136a36d98973e1aa997e2ebbef
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1802
Reviewed-by: q3k <q3k@hackerspace.pl>
diff --git a/kube/kube.libsonnet b/kube/kube.libsonnet
index a8fe444..ac96451 100644
--- a/kube/kube.libsonnet
+++ b/kube/kube.libsonnet
@@ -37,6 +37,13 @@
         metadata+: { annotations: {} },
     },
 
+    // Add `target` field
+    Service(name): kube.Service(name) {
+        // Deployment, Pod, DaemonSet, etc. that this Service is targeting.
+        target:: error "service target must be defined",
+        target_pod:: kube.podRef(self.target),
+    },
+
     CephObjectStoreUser(name): kube._Object("ceph.rook.io/v1", "CephObjectStoreUser", name) {
         local user = self,
         spec: error "spec must be defined",
diff --git a/kube/mirko.libsonnet b/kube/mirko.libsonnet
index 4f7d501..cca39ed 100644
--- a/kube/mirko.libsonnet
+++ b/kube/mirko.libsonnet
@@ -125,7 +125,7 @@
             volumes:: {},
             containers:: {
                 main: cfg.container,
-            }, 
+            },
             nodeSelector: null,
             securityContext: {},
             container:: error "container(s) must be set",
@@ -202,7 +202,7 @@
 
         svc: kube.Service(component.makeName("")) { // No suffix, name part of DNS entry.
             metadata+: component.metadata,
-            target_pod:: component.deployment.spec.template,
+            target:: component.deployment,
             spec+: {
                 ports: [
                     {
@@ -222,7 +222,7 @@
         pki: {
             cert: kube.Certificate(component.makeName("-cert")) {
                 metadata+: component.metadata,
-        
+
                 spec: {
                     secretName: component.makeName("-cert"),
                     duration: "35040h0m0s", // 4 years
diff --git a/kube/postgres.libsonnet b/kube/postgres.libsonnet
index ac29f26..11393ab 100644
--- a/kube/postgres.libsonnet
+++ b/kube/postgres.libsonnet
@@ -171,7 +171,7 @@
 
     svc: kube.Service(postgres.makeName("postgres")) {
         metadata+: postgres.metadata,
-        target_pod:: postgres.deployment.spec.template,
+        target:: postgres.deployment,
         spec+: {
             ports: [
                 { name: "client", port: 5432, targetPort: 5432, protocol: "TCP" },
@@ -213,7 +213,7 @@
                     "app.kubernetes.io/component": "bouncer",
                 }
             },
-            target_pod:: postgres.bouncer.deployment.spec.template,
+            target:: postgres.bouncer.deployment,
             spec+: {
                 ports: [
                     { name: "client", port: 5432, targetPort: 5432, protocol: "TCP" },
diff --git a/kube/postgres_v.libsonnet b/kube/postgres_v.libsonnet
index ce8dc85..1c4357a 100644
--- a/kube/postgres_v.libsonnet
+++ b/kube/postgres_v.libsonnet
@@ -94,7 +94,7 @@
 
     svc: kube.Service(postgres.makeName("postgres")) {
         metadata+: postgres.metadata,
-        target_pod:: postgres.deployment.spec.template,
+        target:: postgres.deployment,
         spec+: {
             ports: [
                 { name: "client", port: 5432, targetPort: 5432, protocol: "TCP" },
@@ -136,7 +136,7 @@
                     "app.kubernetes.io/component": "bouncer",
                 }
             },
-            target_pod:: postgres.bouncer.deployment.spec.template,
+            target:: postgres.bouncer.deployment,
             spec+: {
                 ports: [
                     { name: "client", port: 5432, targetPort: 5432, protocol: "TCP" },
diff --git a/kube/redis.libsonnet b/kube/redis.libsonnet
index 9c21c49..f382d8b 100644
--- a/kube/redis.libsonnet
+++ b/kube/redis.libsonnet
@@ -87,7 +87,7 @@
     },
     svc: kube.Service(redis.makeName("redis")) {
         metadata+: redis.metadata,
-        target_pod:: redis.deployment.spec.template,
+        target:: redis.deployment,
         spec+: {
             ports: [
                 { name: "client", port: 6379, targetPort: 6379, protocol: "TCP" },