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