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