Merge "personal/q3k/annoyatron: init"
diff --git a/personal/q3k/annoyatron/prod.jsonnet b/personal/q3k/annoyatron/prod.jsonnet
new file mode 100644
index 0000000..977b8e0
--- /dev/null
+++ b/personal/q3k/annoyatron/prod.jsonnet
@@ -0,0 +1,73 @@
+local kube = import '../../../kube/kube.libsonnet';
+{
+ local annoyatron = self,
+ local cfg = self.cfg,
+ cfg:: {
+ image: "registry.k0.hswaw.net/q3k/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 },
+ ],
+ },
+ }
+ ],
+ },
+ },
+}