Commit Graph

84 Commits (a6f2ccf344571138371576d32b5dc7b6eb274533)

Author SHA1 Message Date
radex a4411e57e2 devtools/sourcegraph: migrate away from mirko.libsonnet
Change-Id: I842db50b49a5fbcc11e13d250e88c0d6bfc068be
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1769
Reviewed-by: q3k <q3k@hackerspace.pl>
2024-02-04 14:26:03 +00:00
radex bf4ba488e5 devtools/depotview: migrate away from mirko.libsonnet
Change-Id: I4ef6e2872e22dff4c3b57e801f8c86b69880835e
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1761
Reviewed-by: q3k <q3k@hackerspace.pl>
2024-02-04 14:25:57 +00:00
radex 56b2e04106 kube: migrate devtools/hackdoc from mirko.libsonnet to new hspki.libsonnet
Change-Id: I28bd444d729c2f18fe2b7e44ef120c867f541351
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1751
Reviewed-by: q3k <q3k@hackerspace.pl>
2024-02-04 14:25:06 +00:00
q3k 939eaaaccb *: enable nogo (go linter)
Also fix a bunch of small issues in our codebase, whoops.

This is ran automatically on `bazel build`.

Change-Id: If49ba956b4e2380344a765c30cd84ab760fc4c68
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1849
Reviewed-by: palid <palid@hackerspace.pl>
2024-01-30 22:03:50 +00:00
q3k dacb77828d *: run buildifier
Change-Id: I4da53918e23ab5bb878ad47cfbfcf416e7b1660b
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1848
Reviewed-by: palid <palid@hackerspace.pl>
2024-01-15 13:48:24 +00:00
informatic e118330506 devtools/gerrit: use correct code.hackerspace.pl domain
Change-Id: Iebabb7ae5d5db6cfc340b3c01dcce85fc85ae405
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1831
Reviewed-by: q3k <q3k@hackerspace.pl>
2024-01-09 21:43:23 +00:00
radex ad91bd2893 kube/postgres: force explicit versioning, storage class, clean up
Postgres version should be stated explicitly by the user. We can't auto-upgrade all apps, so we'd never change the 10.4 default. By forcing version to be explicit, we encourage users to pick the latest version when they first deploy, or to upgrade to latest from the old 10.4.

Also, non-existent storage class default is removed in favor of explicitly asking for storageClassName.

Change-Id: I715bcde6a66ca97be757abcea93c14139d61ed5a
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1791
Reviewed-by: informatic <informatic@hackerspace.pl>
2024-01-03 11:39:20 +00:00
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 d45584aa6d kube: clean up SimpleIngress
Rename `target_service` to `target` to mirror Service's `target`; rename `extra_paths` to `extraPaths` to follow the camelCase convention used everywhere except for a few places in kube.upstream (assumed to be a mistake)

Change-Id: Icfcb70ef889e3359bf0391c465034817f4b70cce
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1809
Reviewed-by: q3k <q3k@hackerspace.pl>
2023-12-04 20:33:10 +00:00
radex 0e12849717 kube: use ns.Contain() for postgres and redis
This is purely for consistency. While it's objectively more "magic" than the previous convention, newcomers may be asking themselves how come namespace is passed to kube objects using ns.Contain(), but to these custom objects via cfg.namespace.

Change-Id: I061c27c74213d5481b2c7e0afd5f316e84335786
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1808
Reviewed-by: q3k <q3k@hackerspace.pl>
2023-11-24 20:39:30 +00:00
radex 37991744d8 kube: standardize convention for passing postgres options
Declare options when creating postgres {}, then pass env by taking from postgres's cfg and svc. This is both to reduce chance of making a mistake, and to improve copy-pasteability of jsonnets

Change-Id: Ief16a6825af64795f3b10e1e617b96c3d1c2a578
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1807
Reviewed-by: q3k <q3k@hackerspace.pl>
2023-11-24 20:39:18 +00:00
radex 1439fde1ba kube: standardize top.secretRefs convention
Introduce a convention of declaring a secretsRefs:: object below cfg:: for containing all secretKeyRefs. The goal is to self-document all secrets that need to be created in order to deploy a service

Change-Id: I3a990d54f65a288f5e748262c576d2a120efd815
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1806
Reviewed-by: q3k <q3k@hackerspace.pl>
2023-11-24 20:39:11 +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 f5844311eb */kube: Add kube.SimpleIngress
Change-Id: Iddcac629b9938f228dd93b32e58bb14606d5c6e5
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1745
Reviewed-by: q3k <q3k@hackerspace.pl>
2023-10-28 17:55:48 +00:00
q3k 28b5260753 gerrit: use profile.hackerspace.pl avatars
Change-Id: I44d1ff32843d6239e9728427d479208d853a06d2
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1743
Reviewed-by: q3k <q3k@hackerspace.pl>
2023-10-27 19:42:30 +00:00
q3k 6e10e46f96 gerrit-qa: deploy
A little QA environment, currently without any data populated.

