blob: dce74b9f33f2e2685fd8afe22ee85f83a860a13d [file] [log] [blame]
radexae2a7252023-08-13 11:45:59 +02001local kube = import "../../../kube/kube.libsonnet";
2
3{
4 local top = self,
5 local cfg = self.cfg,
6
7 cfg:: {
8 name: "demo-next",
radex5365e7e2023-08-15 18:07:28 +02009 image: "registry.k0.hswaw.net/radex/next-bruh:v2",
radexae2a7252023-08-13 11:45:59 +020010 domain: "demo-next.hs.radex.io",
11 },
12
13 ns: kube.Namespace("personal-radex"),
14
15 deployment: top.ns.Contain(kube.Deployment(cfg.name)) {
16 spec+: {
radex5365e7e2023-08-15 18:07:28 +020017 replicas: 1,
radexae2a7252023-08-13 11:45:59 +020018 template+: {
19 spec+: {
radex5365e7e2023-08-15 18:07:28 +020020 volumes_: {
21 data: kube.PersistentVolumeClaimVolume(top.data),
22 },
radexae2a7252023-08-13 11:45:59 +020023 containers_: {
24 default: kube.Container("default") {
25 image: cfg.image,
26 resources: {
27 requests: { cpu: "0.01", memory: "64M" },
28 limits: { cpu: "1", memory: "256M" },
29 },
radex5365e7e2023-08-15 18:07:28 +020030 env_: {
31 DATA_PATH: "/data",
32 },
radexae2a7252023-08-13 11:45:59 +020033 ports_: {
34 http: { containerPort: 3000 },
35 },
radex5365e7e2023-08-15 18:07:28 +020036 volumeMounts_: {
37 data: { mountPath: '/data' },
38 }
radexae2a7252023-08-13 11:45:59 +020039 },
40 },
41 },
42 },
43 },
44 },
45
radex5365e7e2023-08-15 18:07:28 +020046 data: top.ns.Contain(kube.PersistentVolumeClaim("data")) {
47 spec+: {
48 storageClassName: "waw-hdd-redundant-3",
49 accessModes: [ "ReadWriteOnce" ],
50 resources: {
51 requests: {
52 storage: "1Gi",
53 },
54 },
55 },
56 },
radexae2a7252023-08-13 11:45:59 +020057 service: top.ns.Contain(kube.Service(cfg.name)) {
58 target_pod:: top.deployment.spec.template,
59 },
60
61 ingress: top.ns.Contain(kube.Ingress(cfg.name)) {
62 metadata+: {
63 annotations+: {
64 "kubernetes.io/tls-acme": "true",
65 "cert-manager.io/cluster-issuer": "letsencrypt-prod",
66 "nginx.ingress.kubernetes.io/proxy-body-size": "0",
67 },
68 },
69 spec+: {
70 tls: [ { hosts: [ cfg.domain ], secretName: cfg.name + "-tls" } ],
71 rules: [
72 {
73 host: cfg.domain,
74 http: {
75 paths: [
76 { path: "/", backend: top.service.name_port },
77 ],
78 },
79 },
80 ],
81 },
82 }
83}