Commit Graph

32 Commits (master)

Author SHA1 Message Date
radex 4ffc64d97d kube: add .volume field on PVCs and ConfigMaps
Change-Id: I93eec44bd6df4ecb0044a4797faa9bf6fd26802d
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1811
Reviewed-by: q3k <q3k@hackerspace.pl>
2023-12-04 20:33:37 +00:00
radex 7a4c27d28c kube: clean up (various)
Change-Id: Idc11cf70fa7fd0360f63438270748ef1d9bad989
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1810
Reviewed-by: q3k <q3k@hackerspace.pl>
2023-12-04 20:33:31 +00:00
radex c995c212d2 kube: standardize on a `local top = self` convention
A convention is introduced to specify `local top = self` declaration at the top of an app/service/component's jsonnet, representing the top-level object. Reasoning is as following:

- `top` is more universal/unambiguous than `app`
- `top` is usually shorter than $NAME
- a conventional `top` instead of $NAME (coupled with other conventions introduced) makes app jsonnets wonderfully copy-paste'able, aiding in learning and quickly building

Change-Id: I7ece83ce7e97021ad98a6abb3500fb9839936811
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1805
Reviewed-by: q3k <q3k@hackerspace.pl>
2023-11-24 20:38:59 +00:00
radex 99ed6a7abb kube: standardize on a `local ns` convention
A convention is introduced to specify the kube.Namespace object in a deployment as a `local ns` instead of an `ns:` or a `namespace:` for these reasons:

- non-cluster admins cannot create new namespaces, and we've been moving in the direction of specifying objects that require cluster admin permissions to apply (policies, role bindings) in //cluster/kube/k0 instead of in the app jsonnet
- namespace admins CAN delete the namespace, making `kubecfg delete` unexpectedly dangerous (especially if a namespace contains more than just the contents of the file being applied - common with personal namespaces)
- `.Contain()` is a common operation, and it shows up in lines that are pretty long, so `ns.Contain()` is preferable to `app.ns.Contain()` or `service.namespace.Contain()`

Change-Id: Ie4ea825376dbf6faa175179054f3ee3de2253ae0
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1804
Reviewed-by: q3k <q3k@hackerspace.pl>
2023-11-24 20:38:44 +00:00
radex 36964dca3b kube: clean up PersistentVolumeClaims
There's no difference as far as jsonnet is concerned, but it may confuse newbies, as Service and SimpleIngress use double colon for its top-level kube helpers. This also removes any ambiguity as to whether this is manifested in final JSON. So we can make that a convention.

Change-Id: I01ad4ea63f4d5d8ee6e5d41c79637ba186548c6f
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1803
Reviewed-by: q3k <q3k@hackerspace.pl>
2023-11-24 20:37:53 +00:00
radex 8b8f3876a9 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>
2023-11-24 20:37:48 +00:00
radex f28cd62c0e *: Simplify kube.PersistentVolumeClaims
Change-Id: I0a3e44de9f1c4db146fd1e493741f5fe381da3ae
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1768
Reviewed-by: q3k <q3k@hackerspace.pl>
2023-11-18 12:36:00 +00:00
radex 0776a79df3 cluster/kube: Centralize namespace admin RoleBindings
Change-Id: Iec3505b2f4a1647e67cf47cf189c77534b5be6ac
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1696
Reviewed-by: q3k <q3k@hackerspace.pl>
2023-10-10 17:34:22 +00:00
q3k 97b5cd7b58 go: re-do the entire thing
This is a mega-change, but attempting to split this up further is
probably not worth the effort.

Summary:

1. Bump up bazel, rules_go, and others.
2. Switch to new go target naming (bye bye go_default_library)
3. Move go deps to go.mod/go.sum, use make gazelle generate from that
4. Bump up Python deps a bit

And also whatever was required to actually get things to work - loads of
small useless changes.

Tested to work on NixOS and Ubuntu 20.04:

   $ bazel build //...
   $ bazel test //...

Change-Id: I8364bdaa1406b9ae4d0385a6b607f3e7989f98a9
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1583
Reviewed-by: q3k <q3k@hackerspace.pl>
2023-09-22 21:50:19 +00:00
q3k b6504238e7 *: add gomod placeholders for generated files
Change-Id: I8a4824ff31590185cd45fd43cc065bb8e2fa7bb2
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1580
Reviewed-by: q3k <q3k@hackerspace.pl>
2023-09-01 16:50:48 +00:00
q3k 3c9b825ec7 games/valheim: create serviceaccount for external users/systems
q3k uses this to give access to someone who plays on the valheim server
so that they can get logs / restart things / etc.

