From ba228062dfa1c9946d4251db8ce9d5abc1c8bb54 Mon Sep 17 00:00:00 2001 From: Ben Vincent Date: Sun, 28 Jun 2026 00:14:25 +1000 Subject: [PATCH] Add age-api deployment Deploy age-api with configMapGenerator for people config (jaidi, ben, sudaporn). --- apps/base/age-api/deployment.yaml | 45 +++++++++++++++++ apps/base/age-api/gateway.yaml | 37 ++++++++++++++ apps/base/age-api/httproute.yaml | 49 +++++++++++++++++++ apps/base/age-api/kustomization.yaml | 17 +++++++ apps/base/age-api/namespace.yaml | 5 ++ apps/base/age-api/resources/config.yaml | 7 +++ apps/base/age-api/service.yaml | 17 +++++++ .../au-syd1/age-api/kustomization.yaml | 6 +++ argocd/applicationsets/platform.yaml | 1 + argocd/projects/platform.yaml | 2 + 10 files changed, 186 insertions(+) create mode 100644 apps/base/age-api/deployment.yaml create mode 100644 apps/base/age-api/gateway.yaml create mode 100644 apps/base/age-api/httproute.yaml create mode 100644 apps/base/age-api/kustomization.yaml create mode 100644 apps/base/age-api/namespace.yaml create mode 100644 apps/base/age-api/resources/config.yaml create mode 100644 apps/base/age-api/service.yaml create mode 100644 apps/overlays/au-syd1/age-api/kustomization.yaml diff --git a/apps/base/age-api/deployment.yaml b/apps/base/age-api/deployment.yaml new file mode 100644 index 0000000..d553278 --- /dev/null +++ b/apps/base/age-api/deployment.yaml @@ -0,0 +1,45 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: age-api + namespace: age-api +spec: + replicas: 1 + selector: + matchLabels: + app: age-api + template: + metadata: + annotations: + reloader.stakater.com/auto: "true" + labels: + app: age-api + spec: + containers: + - name: age-api + image: git.unkin.net/unkin/age-api:v0.1.0 + imagePullPolicy: IfNotPresent + ports: + - containerPort: 8080 + name: http + protocol: TCP + env: + - name: CONFIG_PATH + value: /etc/age-api/config.yaml + resources: + limits: + cpu: 100m + memory: 64Mi + requests: + cpu: 10m + memory: 32Mi + volumeMounts: + - mountPath: /etc/age-api/config.yaml + name: config + subPath: config.yaml + restartPolicy: Always + volumes: + - name: config + configMap: + name: age-api-config diff --git a/apps/base/age-api/gateway.yaml b/apps/base/age-api/gateway.yaml new file mode 100644 index 0000000..3e5e306 --- /dev/null +++ b/apps/base/age-api/gateway.yaml @@ -0,0 +1,37 @@ +--- +apiVersion: gateway.networking.k8s.io/v1 +kind: Gateway +metadata: + labels: + traefik.io/instance: internal + annotations: + cert-manager.io/cluster-issuer: vault-issuer + cert-manager.io/common-name: age-api.k8s.syd1.au.unkin.net + cert-manager.io/private-key-size: "4096" + external-dns.alpha.kubernetes.io/hostname: age-api.k8s.syd1.au.unkin.net + external-dns.alpha.kubernetes.io/target: 198.18.200.4 + name: age-api + namespace: age-api +spec: + gatewayClassName: traefik-internal + listeners: + - allowedRoutes: + namespaces: + from: Same + hostname: age-api.k8s.syd1.au.unkin.net + name: http + port: 80 + protocol: HTTP + - allowedRoutes: + namespaces: + from: Same + hostname: age-api.k8s.syd1.au.unkin.net + name: https + port: 443 + protocol: HTTPS + tls: + certificateRefs: + - group: "" + kind: Secret + name: age-api-tls + mode: Terminate diff --git a/apps/base/age-api/httproute.yaml b/apps/base/age-api/httproute.yaml new file mode 100644 index 0000000..e61d34f --- /dev/null +++ b/apps/base/age-api/httproute.yaml @@ -0,0 +1,49 @@ +--- +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: age-api-http-redirect + namespace: age-api +spec: + hostnames: + - age-api.k8s.syd1.au.unkin.net + parentRefs: + - group: gateway.networking.k8s.io + kind: Gateway + name: age-api + sectionName: http + rules: + - filters: + - type: RequestRedirect + requestRedirect: + scheme: https + statusCode: 301 + matches: + - path: + type: PathPrefix + value: / +--- +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: age-api + namespace: age-api +spec: + hostnames: + - age-api.k8s.syd1.au.unkin.net + parentRefs: + - group: gateway.networking.k8s.io + kind: Gateway + name: age-api + sectionName: https + rules: + - backendRefs: + - group: "" + kind: Service + name: age-api + port: 80 + weight: 1 + matches: + - path: + type: PathPrefix + value: / diff --git a/apps/base/age-api/kustomization.yaml b/apps/base/age-api/kustomization.yaml new file mode 100644 index 0000000..ce0fbd0 --- /dev/null +++ b/apps/base/age-api/kustomization.yaml @@ -0,0 +1,17 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - deployment.yaml + - gateway.yaml + - httproute.yaml + - namespace.yaml + - service.yaml + +configMapGenerator: + - name: age-api-config + files: + - config.yaml=resources/config.yaml + options: + disableNameSuffixHash: true diff --git a/apps/base/age-api/namespace.yaml b/apps/base/age-api/namespace.yaml new file mode 100644 index 0000000..710c0bd --- /dev/null +++ b/apps/base/age-api/namespace.yaml @@ -0,0 +1,5 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + name: age-api diff --git a/apps/base/age-api/resources/config.yaml b/apps/base/age-api/resources/config.yaml new file mode 100644 index 0000000..3ba9528 --- /dev/null +++ b/apps/base/age-api/resources/config.yaml @@ -0,0 +1,7 @@ +people: + - name: jaidi + birthtime: 1773135720 + - name: ben + birthtime: 559663200 + - name: sudaporn + birthtime: 686757600 diff --git a/apps/base/age-api/service.yaml b/apps/base/age-api/service.yaml new file mode 100644 index 0000000..37efeac --- /dev/null +++ b/apps/base/age-api/service.yaml @@ -0,0 +1,17 @@ +--- +apiVersion: v1 +kind: Service +metadata: + name: age-api + namespace: age-api +spec: + internalTrafficPolicy: Cluster + ports: + - name: http + port: 80 + protocol: TCP + targetPort: http + selector: + app: age-api + sessionAffinity: None + type: ClusterIP diff --git a/apps/overlays/au-syd1/age-api/kustomization.yaml b/apps/overlays/au-syd1/age-api/kustomization.yaml new file mode 100644 index 0000000..77fc2da --- /dev/null +++ b/apps/overlays/au-syd1/age-api/kustomization.yaml @@ -0,0 +1,6 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - ../../../base/age-api diff --git a/argocd/applicationsets/platform.yaml b/argocd/applicationsets/platform.yaml index 7023960..3d35ef2 100644 --- a/argocd/applicationsets/platform.yaml +++ b/argocd/applicationsets/platform.yaml @@ -11,6 +11,7 @@ spec: revision: HEAD directories: - path: apps/overlays/*/artifactapi + - path: apps/overlays/*/age-api - path: apps/overlays/*/cattle-system - path: apps/overlays/*/cert-manager - path: apps/overlays/*/certificates diff --git a/argocd/projects/platform.yaml b/argocd/projects/platform.yaml index ceaa1d7..5409868 100644 --- a/argocd/projects/platform.yaml +++ b/argocd/projects/platform.yaml @@ -17,6 +17,8 @@ spec: server: https://kubernetes.default.svc - namespace: 'artifactapi' server: https://kubernetes.default.svc + - namespace: 'age-api' + server: https://kubernetes.default.svc - namespace: 'cert-manager' server: https://kubernetes.default.svc - namespace: 'certificates'