From 715bac1dd4cf1c04a1cb78cdec7f7f2e5d5da7f2 Mon Sep 17 00:00:00 2001 From: Michael Thomson Date: Tue, 18 Jun 2024 15:11:22 -0400 Subject: [PATCH] todos app --- .../kustomizations/kustomization-todos.yaml | 18 ++++++++++++ bootstrap/namespaces/namespace-todo.yaml | 4 +++ todo/app-secret.yaml | 15 ++++++++++ todo/deployment.yaml | 29 +++++++++++++++++++ todo/ingress.yaml | 24 +++++++++++++++ todo/service.yaml | 12 ++++++++ 6 files changed, 102 insertions(+) create mode 100644 bootstrap/kustomizations/kustomization-todos.yaml create mode 100644 bootstrap/namespaces/namespace-todo.yaml create mode 100644 todo/app-secret.yaml create mode 100644 todo/deployment.yaml create mode 100644 todo/ingress.yaml create mode 100644 todo/service.yaml diff --git a/bootstrap/kustomizations/kustomization-todos.yaml b/bootstrap/kustomizations/kustomization-todos.yaml new file mode 100644 index 0000000..62992b2 --- /dev/null +++ b/bootstrap/kustomizations/kustomization-todos.yaml @@ -0,0 +1,18 @@ +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: todo + namespace: flux-system +spec: + interval: 15m + path: ./todo + prune: true # remove any elements later removed from the above path + timeout: 2m # if not set, this defaults to interval duration, which is 1h + sourceRef: + kind: GitRepository + name: flux-system + healthChecks: + - apiVersion: apps/v1 + kind: Deployment + name: todo + namespace: todo diff --git a/bootstrap/namespaces/namespace-todo.yaml b/bootstrap/namespaces/namespace-todo.yaml new file mode 100644 index 0000000..1d4893a --- /dev/null +++ b/bootstrap/namespaces/namespace-todo.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: todo diff --git a/todo/app-secret.yaml b/todo/app-secret.yaml new file mode 100644 index 0000000..0999f50 --- /dev/null +++ b/todo/app-secret.yaml @@ -0,0 +1,15 @@ +--- +apiVersion: bitnami.com/v1alpha1 +kind: SealedSecret +metadata: + creationTimestamp: null + name: database-url + namespace: todo +spec: + encryptedData: + DATABASE_URL: AgBgS5ia5yF0eTcAJypY/Ca3fDM3ya9+JPQ6bXHk/WhIVhoWxq/yp5rhlt+d/nyYfk2SPhCeBz1+CX2/kedage/kXDnWVcOkBKqVggb0dLGNS26i9mZImq3CVCOlvTUv1+IlQwkkS+MMrHbMRiFDJNZNJwnVW1ibXvyKYXCOnzxQdtkL/eB2urko54Lf9YTDmEYRo+23LXZOocDA3KsUV2ieh95AVD2LUwyFo64NfeD3+U24CwWzj6LXnmHZNhn+e4sP2Q3fUjyWYiiO9qbbmTi+fgGKR1wUNlaWxbzyBSa/UBe1NPdjAVMDjFPuJncM8oyhhoCvzBRLWYgysVAIZhPtJtiTNkKvWdxjhyqaTMRXOgZhk/z0j5LvLw9eXuXFuZLSTSwzLWKdCw5fERY8kd/WNXI31Pz9ODRRJwzonojYJ07CwowxS+b6oecvuzmo9vOE4i1Ghs2uukrVN/t9d5phX0VBrsh4S1sKOrMfQpkgABZmKt8CctU34t+C+rAY2GNvig0URcXnJW1ZKxylp0cGaEg9SeH5UdvRAFdkyyf6VTE/+uG+6qFjGTqcRcXdfY/wBgoOpq9y4wka+w4lkvJPaiuDW+kkR4+I1Q92D0x+1o/nSBnGjmMS8qMxe7039awGXGbyaGcjdFw6iBUbCkAiSTEa2Ms6ksgl6Tfs1hiACAO1pkNWrym+mYDXHYqwRnMJ6fo7BFEaOzpeXtDWHif08imkfANlZfuKgXHiahhqQP1Hp1DHhpouSPLzfxlPvKBy/nHnHsG7Q1XGRQxTFaAFqzE= + template: + metadata: + creationTimestamp: null + name: database-url + namespace: todo diff --git a/todo/deployment.yaml b/todo/deployment.yaml new file mode 100644 index 0000000..89d1f53 --- /dev/null +++ b/todo/deployment.yaml @@ -0,0 +1,29 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: todo + namespace: todo + labels: + app: todo +spec: + replicas: 1 + selector: + matchLabels: + app: todo + template: + metadata: + labels: + app: todo + spec: + containers: + - image: gitea.michaelthomson.dev/mthomson/go-todos-app:latest + name: todo + ports: + - name: http + containerPort: 3000 + env: + - name: DATABASE_URL + valueFrom: + secretKeyRef: + name: database-url + key: DATABASE_URL diff --git a/todo/ingress.yaml b/todo/ingress.yaml new file mode 100644 index 0000000..3f37335 --- /dev/null +++ b/todo/ingress.yaml @@ -0,0 +1,24 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: todo + namespace: todo + annotations: + traefik.ingress.kubernetes.io/router.entrypoints: websecure + traefik.ingress.kubernetes.io/router.tls: "true" +spec: + rules: + - host: todo.michaelthomson.dev + http: + paths: + - pathType: ImplementationSpecific + path: / + backend: + service: + name: todo + port: + name: http + tls: + - hosts: + - todo.michaelthomson.dev + secretName: letsencrypt-wildcard-cert-michaelthomson.dev diff --git a/todo/service.yaml b/todo/service.yaml new file mode 100644 index 0000000..0689259 --- /dev/null +++ b/todo/service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: todo + namespace: todo +spec: + selector: + app: todo + ports: + - port: 80 + targetPort: http + name: http