games/factorio: factor out modproxy jsonnet

This moves all the proxy Kube resources to proxy.libsonnet.

Effect is a zero diff against prod:

    $ kubecfg diff --diff-strategy=subset prod.jsonnet
    [...]
    namespaces factorio unchanged
    [...]
    deployments factorio.proxy unchanged
    [...]
    services factorio.proxy unchanged
    [...]
    persistentvolumeclaims factorio.proxy-cas unchanged

Change-Id: I9c6281e836f7b78373aad21120340994e801f8b4
diff --git a/games/factorio/kube/prod.jsonnet b/games/factorio/kube/prod.jsonnet
index d833fc3..ef441a1 100644
--- a/games/factorio/kube/prod.jsonnet
+++ b/games/factorio/kube/prod.jsonnet
@@ -1,4 +1,5 @@
 local factorio = import "factorio.libsonnet";
+local proxy = import "proxy.libsonnet";
 local kube = import "../../../kube/kube.libsonnet";
 
 // This deploys factorio instances and the modproxy in the `factorio`
@@ -12,74 +13,21 @@
 {
     local prod = self,
 
-    proxyImage:: "registry.k0.hswaw.net/games/factorio/modproxy:1589157915-eafe7be328477e8a6590c4210466ef12901f1b9a",
-
     namespace: kube.Namespace("factorio"),
+
+    // instance makes a factorio server with a given name and at a
+    // given tag/version.
     instance(name, tag):: factorio {
         cfg+: {
             namespace: "factorio",
             prefix: name + "-",
             tag: tag,
-            proxyImage: prod.proxyImage,
         }
     },
 
-    proxy: {
-        pvc: kube.PersistentVolumeClaim("proxy-cas") {
-            metadata+: {
-                namespace: "factorio",
-            },
-            spec+: {
-                storageClassName: "waw-hdd-redundant-3",
-                accessModes: [ "ReadWriteOnce" ],
-                resources: {
-                    requests: {
-                        storage: "32Gi",
-                    },
-                },
-            },
-        },
-        deploy: kube.Deployment("proxy") {
-            metadata+: {
-                namespace: "factorio",
-            },
-            spec+: {
-                template+: {
-                    spec+: {
-                        volumes_: {
-                            cas: kube.PersistentVolumeClaimVolume(prod.proxy.pvc),
-                        },
-                        containers_: {
-                            proxy: kube.Container("proxy") {
-                                image:prod.proxyImage,
-                                command: [
-                                    "/games/factorio/modproxy/modproxy",
-                                    "-hspki_disable",
-                                    "-cas_directory", "/mnt/cas",
-                                    "-listen_address", "0.0.0.0:4200",
-                                ],
-                                volumeMounts_: {
-                                    cas: { mountPath: "/mnt/cas" },
-                                },
-                                ports_: {
-                                    client: { containerPort: 4200 },
-                                },
-                            },
-                        },
-                    },
-                },
-            },
-        },
-        svc: kube.Service("proxy") {
-            metadata+: {
-                namespace: "factorio",
-            },
-            target_pod:: prod.proxy.deploy.spec.template,
-            spec+: {
-                ports: [
-                    { name: "client", port: 4200, targetPort: 4200, protocol: "TCP" },
-                ],
-            },
+    proxy: proxy {
+        cfg+: {
+            namespace: "factorio",
         },
     },