blob: 9187f542586ef2d1fa94097d8128ebda7ae72ecf [file] [log] [blame]
Serge Bazanskieb09c6a2020-10-06 17:28:19 +02001local kube = import '../../../kube/kube.libsonnet';
Sergiusz Bazanski3e212332019-07-13 18:10:21 +02002
3{
4 local speedtest = self,
5 local cfg = speedtest.cfg,
6 cfg:: {
7 namespace: "speedtest",
8 appName: "speedtest",
9 domain: "speedtest.hackerspace.pl",
10
Serge Bazanskieb09c6a2020-10-06 17:28:19 +020011 image: "registry.k0.hswaw.net/q3k/speedetst:1601997887-f9d9c752ad8403c2b284bfeab23111b25f7e2214",
Sergiusz Bazanski3e212332019-07-13 18:10:21 +020012
13 resources: {
14 requests: {
15 cpu: "25m",
16 memory: "50Mi",
17 },
18 limits: {
19 cpu: "100m",
20 memory: "200Mi",
21 },
22 },
23 },
24
25 namespace: kube.Namespace(cfg.namespace),
26
27 metadata(component):: {
28 namespace: cfg.namespace,
29 labels: {
30 "app.kubernetes.io/name": cfg.appName,
31 "app.kubernetes.io/managed-by": "kubecfg",
32 "app.kubernetes.io/component": component,
33 },
34 },
35
36 deployment: kube.Deployment("backend") {
37 metadata+: speedtest.metadata("backend"),
38 spec+: {
39 replicas: 1,
40 template+: {
41 spec+: {
42 containers_: {
43 nginx: kube.Container("backend") {
44 image: cfg.image,
45 ports_: {
46 http: { containerPort: 8080 },
47 },
48 resources: cfg.resources,
49 },
50 },
51 },
52 },
53 },
54 },
55
56 svc: kube.Service("public") {
57 metadata+: speedtest.metadata("public"),
58 target_pod:: speedtest.deployment.spec.template,
59 },
60
61 ingress: kube.Ingress("public") {
62 metadata+: speedtest.metadata("public") {
63 annotations+: {
64 "kubernetes.io/tls-acme": "true",
65 "certmanager.k8s.io/cluster-issuer": "letsencrypt-prod",
66 "nginx.ingress.kubernetes.io/proxy-body-size": "0",
67 },
68 },
69 spec+: {
70 tls: [
71 { hosts: [cfg.domain], secretName: "public-tls"}
72 ],
73 rules: [
74 {
75 host: cfg.domain,
76 http: {
77 paths: [
78 { path: "/", backend: speedtest.svc.name_port },
79 ],
80 },
81 },
82 ],
83 },
84 },
85}