blob: 73856a5a152ac1f35d28451086f3aa782d424c58 [file] [log] [blame]
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +02001// k0.hswaw.net kubernetes cluster
2// This defines the cluster as a single object.
3// Use the sibling k0*.jsonnet 'view' files to actually apply the configuration.
4
5local kube = import "../../kube/kube.libsonnet";
6local policies = import "../../kube/policies.libsonnet";
7
8local cluster = import "cluster.libsonnet";
9
Serge Bazanski3c5d8362021-02-06 17:27:02 +000010local admitomatic = import "lib/admitomatic.libsonnet";
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +020011local cockroachdb = import "lib/cockroachdb.libsonnet";
12local registry = import "lib/registry.libsonnet";
13local rook = import "lib/rook.libsonnet";
radex0776a792023-10-10 00:02:29 +020014local admins = import "lib/admins.libsonnet";
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +020015
16{
17 k0: {
18 local k0 = self,
19 cluster: cluster.Cluster("k0", "hswaw.net") {
20 cfg+: {
Serge Bazanski3d294842020-08-04 01:34:07 +020021 storageClassNameParanoid: k0.ceph.waw3Pools.blockRedundant.name,
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +020022 },
23 metallb+: {
24 cfg+: {
Serge Bazanskia5ed6442020-09-20 22:52:57 +000025 // Peer with calico running on same node.
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +020026 peers: [
27 {
Serge Bazanskia5ed6442020-09-20 22:52:57 +000028 "peer-address": "127.0.0.1",
29 "peer-asn": 65003,
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +020030 "my-asn": 65002,
31 },
32 ],
Serge Bazanskia5ed6442020-09-20 22:52:57 +000033 // Public IP address pools. Keep in sync with k0.calico.yaml.
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +020034 addressPools: [
35 {
36 name: "public-v4-1",
37 protocol: "bgp",
38 addresses: [
39 "185.236.240.48/28",
40 ],
41 },
42 {
43 name: "public-v4-2",
44 protocol: "bgp",
45 addresses: [
46 "185.236.240.112/28"
47 ],
48 },
49 ],
50 },
51 },
52 },
53
54 // Docker registry
55 registry: registry.Environment {
56 cfg+: {
57 domain: "registry.%s" % [k0.cluster.fqdn],
58 storageClassName: k0.cluster.cfg.storageClassNameParanoid,
Serge Bazanski3d294842020-08-04 01:34:07 +020059 objectStorageName: "waw-hdd-redundant-3-object",
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +020060 },
61 },
62
63 // CockroachDB, running on bc01n{01,02,03}.
64 cockroach: {
65 waw2: cockroachdb.Cluster("crdb-waw1") {
66 cfg+: {
67 topology: [
Patryk Jakuszewedf14cc2021-01-23 23:00:29 +010068 { name: "dcr01s22", node: "dcr01s22.hswaw.net" },
Serge Bazanskibdd403c2021-10-28 23:37:38 +000069 { name: "dcr01s24", node: "dcr01s24.hswaw.net" },
Serge Bazanski65349692023-10-09 20:26:30 +000070 { name: "dcr03s16", node: "dcr03s16.hswaw.net" },
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +020071 ],
72 // Host path on SSD.
73 hostPath: "/var/db/crdb-waw1",
Serge Bazanski509ab6e2020-07-30 22:43:20 +020074 extraDNS: [
75 "crdb-waw1.hswaw.net",
76 ],
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +020077 },
Serge Bazanskibdd403c2021-10-28 23:37:38 +000078 initJob:: null,
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +020079 },
80 clients: {
81 cccampix: k0.cockroach.waw2.Client("cccampix"),
82 cccampixDev: k0.cockroach.waw2.Client("cccampix-dev"),
83 buglessDev: k0.cockroach.waw2.Client("bugless-dev"),
84 sso: k0.cockroach.waw2.Client("sso"),
Serge Bazanski509ab6e2020-07-30 22:43:20 +020085 herpDev: k0.cockroach.waw2.Client("herp-dev"),
Patryk Jakuszewf3153882021-01-23 15:38:50 +010086 gitea: k0.cockroach.waw2.Client("gitea"),
Piotr Dobrowolskif4a6a562021-02-01 21:32:25 +010087 issues: k0.cockroach.waw2.Client("issues"),
Serge Bazanskibf266c62021-03-17 21:48:58 +000088 dns: k0.cockroach.waw2.Client("dns"),
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +020089 },
90 },
91
92 ceph: {
93 // waw1 cluster - dead as of 2019/08/06, data corruption
Serge Bazanski61f978a2021-01-22 16:26:07 +010094 // waw2 cluster - dead as of 2021/01/22, torn down (horrible M610 RAID controllers are horrible)
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +020095
Serge Bazanski464fb042021-09-11 20:24:27 +000096 // waw3: 6TB SAS 3.5" HDDs, internal Rook cluster.
97 //
98 // Suffers from rook going apeshit and nuking all mons if enough of
99 // a control plane is up for rook to run but if nodes are
100 // unavailable to the point of it deciding that no mon exists and
101 // it should create some new ones, fully nuking the monmap and
102 // making recovery a pain.
103 //
104 // Supposedly new versions of Rook slowly fix these issues, but q3k
105 // doesn't personally trust this codebase anymore. He'd rather
106 // manage the actual Ceph cluster myself, we don't need all of this
107 // magic.
108 //
109 // See: b.hswaw.net/6
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +0200110 waw3: rook.Cluster(k0.cluster.rook, "ceph-waw3") {
111 spec: {
112 mon: {
Serge Bazanski16842112022-11-17 19:30:05 +0000113 count: 3,
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +0200114 allowMultiplePerNode: false,
115 },
Serge Bazanski793ca1b2021-03-07 00:07:19 +0000116 resources: {
117 osd: {
118 requests: {
Serge Bazanski64de7af2021-03-17 21:47:29 +0000119 cpu: "2",
120 memory: "6G",
Serge Bazanski793ca1b2021-03-07 00:07:19 +0000121 },
122 limits: {
Serge Bazanski64de7af2021-03-17 21:47:29 +0000123 cpu: "2",
124 memory: "8G",
Serge Bazanski793ca1b2021-03-07 00:07:19 +0000125 },
126 },
127
128 },
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +0200129 storage: {
130 useAllNodes: false,
131 useAllDevices: false,
132 config: {
133 databaseSizeMB: "1024",
134 journalSizeMB: "1024",
135 },
Serge Bazanski464fb042021-09-11 20:24:27 +0000136
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +0200137 nodes: [
138 {
139 name: "dcr01s22.hswaw.net",
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +0200140 devices: [
Serge Bazanski464fb042021-09-11 20:24:27 +0000141 { name: "/dev/disk/by-id/wwn-0x" + id }
142 for id in [
Serge Bazanski712a5dc2023-02-28 01:15:40 +0000143 "5000c5008508c433", # ST6000NM0034 Z4D40QZR0000R629ME1B
144 "5000c500850989cf", # ST6000NM0034 Z4D40JRL0000R63008A2
145 "5000c5008508baf7", # ST6000NM0034 Z4D40M380000R630V00M
146 "5000c5008508f843", # ST6000NM0034 Z4D40LGP0000R630UVTD
147 "5000c500850312cb", # ST6000NM0034 Z4D3ZAAX0000R629NW31
148 "5000c500850293e3", # ST6000NM0034 Z4D3Z5TD0000R629MF7P
149 "5000c5008508e3ef", # ST6000NM0034 Z4D40LM50000R630V0W3
150 "5000c5008508e23f", # ST6000NM0034 Z4D40QMX0000R629MD3C
Serge Bazanski464fb042021-09-11 20:24:27 +0000151 ]
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +0200152 ],
153 },
154 {
155 name: "dcr01s24.hswaw.net",
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +0200156 devices: [
Serge Bazanski464fb042021-09-11 20:24:27 +0000157 { name: "/dev/disk/by-id/wwn-0x" + id }
158 for id in [
Serge Bazanski7572f072023-03-10 20:54:35 +0100159 "5000c5008508c9ef", # ST6000NM0034 Z4D40LY40000R630UZCE
160 "5000c5008508df33", # ST6000NM0034 Z4D40QQ00000R629MB25
161 "5000c5008508dd3b", # ST6000NM0034 Z4D40QQJ0000R630RBY6
162 "5000c5008509199b", # ST6000NM0034 Z4D40QG10000R630V0X9
163 "5000c5008508ee03", # ST6000NM0034 Z4D40LHH0000R630UYP0
164 "5000c50085046abf", # ST6000NM0034 Z4D3ZF1B0000R629NV9P
165 "5000c5008502929b", # ST6000NM0034 Z4D3Z5WG0000R629MF14
Serge Bazanski464fb042021-09-11 20:24:27 +0000166 ]
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +0200167 ],
168 },
Serge Bazanski18c27ae2023-10-13 13:44:18 +0200169 {
170 name: "dcr03s16.hswaw.net",
171 devices: [
172 { name: "/dev/disk/by-id/wwn-0x" + id }
173 for id in [
174 "5000c5008508fb73", # ST6000NM0034 Z4D40LEF0000R630UX98
175 "5000c5008508c3a7", # ST6000NM0034 Z4D40LZV0000R630UY91
176 "5000c5008508d7bf", # ST6000NM0034 Z4D40LPT0000R629NXBF
177 "5000c5008502952f", # ST6000NM0034 Z4D3Z5RA0000R628P45F
178 "5000c5008502aa4b", # ST6000NM0034 Z4D3Z5A00000R630RU2T
179 "5000c5008508d677", # ST6000NM0034 Z4D40LQH0000R630QRAS
180 ]
181 ],
182 },
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +0200183 ],
184 },
185 benji:: {
186 metadataStorageClass: "waw-hdd-redundant-3",
187 encryptionPassword: std.split((importstr "../secrets/plain/k0-benji-encryption-password"), '\n')[0],
188 pools: [
189 "waw-hdd-redundant-3",
190 "waw-hdd-redundant-3-metadata",
191 "waw-hdd-yolo-3",
192 ],
193 s3Configuration: {
194 awsAccessKeyId: "RPYZIROFXNLQVU2WJ4R3",
195 awsSecretAccessKey: std.split((importstr "../secrets/plain/k0-benji-secret-access-key"), '\n')[0],
196 bucketName: "benji-k0-backups-waw3",
197 endpointUrl: "https://s3.eu-central-1.wasabisys.com/",
198 },
199 }
200 },
201 },
202 waw3Pools: {
203 // redundant block storage
204 blockRedundant: rook.ECBlockPool(k0.ceph.waw3, "waw-hdd-redundant-3") {
205 metadataReplicas: 2,
206 spec: {
207 failureDomain: "host",
208 replicated: {
209 size: 2,
210 },
211 },
212 },
Serge Bazanski242ec582020-09-20 15:36:11 +0000213 // q3k's personal pool, used externally from k8s.
214 q3kRedundant: rook.ECBlockPool(k0.ceph.waw3, "waw-hdd-redundant-q3k-3") {
215 metadataReplicas: 2,
216 spec: {
217 failureDomain: "host",
218 replicated: {
219 size: 2,
220 },
221 },
222 },
Serge Bazanski38f72fe2021-09-13 23:43:47 +0000223
224 object: {
225 local poolSpec = {
226 failureDomain: "host",
227 replicated: { size: 2 },
228 },
229
230 realm: rook.S3ObjectRealm(k0.ceph.waw3, "hscloud"),
231 zonegroup: rook.S3ObjectZoneGroup(self.realm, "eu"),
232 // This is serving at object.ceph-waw3.hswaw.net, but
233 // internally to Ceph it is known as
234 // waw-hdd-redundant-3-object (name of radosgw zone).
235 store: rook.S3ObjectStore(self.zonegroup, "waw-hdd-redundant-3-object") {
236 cfg+: {
237 // Override so that this radosgw serves on
238 // object.ceph-{waw3,eu}.hswaw.net instead of
239 // ceph-{waw-hdd-redundant-3-object,eu}.
240 domainParts: [
241 "waw3", "eu",
242 ],
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +0200243 },
Serge Bazanski38f72fe2021-09-13 23:43:47 +0000244 spec: {
245 metadataPool: poolSpec,
246 dataPool: poolSpec,
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +0200247 },
248 },
249 },
250 },
251
252 // Clients for S3/radosgw storage.
253 clients: {
Piotr Dobrowolskiba816552023-10-07 20:14:51 +0200254 local ObjectStoreUser(name) = kube.CephObjectStoreUser(name) {
255 metadata+: {
256 namespace: "ceph-waw3",
257 },
258 spec: {
259 store: "waw-hdd-redundant-3-object",
260 displayName: name,
261 },
262 },
263
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +0200264 # Used for owncloud.hackerspace.pl, which for now lives on boston-packets.hackerspace.pl.
Piotr Dobrowolskiba816552023-10-07 20:14:51 +0200265 nextcloudWaw3: ObjectStoreUser("nextcloud"),
Piotr Dobrowolski3b8a43f2021-02-01 21:19:48 +0100266 # issues.hackerspace.pl (redmine) attachments bucket
Piotr Dobrowolskiba816552023-10-07 20:14:51 +0200267 issuesWaw3: ObjectStoreUser("issues"),
Piotr Dobrowolskie839f952021-09-14 22:21:22 +0200268 # matrix.hackerspace.pl media storage bucket
Piotr Dobrowolskiba816552023-10-07 20:14:51 +0200269 matrixWaw3: ObjectStoreUser("matrix"),
Bartosz Stebel54a34b22022-03-05 23:20:56 +0100270 # tape staging temporary storage
Piotr Dobrowolskiba816552023-10-07 20:14:51 +0200271 tapeStaging: ObjectStoreUser("tape-staging"),
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +0200272
273 # nuke@hackerspace.pl's personal storage.
Piotr Dobrowolskiba816552023-10-07 20:14:51 +0200274 nukePersonalWaw3: ObjectStoreUser("nuke-personal"),
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +0200275
276 # patryk@hackerspace.pl's ArmA3 mod bucket.
Piotr Dobrowolskiba816552023-10-07 20:14:51 +0200277 cz2ArmaModsWaw3: ObjectStoreUser("cz2-arma3mods"),
278
Bartosz Stebel0156ab22023-02-20 21:33:33 +0100279 # implr's personal user
Piotr Dobrowolskiba816552023-10-07 20:14:51 +0200280 implrSparkWaw3: ObjectStoreUser("implr"),
281
Sergiusz Bazanskib1aadd82020-06-24 19:06:17 +0200282 # q3k's personal user
Piotr Dobrowolskiba816552023-10-07 20:14:51 +0200283 q3kWaw3: ObjectStoreUser("q3k"),
284
Serge Bazanskibfe9bb02020-10-27 20:50:50 +0100285 # woju's personal user
Piotr Dobrowolskiba816552023-10-07 20:14:51 +0200286 wojuWaw3: ObjectStoreUser("woju"),
287
Patryk Jakuszew34668a52020-11-28 13:45:25 +0100288 # cz3's (patryk@hackerspace.pl) personal user
Piotr Dobrowolskiba816552023-10-07 20:14:51 +0200289 cz3Waw3: ObjectStoreUser("cz3"),
290
Piotr Dobrowolskie839f952021-09-14 22:21:22 +0200291 # informatic's personal user
Piotr Dobrowolskiba816552023-10-07 20:14:51 +0200292 informaticWaw3: ObjectStoreUser("informatic"),
293
Serge Bazanski16842112022-11-17 19:30:05 +0000294 # mastodon qa and prod
295 mastodonWaw3: {
Piotr Dobrowolskiba816552023-10-07 20:14:51 +0200296 qa: ObjectStoreUser("mastodon-qa"),
297 prod: ObjectStoreUser("mastodon-prod"),
Serge Bazanski16842112022-11-17 19:30:05 +0000298 },
Piotr Dobrowolskiba816552023-10-07 20:14:51 +0200299
300 codehostingWaw3: ObjectStoreUser("codehosting"),
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +0200301 },
302 },
303
304
305 # These are policies allowing for Insecure pods in some namespaces.
306 # A lot of them are spurious and come from the fact that we deployed
307 # these namespaces before we deployed the draconian PodSecurityPolicy
308 # we have now. This should be fixed by setting up some more granular
309 # policies, or fixing the workloads to not need some of the permission
310 # bits they use, whatever those might be.
311 # TODO(q3k): fix this?
312 unnecessarilyInsecureNamespaces: [
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +0200313 policies.AllowNamespaceInsecure("ceph-waw3"),
314 policies.AllowNamespaceInsecure("matrix"),
315 policies.AllowNamespaceInsecure("registry"),
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +0200316 # TODO(implr): restricted policy with CAP_NET_ADMIN and tuntap, but no full root
317 policies.AllowNamespaceInsecure("implr-vpn"),
Radek Pietruszewski934f7d32023-11-03 19:02:51 +0100318 // For SourceGraph's tini container mess.
319 policies.AllowNamespaceMostlySecure("sourcegraph"),
radex7a4c27d2023-11-24 13:20:10 +0100320 // Needed because the documentserver runs its own supervisor, and:
321 // - rabbitmq wants to mkdir in /run, which starts out with the wrong permissions
322 // - nginx wants to bind to port 80
323 policies.AllowNamespaceInsecure("onlyoffice-prod"),
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +0200324 ],
Serge Bazanski3c5d8362021-02-06 17:27:02 +0000325
326 # Admission controller that permits non-privileged users to manage
327 # their namespaces without danger of hijacking important URLs.
328 admitomatic: admitomatic.Environment {
329 cfg+: {
330 proto: {
331 // Domains allowed in given namespaces. If a domain exists
332 // anywhere, ingresses will only be permitted to be created
333 // within namespaces in which it appears here. This works
334 // the same way for wildcards, if a wildcard exists in this
335 // list it blocks all unauthorized uses of that domain
336 // elsewhere.
337 //
338 // See //cluster/admitomatic for more information.
339 //
340 // Or, tl;dr:
341 //
342 // If you do a wildcard CNAME onto the k0 ingress, you
343 // should explicitly state *.your.name.com here.
344 //
345 // If you just want to protect your host from being
346 // hijacked by other cluster users, you should also state
347 // it here (either as a wildcard, or unary domains).
348 allow_domain: [
radex03365c62023-11-24 10:25:52 +0100349 // app
radexc2c66bf2023-08-17 14:28:32 +0200350 { namespace: "inventory", dns: "inventory.hackerspace.pl" },
radex03365c62023-11-24 10:25:52 +0100351 { namespace: "mastodon-hackerspace-qa", dns: "social-qa-2.hackerspace.pl" },
352 { namespace: "mastodon-hackerspace-prod", dns: "social.hackerspace.pl" },
Serge Bazanski3c5d8362021-02-06 17:27:02 +0000353 { namespace: "matrix", dns: "matrix.hackerspace.pl" },
354 { namespace: "onlyoffice-prod", dns: "office.hackerspace.pl" },
radex03365c62023-11-24 10:25:52 +0100355 { namespace: "walne", dns: "walne.hackerspace.pl" },
356
357 // bgpwtf
358 { namespace: "internet", dns: "internet.hackerspace.pl" },
359 { namespace: "speedtest", dns: "speedtest.hackerspace.pl" },
360
361 // devtools
radex9da9df62023-11-24 10:41:38 +0100362 { namespace: "devtools-prod", dns: "hackdoc.hackerspace.pl" }, // TODO: remove this
363 { namespace: "devtools-prod", dns: "cs.hackerspace.pl" }, // TODO: remove this
radex03365c62023-11-24 10:25:52 +0100364 { namespace: "gitea-prod", dns: "gitea.hackerspace.pl" },
365 { namespace: "codehosting-prod", dns: "git.hackerspace.pl" },
366 { namespace: "codehosting-prod", dns: "code.hackerspace.pl" },
367 { namespace: "gerrit", dns: "gerrit.hackerspace.pl" },
368 { namespace: "gerrit-qa", dns: "gerrit-qa.hackerspace.pl" },
radex9da9df62023-11-24 10:41:38 +0100369 { namespace: "hackdoc", dns: "hackdoc.hackerspace.pl" },
Serge Bazanski3c5d8362021-02-06 17:27:02 +0000370 { namespace: "redmine", dns: "issues.hackerspace.pl" },
Serge Bazanski877cf0a2021-02-08 00:34:34 +0100371 { namespace: "redmine", dns: "b.hackerspace.pl" },
372 { namespace: "redmine", dns: "b.hswaw.net" },
373 { namespace: "redmine", dns: "xn--137h.hackerspace.pl" },
374 { namespace: "redmine", dns: "xn--137h.hswaw.net" },
radex03365c62023-11-24 10:25:52 +0100375 { namespace: "sourcegraph", dns: "cs.hackerspace.pl" },
376
377 // hswaw
378 { namespace: "hswaw-prod", dns: "*.hackerspace.pl" },
379 { namespace: "hswaw-prod", dns: "*.hswaw.net" },
radex9da9df62023-11-24 10:41:38 +0100380 { namespace: "hswaw-prod", dns: "*.cebula.camp" }, // TODO: remove this
radex03365c62023-11-24 10:25:52 +0100381 { namespace: "capacifier", dns: "capacifier.hackerspace.pl" },
radex9da9df62023-11-24 10:41:38 +0100382 { namespace: "cebulacamp", dns: "cebula.camp" },
radex03365c62023-11-24 10:25:52 +0100383 { namespace: "engelsystem-prod", dns: "engelsystem.hackerspace.pl" },
radex9da9df62023-11-24 10:41:38 +0100384 { namespace: "invoicer", dns: "invoicer.hackerspace.pl" },
radex03365c62023-11-24 10:25:52 +0100385 { namespace: "ldapweb", dns: "profile.hackerspace.pl" },
386 { namespace: "paperless", dns: "paperless.hackerspace.pl" },
radex9da9df62023-11-24 10:41:38 +0100387 { namespace: "pretalx", dns: "cfp.cebula.camp" },
radex03365c62023-11-24 10:25:52 +0100388 { namespace: "site", dns: "new.hackerspace.pl" },
radex9da9df62023-11-24 10:41:38 +0100389 { namespace: "teleimg", dns: "teleimg.hswaw.net" },
radex03365c62023-11-24 10:25:52 +0100390
391 // ops
Serge Bazanski3c5d8362021-02-06 17:27:02 +0000392 { namespace: "sso", dns: "sso.hackerspace.pl" },
393
radexe36beba2023-10-11 00:41:48 +0200394 // auto-namespaced domains, i.e:
395 // USER.hscloud.ovh is allowed for personal-USER namespace
396 // *.USER.hscloud.ovh is allowed for personal-USER namespace
397 { namespace: "personal-$2", dns: "(.*\\.)?([^.]+)\\.hscloud\\.ovh", regexp: true },
398
399 // cluster infra
Serge Bazanski3c5d8362021-02-06 17:27:02 +0000400 { namespace: "ceph-waw3", dns: "ceph-waw3.hswaw.net" },
401 { namespace: "ceph-waw3", dns: "object.ceph-waw3.hswaw.net" },
Serge Bazanski38f72fe2021-09-13 23:43:47 +0000402 { namespace: "ceph-waw3", dns: "object.ceph-eu.hswaw.net" },
Serge Bazanski3c5d8362021-02-06 17:27:02 +0000403 { namespace: "monitoring-global-k0", dns: "*.hswaw.net" },
404 { namespace: "registry", dns: "*.hswaw.net" },
405
radexe36beba2023-10-11 00:41:48 +0200406 // personal namespaces
Serge Bazanski3c5d8362021-02-06 17:27:02 +0000407 { namespace: "q3k", dns: "*.q3k.org" },
408 { namespace: "personal-q3k", dns: "*.q3k.org" },
radexe36beba2023-10-11 00:41:48 +0200409 { namespace: "personal-radex", dns: "hs.radex.io" },
410 { namespace: "personal-radex", dns: "*.hs.radex.io" },
Serge Bazanski3c5d8362021-02-06 17:27:02 +0000411 ],
Serge Bazanskic1f37252023-06-19 21:56:29 +0000412
413 anything_goes_namespace: [
414 // sourcegraph ingress wants a config snippet to set a header.
415 "devtools-prod",
Radek Pietruszewski934f7d32023-11-03 19:02:51 +0100416 "sourcegraph",
Serge Bazanskic1f37252023-06-19 21:56:29 +0000417 ],
Serge Bazanski3c5d8362021-02-06 17:27:02 +0000418 },
419 },
420 },
radex0776a792023-10-10 00:02:29 +0200421
422 // Configuration of RoleBindings
423 admins: admins.NamespaceAdmins {
424 // Cluster staff have full access to all namespaces
425 // To give non-staff users admin access scoped to a given namespace,
426 // add them to the list below.
427 // (system:admin-namespace role is given to <user>@hackerspace.pl)
428 namespaces:: {
radex03365c62023-11-24 10:25:52 +0100429 // app
radex0776a792023-10-10 00:02:29 +0200430 "inventory": [
431 "radex",
432 "palid",
433 ],
radex0776a792023-10-10 00:02:29 +0200434 "matrix-0x3c": [
435 "not7cd",
436 ],
radex03365c62023-11-24 10:25:52 +0100437 "walne": [
438 "radex",
439 "palid",
440 ],
441
442 // bgpwtf
443 "internet": [
radex0776a792023-10-10 00:02:29 +0200444 "radex",
445 ],
radex03365c62023-11-24 10:25:52 +0100446 "speedtest": [
radex0776a792023-10-10 00:02:29 +0200447 "radex",
448 ],
radex03365c62023-11-24 10:25:52 +0100449
450 // devtools
Radek Pietruszewskia6592b82023-10-30 20:27:25 +0100451 "devtools-prod": [
452 "radex",
453 ],
454 "depotview": [
455 "radex",
456 ],
457 "hackdoc": [
458 "radex",
459 ],
460 "sourcegraph": [
461 "radex",
462 ],
radex03365c62023-11-24 10:25:52 +0100463
464 // games
465 "valheim": [
466 "patryk",
467 "palid",
Radek Pietruszewskia6592b82023-10-30 20:27:25 +0100468 ],
radex03365c62023-11-24 10:25:52 +0100469
470 // hswaw
471 "hswaw-prod": [
472 "ar",
Radek Pietruszewskia6592b82023-10-30 20:27:25 +0100473 "radex",
474 ],
475 "cebulacamp": [
476 "radex",
477 ],
radex9da9df62023-11-24 10:41:38 +0100478 "invoicer": [
479 "arsenicum",
480 "radex",
481 ],
radex03365c62023-11-24 10:25:52 +0100482 "ldapweb": [
Radek Pietruszewskia6592b82023-10-30 20:27:25 +0100483 "radex",
484 ],
radex9da9df62023-11-24 10:41:38 +0100485 "paperless": [
486 "radex",
487 ],
Radek Pietruszewskia6592b82023-10-30 20:27:25 +0100488 "pretalx": [
489 "radex",
490 ],
radex03365c62023-11-24 10:25:52 +0100491 "site": [
492 "ar",
493 "radex",
494 ],
495 "teleimg": [
496 "radex",
497 ],
radex0776a792023-10-10 00:02:29 +0200498 }
499 }
Sergiusz Bazanskidbfa9882020-06-06 01:21:45 +0200500 },
501}