Change-Id: If205709142d386c460eeb835829888957d28a654
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1442
Reviewed-by: patryk <patryk@hackerspace.pl>
2022-11-27 16:35:56 +00:00
ironbound e7c8509d48 bump factorio version
Change-Id: I027d45b843b33fe963008b90a5d1c024ecef4e71
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1205
Reviewed-by: ironbound <ironbound@hackerspace.pl>
Reviewed-by: lquawl <lquawl@hackerspace.pl>
Reviewed-by: q3k <q3k@hackerspace.pl>
2021-12-26 10:26:04 +00:00
q3k 5edcf58b8c games/valheim: fix startup, add second server
Change-Id: I7621eb42ee68ff25c0a69b29d4dc1728ce95cd42
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1204
Reviewed-by: q3k <q3k@hackerspace.pl>
2021-12-13 22:30:46 +00:00
q3k 77598faea2 Merge "games/factorio: pymods: bump up resources again" 2021-07-18 13:26:44 +00:00
q3k 0808034e6a games/factorio: make more configurable
This makes the server fully configurable, and adds the contents of
example JSON configs as the defaults for all servers.

Change-Id: I8ff3e66a586a9db3acb9721810c8c5aa13072b4b
2021-06-21 20:13:35 +00:00
q3k 99b10bb689 games/factorio: pymods: bump up resources again
Change-Id: I70d053eb7c6f0d3c770236f5140b5ceada8490fc
2021-06-21 14:07:31 +00:00
q3k f7efc40ea4 factorio: bump to 1.1.35
Change-Id: I1b61b70d0d4c3b7506fbac5319fa9ed86de08bb4
2021-06-18 19:31:07 +00:00
q3k 9c7e539315 factorio: bump up resource limits
Change-Id: If43889bb820abb2c034378d0af3fa2bcfde1361e
2021-06-18 19:31:03 +00:00
palid ba0fd8671c
games/factorio: add mciancia mods
Change-Id: I4335cb1cf62ec240a5301b1d076111909941b1ca
2021-06-16 10:41:07 +02:00
q3k c6cc561212 games/factorio: default proxyImage to version in proxy.libsonnet
Change-Id: Ic4c793311bc6ac6e3194a7b1464bb21d4ad7d1bd
2021-06-13 21:56:24 +00:00
q3k f07d5c39aa Merge "games/factorio: set default storage to waw-hdd-redundant-3" 2021-06-13 21:12:55 +00:00
palid 04adbfeeb4 Merge "games/factorio: run new pymods instance" 2021-06-13 21:12:39 +00:00
q3k 50a041d7af games/factorio: set default storage to waw-hdd-redundant-3
Change-Id: I1b8ecaf38d88f7403b07db7e95543a1a6f797fa7
2021-06-13 21:11:58 +00:00
palid b3799c80e8
games/factorio: run new pymods instance
Change-Id: I0a5c3b016e30f277744889cc93fa1ca576cdf1a0
2021-06-13 23:10:23 +02:00
q3k c684ca9b81 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
2021-06-12 22:03:52 +00:00
q3k e7f4cc121a games/factorio: move jsonnet from //personal/q3k
We also remove the definition of two instances that are long since dead.

Change-Id: I0cd83321403053cb72837da1497842109eeacd2b
2021-06-12 21:59:16 +00:00
q3k a5691b54cc Merge "games/valheim: allow patryk@ and palid@ to administer valheim namespace" 2021-03-06 22:17:05 +00:00
q3k b4de3f26f2 games/valheim: always update on startup
This has already been deployed to prod.

Change-Id: I02896bd7d12d89630b0465365e08a8980738184d
2021-02-25 13:23:44 +01:00
q3k 2371ca9073 games/valheim: allow patryk@ and palid@ to administer valheim namespace
This will create the following:

    apiVersion: rbac.authorization.k8s.io/v1beta1
    kind: RoleBinding
    metadata:
      annotations: {}
      labels:
        name: sso-admins
      name: sso:admins
      namespace: valheim
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: system:admin-namespace
    subjects:
    - apiGroup: rbac.authorization.k8s.io
      kind: User
      name: patryk@hackerspace.pl
    - apiGroup: rbac.authorization.k8s.io
      kind: User
      name: palid@hackerspace.pl

It's not enough to allow palid to use kubecfg (as we use a secretstore
secret in this jsonnet), but at least to manually restart the server via
kubectl, which is needed to update the game.

Change-Id: I6cb42ca87c9a78bbe34957f2c5e23acd2efe3423
2021-02-25 12:08:10 +01:00
q3k a715a02ad0 games/valheim: add patryk and palid to OWNERS
Change-Id: I15b08d17a5cb9c3a4f6d22d5780872df8f94c427
2021-02-24 00:16:42 +01:00
q3k 34d39cc8ed games/valheim: init
This creates a valheim game server, using a public image but slightly
nerfing it to be able to run it unprivileged.

We also deploy our first server. The password is Well Known To Those
Versed In Hackerspace Lore.

Change-Id: Ic24262a3b02d3c17d2f00aa2967e240ea4eee7fb
2021-02-23 23:13:40 +00:00
q3k 0581bbf8a0 games/factorio: add modproxy
This adds a mod proxy system, called, well, modproxy.

It sits between Factorio server instances and the Factorio mod portal,
allowing for arbitrary mod download without needing the servers to know
Factorio credentials.

Change-Id: I7bc405a25b6f9559cae1f23295249f186761f212
2020-08-14 13:03:46 +02:00