blob: 5f897626a73e5bb610bc9516d83f0465e8da7df1 [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",
9 image: "registry.k0.hswaw.net/radex/next-bruh:v1",
10 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+: {
17 replicas: 3,
18 template+: {
19 spec+: {
20 containers_: {
21 default: kube.Container("default") {
22 image: cfg.image,
23 resources: {
24 requests: { cpu: "0.01", memory: "64M" },
25 limits: { cpu: "1", memory: "256M" },
26 },
27 ports_: {
28 http: { containerPort: 3000 },
29 },
30 },
31 },
32 },
33 },
34 },
35 },
36
37 service: top.ns.Contain(kube.Service(cfg.name)) {
38 target_pod:: top.deployment.spec.template,
39 },
40
41 ingress: top.ns.Contain(kube.Ingress(cfg.name)) {
42 metadata+: {
43 annotations+: {
44 "kubernetes.io/tls-acme": "true",
45 "cert-manager.io/cluster-issuer": "letsencrypt-prod",
46 "nginx.ingress.kubernetes.io/proxy-body-size": "0",
47 },
48 },
49 spec+: {
50 tls: [ { hosts: [ cfg.domain ], secretName: cfg.name + "-tls" } ],
51 rules: [
52 {
53 host: cfg.domain,
54 http: {
55 paths: [
56 { path: "/", backend: top.service.name_port },
57 ],
58 },
59 },
60 ],
61 },
62 }
63}