Change-Id: Ifbe5e97f312376ca64222a3754fe6fa29d7fda79
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1643
Reviewed-by: q3k <q3k@hackerspace.pl>
2023-10-09 19:11:02 +00:00
q3k 2ceb69f30b gerrit: bump to 3.7.5
This involved messing with both of our source-built plugins (owners and
oauth).

The main issue seems to have been the desync between Jackson as
requested by different plugins. Jackson is split into multiple Maven
packages, and they all have to be the same version to work together. The
oauth plugin was requesting only part of it, and these parts were
incompatible with the parts that the owners plugin requested.

In addition, we have to make the owners plugin include more bits of
Jackson.

Without these changes, we would get runtime
`java.lang.NoClassDefFoundError: com/fasterxml/jackson/...` errors,
which were a symptom of Jackson either not being included fully into the
plugin's JAR, or a mixup between Jackson component/package versions.

While we're at it, we remove the broken theming attempt.

Change-Id: I26531818a395de2a8bb6054d2583881fd1d5b806
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1642
Reviewed-by: q3k <q3k@hackerspace.pl>
2023-10-09 19:11:02 +00:00
q3k 7f5f2099c5 gerrit: add ref-updated hook to poke forgejo
This has been deployed already.

Technically depends on I26531818a395de2a8bb6054d2583881fd1d5b806 as this
has been deployed on top of that.

Change-Id: I1b8d453d04f3a9a5435ae0dd6575f82d9ca10db7
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1681
Reviewed-by: informatic <informatic@hackerspace.pl>
2023-10-08 20:08:50 +00:00
q3k c68343caad gerrit: use Forgejo for viewing repo state
Already deployed.

Change-Id: I3a82e99f22e66676d79baafac85e7263ca140014
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1661
Reviewed-by: q3k <q3k@hackerspace.pl>
2023-10-08 20:08:50 +00:00
informatic 69957c346f devtools/gerrit: add simple healthcheck
This should somewhat temporarily fix gerrit outright dying (ie. refusing
to accept any new http connections) for no reason once in a while.

Change-Id: Ie0dfcab020945d17010c012ecfae19f4c8c5c374
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1601
Reviewed-by: q3k <q3k@hackerspace.pl>
2023-09-24 13:42:48 +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
informatic 7e841065b0 *: post-certmanager manifests update
Change-Id: I745c850268c31777c5722a9833c8152a55615aed
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1512
Reviewed-by: q3k <q3k@hackerspace.pl>
2023-06-19 21:20:44 +00:00
q3k a63c315f7d prodimage: bump to focal
Change-Id: I502ef4bbc593dae4db900eb10dc4ad93daad3985
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1382
Reviewed-by: q3k <q3k@hackerspace.pl>
2022-08-30 17:30:50 +00:00
informatic 94b080d375 devtools/hackdoc: fixup rendering on mobile
Change-Id: If587defdc0bf1d7c5491c328803289b9e75ba918
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1148
Reviewed-by: q3k <q3k@hackerspace.pl>
2021-09-18 20:23:34 +00:00
q3k 8a572cd36a Merge "devtools/ci/remote-cache: init" 2021-05-12 21:09:00 +00:00
q3k 56c262f2b6 devtools/hackdoc: serve JS with correct mimetype
This allows us to serve rich content from hackdoc, eg. hbj11's
webflaser.

Change-Id: Ife83888d864db0b2eddf3a50b0129be0172aad8a
2021-03-23 15:50:51 +00:00
q3k 5de0b32e3b devtools/ci/remote-cache: init
This is a first pass at a Bazel remote cache. It notably does not yet do
any authentication, upload limits or garbage collection.

We won't be deploying it to prod until these are done.

Change-Id: I70a89dbe8b3ec933b2ce82e234a969e8337ba1d9
2021-03-20 13:15:18 +00:00
q3k 146c99e58e devtools/gerrit: backport reviewiers column fix to 3.3.2
Gerrit 3.3.1 seems to have introduced a bug which makes the reviewers
column in the dashboard entry: https://bugs.chromium.org/p/gerrit/issues/detail?id=13899

This adds an override of gerrit.war to our Docker containers. The .war
is pulled over HTTP. It has been manually built by q3k from a source
checkout. The details on how this was done are in the WORKSPACE
http_file archive.

