diff --git a/games/factorio/kube/prod.jsonnet b/games/factorio/kube/prod.jsonnet index d833fc39..ef441a13 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 kube = import "../../../kube/kube.libsonnet"; { 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", }, }, diff --git a/games/factorio/kube/proxy.libsonnet b/games/factorio/kube/proxy.libsonnet new file mode 100644 index 00000000..514281a1 --- /dev/null +++ b/games/factorio/kube/proxy.libsonnet @@ -0,0 +1,68 @@ +local kube = import "../../../kube/kube.libsonnet"; + +{ + local proxy = self, + local cfg = proxy.cfg, + + cfg:: { + image:: "registry.k0.hswaw.net/games/factorio/modproxy:1589157915-eafe7be328477e8a6590c4210466ef12901f1b9a", + namespace: error "namespace must be set", + }, + + pvc: kube.PersistentVolumeClaim("proxy-cas") { + metadata+: { + namespace: cfg.namespace, + }, + 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(proxy.pvc), + }, + containers_: { + proxy: kube.Container("proxy") { + image: cfg.image, + 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:: proxy.deploy.spec.template, + spec+: { + ports: [ + { name: "client", port: 4200, targetPort: 4200, protocol: "TCP" }, + ], + }, + }, +}