*: Simplify kube.PersistentVolumeClaims

Change-Id: I0a3e44de9f1c4db146fd1e493741f5fe381da3ae
Reviewed-on: https://gerrit.hackerspace.pl/c/hscloud/+/1768
Reviewed-by: q3k <q3k@hackerspace.pl>
master
radex 2023-11-03 17:30:10 +01:00 committed by radex
parent 527386ab0c
commit f28cd62c0e
28 changed files with 85 additions and 298 deletions

View File

@ -65,15 +65,8 @@ local postgres = import '../../kube/postgres_v.libsonnet';
},
media: top.ns.Contain(kube.PersistentVolumeClaim(cfg.name)) {
spec+: {
storageClassName: cfg.storageClassName,
accessModes: ['ReadWriteOnce'],
resources: {
requests: {
storage: '20Gi',
},
},
},
storage: '20Gi',
storageClass: cfg.storageClassName,
},
psql: postgres {

View File

@ -49,15 +49,8 @@ local kube = import "../../../kube/kube.libsonnet";
dataVolume: kube.PersistentVolumeClaim("appservice-irc-%s" % [name]) {
metadata+: cfg.metadata,
spec+: {
storageClassName: cfg.storageClassName,
accessModes: [ "ReadWriteOnce" ],
resources: {
requests: {
storage: "10Gi",
},
},
},
storage: "10Gi",
storageClass: cfg.storageClassName,
},
bootstrapJob: if cfg.bootstrapJob then (kube.Job("appservice-irc-%s-bootstrap" % [name]) {

View File

@ -58,15 +58,8 @@ local kube = import "../../../kube/kube.libsonnet";
dataVolume: kube.PersistentVolumeClaim("appservice-telegram-%s" % [name]) {
metadata+: cfg.metadata,
spec+: {
storageClassName: cfg.storageClassName,
accessModes: [ "ReadWriteOnce" ],
resources: {
requests: {
storage: "10Gi",
},
},
},
storage: "10Gi",
storageClass: cfg.storageClassName,
},
bootstrapJob: if cfg.bootstrapJob then (kube.Job("appservice-telegram-%s-bootstrap" % [name]) {

View File

@ -60,14 +60,8 @@ local kube = import "../../../kube/kube.libsonnet";
},
dataVolume: app.ns.Contain(kube.PersistentVolumeClaim("coturn-data")) {
spec+: {
storageClassName: cfg.storageClassName,
resources: {
requests: {
storage: "10Gi",
},
},
},
storage: "10Gi",
storageClass: cfg.storageClassName,
},
deployment: app.ns.Contain(kube.Deployment("coturn")) {

View File

@ -97,15 +97,8 @@ local postgres = import "../../../kube/postgres.libsonnet";
dataVolume: kube.PersistentVolumeClaim("synapse-data-waw3") {
metadata+: app.metadata("synapse-data"),
spec+: {
storageClassName: cfg.storageClassName,
accessModes: [ "ReadWriteOnce" ],
resources: {
requests: {
storage: "50Gi",
},
},
},
storage: "50Gi",
storageClass: cfg.storageClassName,
},
// homeserver.yaml that will be used to run synapse (in synapseConfigMap).
@ -266,15 +259,15 @@ local postgres = import "../../../kube/postgres.libsonnet";
// Standard nginx.conf, made to work when running as unprivileged user.
"nginx.conf": |||
worker_processes auto;
error_log /tmp/nginx_error.log warn;
pid /tmp/nginx.pid;
events {
worker_connections 1024;
}
http {
client_body_temp_path /tmp/nginx_client_temp;
proxy_temp_path /tmp/nginx_proxy_temp;
@ -290,16 +283,16 @@ local postgres = import "../../../kube/postgres.libsonnet";
access_log /tmp/nginx_access.log main;
sendfile on;
keepalive_timeout 65;
server {
listen 8080;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;

View File

@ -31,15 +31,8 @@ local kube = import "../../../kube/kube.libsonnet";
appservices:: error "appservices need to be provided",
dataVolume: app.ns.Contain(kube.PersistentVolumeClaim("synapse-data-waw3")) {
spec+: {
storageClassName: cfg.storageClassName,
accessModes: [ "ReadWriteOnce" ],
resources: {
requests: {
storage: "50Gi",
},
},
},
storage: "50Gi",
storageClass: cfg.storageClassName,
},
// homeserver.yaml that will be used to run synapse (in configMap).

View File

@ -19,15 +19,8 @@ local policies = import "../../kube/policies.libsonnet";
ns: kube.Namespace(cfg.namespace),
pvc: oo.ns.Contain(kube.PersistentVolumeClaim("documentserver")) {
spec+: {
storageClassName: cfg.storageClassName,
accessModes: [ "ReadWriteOnce" ],
resources: {
requests: {
storage: "10Gi",
},
},
},
storage: "10Gi",
storageClass: cfg.storageClassName,
},
deploy: oo.ns.Contain(kube.Deployment("documentserver")) {

View File

@ -82,15 +82,8 @@ local kube = import "../../../kube/hscloud.libsonnet";
],
cache: kube.PersistentVolumeClaim(ix.name("octorpki")) {
metadata+: ix.metadata("octorpki"),
spec+: {
storageClassName: cfg.octorpki.storageClassName,
accessModes: [ "ReadWriteOnce" ],
resources: {
requests: {
storage: "2Gi",
},
},
},
storage: "2Gi",
storageClass: cfg.octorpki.storageClassName,
},
deployment: kube.Deployment(ix.name("octorpki")) {
metadata+: ix.metadata("octorpki"),
@ -350,7 +343,7 @@ local kube = import "../../../kube/hscloud.libsonnet";
servertime = 2006-01-02T15:04:05Z
servertime_short = 2006-01-02 15:04:05
servertime_ext = 2006-01-02 15:04:05
[source.rs1-camp-v6]
name = rs1.camp.bgp.wtf (IPv6)
group = Camp
@ -362,7 +355,7 @@ local kube = import "../../../kube/hscloud.libsonnet";
servertime = 2006-01-02T15:04:05Z
servertime_short = 2006-01-02 15:04:05
servertime_ext = 2006-01-02 15:04:05
[source.rs2-camp-v4]
name = rs2.camp.bgp.wtf (IPv4)
group = Camp
@ -374,7 +367,7 @@ local kube = import "../../../kube/hscloud.libsonnet";
servertime = 2006-01-02T15:04:05Z
servertime_short = 2006-01-02 15:04:05
servertime_ext = 2006-01-02 15:04:05
[source.rs2-camp-v6]
name = rs2.camp.bgp.wtf (IPv6)
group = Camp

View File

@ -112,15 +112,8 @@ local kube = import "../../../kube/kube.libsonnet";
authVolumeClaim: kube.PersistentVolumeClaim("auth-token-storage-3") {
metadata+: env.metadata("auth-token-storage-3"),
spec+: {
storageClassName: cfg.storageClassName,
accessModes: [ "ReadWriteOnce" ],
resources: {
requests: {
storage: "1Gi",
},
},
},
storage: "1Gi",
storageClass: cfg.storageClassName,
},
authConfig: kube.ConfigMap("auth-config") {

View File

@ -835,15 +835,8 @@ local oa = kube.OpenAPI;
# is known: https://benji-backup.me/restore.html#restoring-without-a-database
data: kube.PersistentVolumeClaim(cluster.name("benji-data")) {
metadata+: cluster.metadata,
spec+: {
storageClassName: cluster.spec.benji.metadataStorageClass,
accessModes: [ "ReadWriteOnce" ],
resources: {
requests: {
storage: "1Gi",
},
},
},
storage: "1Gi",
storageClass: cluster.spec.benji.metadataStorageClass,
},
# Extra scripts.
@ -982,7 +975,7 @@ local oa = kube.OpenAPI;
benji-command enforce latest3,hours48,days7,months12
benji-command cleanup
bash /usr/local/extrabins/metabackup.sh
|||
|||
],
},
},

View File

@ -141,14 +141,9 @@ local kube = import "../../../kube/hscloud.libsonnet";
volumes: {
[name]: kube.PersistentVolumeClaim(gerrit.name(name)) {
metadata+: gerrit.metadata("storage"),
storage: cfg.storageSize[name],
spec+: {
storageClassName: cfg.storageClassName,
accessModes: ["ReadWriteOnce"],
resources: {
requests: {
storage: cfg.storageSize[name],
},
},
},
}
for name in ["etc", "git", "index", "cache", "db"]

View File

@ -86,27 +86,13 @@ local kube = import "../../kube/kube.libsonnet";
pvc: {
data: kube.PersistentVolumeClaim(sourcegraph.makeName("data")) {
metadata+: sourcegraph.metadata,
spec+: {
storageClassName: cfg.storageClassName,
accessModes: [ "ReadWriteOnce" ],
resources: {
requests: {
storage: "40Gi",
},
},
},
storage: "40Gi",
storageClass: cfg.storageClassName,
},
etc: kube.PersistentVolumeClaim(sourcegraph.makeName("etc")) {
metadata+: sourcegraph.metadata,
spec+: {
storageClassName: cfg.storageClassName,
accessModes: [ "ReadWriteOnce" ],
resources: {
requests: {
storage: "4Gi",
},
},
},
storage: "4Gi",
storageClass: cfg.storageClassName,
},
},
}

View File

@ -83,28 +83,14 @@ local proxy = import "proxy.libsonnet";
volumeClaimMods: kube.PersistentVolumeClaim(factorio.makeName("factorio-mods")) {
metadata+: factorio.metadata,
spec+: {
storageClassName: cfg.storageClassName,
accessModes: [ "ReadWriteOnce" ],
resources: {
requests: {
storage: "1Gi",
},
},
},
storage: "1Gi",
storageClass: cfg.storageClassName,
},
volumeClaimData: kube.PersistentVolumeClaim(factorio.makeName("factorio")) {
metadata+: factorio.metadata,
spec+: {
storageClassName: cfg.storageClassName,
accessModes: [ "ReadWriteOnce" ],
resources: {
requests: {
storage: "5Gi",
},
},
},
storage: "5Gi",
storageClass: cfg.storageClassName,
},
configMap: kube.ConfigMap(factorio.makeName("config")) {

View File

@ -13,15 +13,8 @@ local kube = import "../../../kube/kube.libsonnet";
metadata+: {
namespace: cfg.namespace,
},
spec+: {
storageClassName: "waw-hdd-redundant-3",
accessModes: [ "ReadWriteOnce" ],
resources: {
requests: {
storage: "32Gi",
},
},
},
storage: "32Gi",
storageClass: "waw-hdd-redundant-3",
},
deploy: kube.Deployment("proxy") {
metadata+: {

View File

@ -20,31 +20,16 @@ local kube = import "../../kube/kube.libsonnet";
local game = self,
pvcs: {
backups: ns.Contain(kube.PersistentVolumeClaim(named("backups"))) {
spec+: {
storageClassName: cfg.storageClassName,
accessModes: ["ReadWriteOnce"],
resources: {
requests: { storage: "10Gi" },
},
},
storage: "10Gi",
storageClass: cfg.storageClassName,
},
saves: ns.Contain(kube.PersistentVolumeClaim(named("saves"))) {
spec+: {
storageClassName: cfg.storageClassName,
accessModes: ["ReadWriteOnce"],
resources: {
requests: { storage: "10Gi" },
},
},
storage: "10Gi",
storageClass: cfg.storageClassName,
},
server: ns.Contain(kube.PersistentVolumeClaim(named("server"))) {
spec+: {
storageClassName: cfg.storageClassName,
accessModes: ["ReadWriteOnce"],
resources: {
requests: { storage: "10Gi" },
},
},
storage: "10Gi",
storageClass: cfg.storageClassName,
},
},
svc: ns.Contain(kube.Service(named("external"))) {

View File

@ -231,15 +231,8 @@ local redis = import "../../kube/redis.libsonnet";
volumeData: kube.PersistentVolumeClaim(pretalx.makeName("-data")) {
metadata+: pretalx.metadata,
spec+: {
storageClassName: cfg.storageClassName,
accessModes: ["ReadWriteOnce"],
resources: {
requests: {
storage: "5Gi",
},
},
},
storage: "5Gi",
storageClass: cfg.storageClassName,
},
s3: kube.CephObjectStoreUser(pretalx.makeNameGlobal("-s3")) {

View File

@ -59,15 +59,8 @@ local redis = import "../../kube/redis.libsonnet";
},
dataVolume: app.ns.Contain(kube.PersistentVolumeClaim("paperless-data")) {
spec+: {
storageClassName: cfg.storageClassName,
accessModes: [ "ReadWriteOnce" ],
resources: {
requests: {
storage: "100Gi",
},
},
},
storage: "100Gi",
storageClass: cfg.storageClassName,
},
deploy: app.ns.Contain(kube.Deployment("paperless")) {

View File

@ -32,6 +32,11 @@ kube {
},
},
// Remove deprecated `volume.beta.kubernetes.io/storage-class` annotation
PersistentVolumeClaim(name): kube.PersistentVolumeClaim(name) {
metadata+: { annotations: {} },
},
CephObjectStoreUser(name): kube._Object("ceph.rook.io/v1", "CephObjectStoreUser", name) {
local user = self,
spec: error "spec must be defined",

View File

@ -68,15 +68,8 @@ local kube = import "kube.libsonnet";
volumeClaim: kube.PersistentVolumeClaim(postgres.makeName("postgres")) {
metadata+: postgres.metadata,
spec+: {
storageClassName: cfg.storageClassName,
accessModes: [ "ReadWriteOnce" ],
resources: {
requests: {
storage: cfg.storageSize,
},
},
},
storage: cfg.storageSize,
storageClass: cfg.storageClassName,
},
deployment: kube.Deployment(postgres.makeName("postgres")) {
metadata+: postgres.metadata,

View File

@ -47,15 +47,8 @@ local kube = import "kube.libsonnet";
volumeClaim: kube.PersistentVolumeClaim(postgres.makeName("postgres")) {
metadata+: postgres.metadata,
spec+: {
storageClassName: cfg.storageClassName,
accessModes: [ "ReadWriteOnce" ],
resources: {
requests: {
storage: cfg.storageSize,
},
},
},
storage: cfg.storageSize,
storageClass: cfg.storageClassName,
},
deployment: kube.Deployment(postgres.makeName("postgres")) {
metadata+: postgres.metadata,

View File

@ -44,15 +44,8 @@ local kube = import "kube.libsonnet";
volumeClaim: kube.PersistentVolumeClaim(redis.makeName("redis")) {
metadata+: redis.metadata,
spec+: {
storageClassName: cfg.storageClassName,
accessModes: [ "ReadWriteOnce" ],
resources: {
requests: {
storage: "5Gi",
},
},
},
storage: "5Gi",
storageClass: cfg.storageClassName,
},
deployment: kube.Deployment(redis.makeName("redis")) {
metadata+: redis.metadata,

View File

@ -29,7 +29,7 @@ local kube = import "../../../kube/kube.libsonnet";
// {
// remote: URL of upstream
// password: password used to authenticate, in conjunction with cfg.username.
//
//
upstreams: [],
},
@ -196,7 +196,7 @@ local kube = import "../../../kube/kube.libsonnet";
// Allow to access node details for discovery.
{ apiGroups: [""], resources: ["nodes"], verbs: ["list", "watch", "get"], },
{ apiGroups: [""], resources: ["endpoints", "services", "pods"], verbs: ["list", "watch", "get"], },
// Allow to proxy to bare node HTTP to access per-node metrics endpoints.
// Allow to proxy to bare node HTTP to access per-node metrics endpoints.
{ apiGroups: [""], resources: ["nodes/proxy"], verbs: ["get"], },
],
},
@ -259,15 +259,8 @@ local kube = import "../../../kube/kube.libsonnet";
metadata+: {
namespace: cfg.namespace,
},
spec+: {
storageClassName: cfg.storageClasses.prometheus,
accessModes: ["ReadWriteOnce"],
resources: {
requests: {
storage: "16Gi",
},
},
},
storage: "16Gi",
storageClass: cfg.storageClasses.prometheus,
},
// Network Policy governing access to the prometheus server.

View File

@ -64,15 +64,8 @@ local kube = import "../../../kube/hscloud.libsonnet";
local victoria = self,
pvc: ns.Contain(kube.PersistentVolumeClaim("victoria-data")) {
spec+: {
storageClassName: cfg.storageClasses.victoria,
accessModes: ["ReadWriteOnce"],
resources: {
requests: {
storage: "64Gi",
},
},
},
storage: "64Gi",
storageClass: cfg.storageClasses.victoria,
},
authSecret: ns.Contain(kube.Secret("vmauth")) {
@ -201,14 +194,9 @@ local kube = import "../../../kube/hscloud.libsonnet";
},
pvc: ns.Contain(kube.PersistentVolumeClaim("grafana-data")) {
storage: "8Gi",
spec+: {
storageClassName: cfg.storageClasses.grafana,
accessModes: ["ReadWriteOnce"],
resources: {
requests: {
storage: "8Gi",
},
},
},
},

View File

@ -27,20 +27,13 @@ local kube = import "../../kube/kube.libsonnet";
volumeClaim: kube.PersistentVolumeClaim(name) {
metadata+: server.metadata,
spec+: {
storageClassName: cfg.storageClassName,
accessModes: [ "ReadWriteOnce" ],
resources: {
requests: {
storage: "5Gi",
},
},
},
storage: "5Gi",
storageClass: cfg.storageClassName,
},
config: kube.ConfigMap(name + "-config") {
metadata+: server.metadata,
// admins with local server as co-admin
local admins = cfg.admins + {
openrct2: "",

View File

@ -27,20 +27,13 @@ local kube = import "../../kube/kube.libsonnet";
volumeClaim: kube.PersistentVolumeClaim(name) {
metadata+: server.metadata,
spec+: {
storageClassName: cfg.storageClassName,
accessModes: [ "ReadWriteOnce" ],
resources: {
requests: {
storage: "5Gi",
},
},
},
storage: "5Gi",
storageClass: cfg.storageClassName,
},
config: kube.ConfigMap(name + "-config") {
metadata+: server.metadata,
// admins with local server as co-admin
local admins = cfg.admins + {
openrct2: "",

View File

@ -47,15 +47,8 @@ local kube = import "../../../kube/hscloud.libsonnet";
ns: kube.Namespace(cfg.namespace),
data: ns.Contain(kube.PersistentVolumeClaim(cfg.prefix + "data")) {
spec+: {
storageClassName: "waw-hdd-redundant-3",
accessModes: ["ReadWriteOnce"],
resources: {
requests: {
storage: "50Gi",
},
},
},
storage: "50Gi",
storageClass: "waw-hdd-redundant-3",
},
// Make a *DatabaseInfo string for use by acore config. These are not any real
@ -165,7 +158,7 @@ local kube = import "../../../kube/hscloud.libsonnet";
},
},
},
soapSvc: ns.Contain(kube.Service(cfg.prefix + "worldserver-soap")) {
target_pod:: wow.worldserverDeploy.spec.template,
spec+: {
@ -216,15 +209,8 @@ local kube = import "../../../kube/hscloud.libsonnet";
},
},
panelData: ns.Contain(kube.PersistentVolumeClaim(cfg.prefix + "panel-data")) {
spec+: {
storageClassName: "waw-hdd-redundant-3",
accessModes: ["ReadWriteOnce"],
resources: {
requests: {
storage: "128Mi",
},
},
},
storage: "128Mi",
storageClass: "waw-hdd-redundant-3",
},
panelDeploy: ns.Contain(kube.Deployment(cfg.prefix + "panel")) {
spec+: {
@ -245,7 +231,7 @@ local kube = import "../../../kube/hscloud.libsonnet";
"-soap_address", "http://%s" % [wow.soapSvc.host_colon_port],
"-soap_password", "$(SOAP_PASSWORD)",
"-secret", "$(SECRET)",
"-oauth_client_id", cfg.panel.oauth.clientID,
"-oauth_client_id", cfg.panel.oauth.clientID,
"-oauth_client_secret", "$(OAUTH_SECRET)",
"-oauth_redirect_url", cfg.panel.oauth.redirectURL,
"-motd", "/secret/motd.txt",

View File

@ -44,14 +44,9 @@ local kube = import "../../../kube/hscloud.libsonnet";
},
data: top.ns.Contain(kube.PersistentVolumeClaim("data")) {
storage: "1Gi",
spec+: {
storageClassName: "waw-hdd-redundant-3",
accessModes: [ "ReadWriteOnce" ],
resources: {
requests: {
storage: "1Gi",
},
},
},
},
service: top.ns.Contain(kube.Service(cfg.name)) {

View File

@ -63,15 +63,8 @@ local kube = import "../../../kube/hscloud.libsonnet";
local mysql = self,
volume: top.ns.Contain(kube.PersistentVolumeClaim("wordpress-mysql")) {
spec+: {
storageClassName: cfg.storageClassName,
accessModes: [ "ReadWriteOnce" ],
resources: {
requests: {
storage: cfg.storageSize,
},
},
},
storage: cfg.storageSize,
storageClass: cfg.storageClassName,
},
deployment: top.ns.Contain(kube.Deployment("wordpress-mysql")) {