| local kube = import '../../../kube/kube.libsonnet'; |
| { |
| local annoyatron = self, |
| local cfg = self.cfg, |
| cfg:: { |
| image: "derq3k/card10-annoyatron:latest", |
| domain: "annoyatron-prod.q3k.org", |
| }, |
| |
| deploy: kube.Deployment("annoyatron") { |
| metadata+: { |
| namespace: "q3k", |
| }, |
| spec+: { |
| template+: { |
| spec+: { |
| containers_: { |
| annoyatron: kube.Container("annoyatron") { |
| image: cfg.image, |
| env_: { |
| TOKEN: { |
| secretKeyRef: { name: "annoyatron-token", key: "token" }, |
| }, |
| }, |
| command: [ |
| "/app/annoyatron", |
| "-token=$(TOKEN)", |
| ], |
| ports_: { |
| client: { containerPort: 8080 }, |
| }, |
| }, |
| }, |
| }, |
| }, |
| }, |
| }, |
| svc: kube.Service("annoyatron") { |
| metadata+: { |
| namespace: "q3k", |
| }, |
| target_pod:: annoyatron.deploy.spec.template, |
| spec+: { |
| ports: [ |
| { name: "client", port: 8080, targetPort: 8080, protocol: "TCP" }, |
| ], |
| }, |
| }, |
| ingress: kube.Ingress("annoyatron") { |
| metadata+: { |
| namespace: "q3k", |
| annotations+: { |
| "kubernetes.io/tls-acme": "true", |
| "certmanager.k8s.io/cluster-issuer": "letsencrypt-prod", |
| }, |
| }, |
| spec+: { |
| tls: [ |
| { hosts: [cfg.domain], secretName: "annoyatron-tls" }, |
| ], |
| rules: [ |
| { |
| host: cfg.domain, |
| http: { |
| paths: [ |
| { path: "/", backend: annoyatron.svc.name_port }, |
| ], |
| }, |
| } |
| ], |
| }, |
| }, |
| } |