Once 3.3.3 lands we should get rid of it.

Change-Id: I8b64103cb87d8b185ff35165695a18cb19fea523
2021-03-18 19:51:33 +00:00
q3k 408d544898 devtools/gerrit: attempt to deploy theme
This doesn't entirely work, as we need to use PolyGerrit 3 compatible
theme injection.

Change-Id: I13305a4774028bdb92c1449ddb461b59ce8ae82f
2021-03-17 21:17:04 +00:00
q3k dd692217c1 gerrit: bump to 3.3.2
Deployed to prod.

Change-Id: Iac1fdee4ec22e6a6d92ff31ab5535a43cfbcffb1
2021-03-11 23:31:28 +00:00
q3k 3ba5c1b591 *: docs pass
Change-Id: I87ca80d3f7728ed407071468ac233e6ad4574929
2021-03-06 22:21:28 +00:00
q3k c0d9ea081f hackdoc: deploy
Change-Id: I2d1661212f906cc431a47a372b2e52a6be2e07f4
2021-03-06 22:21:28 +00:00
q3k bc0d3cb227 hackdoc: link to cs instead of gitweb
Change-Id: Ifca7a63517bceffe7ccc0452474d9d16626486de
2021-03-06 22:16:54 +00:00
q3k 81262ff202 hackdoc: when redirecting, skip ref if default
Change-Id: Ie1680500ede673c407c9c8f4bbbe6b7f6a41b422
2021-03-06 22:16:54 +00:00
q3k 2df7685b46 devtools/gerrit: remove tools/eclipse, which breaks global build
Change-Id: Ie7e8faa6c80a0a4b75bd0bae7da225c4f607ce18
2021-02-14 14:45:37 +00:00
q3k 6e71f8a889 devtools: remove unused bazel-cache
Change-Id: I843ba2b20446aba6d8e0b23bb3f494a62e1c0ade
2021-02-14 14:44:47 +00:00
informatic 5c08bb9197 Merge "devtools/issues: add mailing support" 2021-02-09 19:38:53 +00:00
informatic 054c5b47d6 devtools/issues: add mailing support
Resolves b/15

Change-Id: I53a4057ff428219ae1d4928db74eaa2e8bda6651
2021-02-09 09:59:59 +00:00
q3k c9f48fee70 gerrit: integrate with b.hackerspace.pl
Already deployed on prod. Example: b/1337

Change-Id: Ia1bd038a0fc65ad9ddba74e515c113b5421bdfff
2021-02-08 15:10:14 +00:00
q3k 877cf0af26 🅱️
Fixes b/8

Change-Id: I5a5779c3688451d89c0601dc913143d75048c9f6
2021-02-08 15:10:11 +00:00
informatic 0572fff9a4 devtools/issues: redmine deployment
Change-Id: I71956c4132bf2063e9fc41eb24c4f37657b8fd9d
2021-02-06 22:23:53 +01:00
q3k adbf560851 devtools: bump up depotview mem limit
It used to be at 128Mi, which is a bit small considering this clones
hscloud into memory.

This is a quick fix, a better thing to do would be to have some storage
for depotview to clone into, instead of serving fully from RAM.

Change-Id: I619d39a0d61f5de9bdeef1f46262c78ea33a19fc
2021-01-22 18:38:43 +01:00
q3k 61f978a0a0 *: tear down ceph-waw2
It reached the stage of being crapped out so much that the OSDs spurious
IOPS killed the performance of disks colocated on the same M610 RAID
controllers. This made etcd _very_ slow, to the point of churning
through re-elections due to timeouts.

etcd/apiserver latencies, observe the difference at ~15:38:

https://object.ceph-waw3.hswaw.net/q3k-personal/4fbe8d4cfc8193cad307d487371b4e44358b931a7494aa88aff50b13fae9983c.png

I moved gerrit/* and matrix/appservice-irc-freenode PVCs to ceph-waw3 by
hand. The rest were non-critical so I removed them, they can be
recovered from benji backups if needed.

Change-Id: Iffbe87aefc06d8324a82b958a579143b7dd9914c
2021-01-22 16:26:09 +01:00
q3k ee2f8a37d5 gerrit: deploy 3.3.0
Change-Id: Ib48f2df4b7fd424a6a33d928d60a1a4c92c43c30
2020-12-17 23:32:30 +01:00
q3k 70c60feea6 gerrit-oauth-provider: port Warsaw Hackerspace plugin to new API
Change-Id: Ia1260e3ebf14e410ffd94c0e74113a5bae568157
2020-12-17 23:06:02 +01:00