blob: dcd3679b9a5538b1cb05554d99036590331c1a9e [file] [log] [blame]
Sergiusz Bazanski0a275da2019-07-29 01:21:31 +02001local kube = import '../../../kube/kube.libsonnet';
2{
3 local annoyatron = self,
4 local cfg = self.cfg,
5 cfg:: {
Sergiusz Bazanski1f3674f2019-08-08 17:49:19 +02006 image: "derq3k/card10-annoyatron:latest",
Sergiusz Bazanski0a275da2019-07-29 01:21:31 +02007 domain: "annoyatron-prod.q3k.org",
8 },
9
10 deploy: kube.Deployment("annoyatron") {
11 metadata+: {
12 namespace: "q3k",
13 },
14 spec+: {
15 template+: {
16 spec+: {
17 containers_: {
18 annoyatron: kube.Container("annoyatron") {
19 image: cfg.image,
20 env_: {
21 TOKEN: {
22 secretKeyRef: { name: "annoyatron-token", key: "token" },
23 },
24 },
25 command: [
26 "/app/annoyatron",
27 "-token=$(TOKEN)",
28 ],
29 ports_: {
30 client: { containerPort: 8080 },
31 },
32 },
33 },
34 },
35 },
36 },
37 },
38 svc: kube.Service("annoyatron") {
39 metadata+: {
40 namespace: "q3k",
41 },
42 target_pod:: annoyatron.deploy.spec.template,
43 spec+: {
44 ports: [
45 { name: "client", port: 8080, targetPort: 8080, protocol: "TCP" },
46 ],
47 },
48 },
49 ingress: kube.Ingress("annoyatron") {
50 metadata+: {
51 namespace: "q3k",
52 annotations+: {
53 "kubernetes.io/tls-acme": "true",
54 "certmanager.k8s.io/cluster-issuer": "letsencrypt-prod",
55 },
56 },
57 spec+: {
58 tls: [
59 { hosts: [cfg.domain], secretName: "annoyatron-tls" },
60 ],
61 rules: [
62 {
63 host: cfg.domain,
64 http: {
65 paths: [
66 { path: "/", backend: annoyatron.svc.name_port },
67 ],
68 },
69 }
70 ],
71 },
72 },
73}