diff --git a/kube/clusters/biohazard/flux/kustomization.yaml b/kube/clusters/biohazard/flux/kustomization.yaml index e3dbef77..0b0dd696 100644 --- a/kube/clusters/biohazard/flux/kustomization.yaml +++ b/kube/clusters/biohazard/flux/kustomization.yaml @@ -134,6 +134,7 @@ resources: - ../../../deploy/apps/kromgo/ - ../../../deploy/apps/blocky/ - ../../../deploy/apps/cryptpad/ + - ../../../deploy/apps/languagetool/ - ../../../deploy/vm/_kubevirt/ #- ../../../deploy/vm/_base/ - ../../../deploy/vm/ad/ diff --git a/kube/deploy/apps/languagetool/app/hr.yaml b/kube/deploy/apps/languagetool/app/hr.yaml new file mode 100644 index 00000000..d83e911d --- /dev/null +++ b/kube/deploy/apps/languagetool/app/hr.yaml @@ -0,0 +1,96 @@ +--- +# yaml-language-server: $schema=https://raw.githubusercontent.com/bjw-s/helm-charts/common-3.4.0/charts/other/app-template/schemas/helmrelease-helm-v2beta2.schema.json +apiVersion: helm.toolkit.fluxcd.io/v2beta2 +kind: HelmRelease +metadata: + name: &app languagetool + namespace: *app +spec: + interval: 5m + chart: + spec: + chart: app-template + version: 3.4.0 + sourceRef: + name: bjw-s + kind: HelmRepository + namespace: flux-system + values: + controllers: + languagetool: + type: deployment + replicas: 1 + pod: + labels: + ingress.home.arpa/nginx-internal: allow + containers: + main: + image: &img + repository: docker.io/erikvl87/languagetool + tag: latest@sha256:4052ce437ea99616350dd3932eb76aad9b3b43f40e8b0628589ba050c83a24d2 # 6.4-docker-2 is a weird tag version scheme and I'm lazy + env: &env + TZ: "${CONFIG_TZ}" + securityContext: &sc + readOnlyRootFilesystem: true + allowPrivilegeEscalation: false + capabilities: + drop: ["ALL"] + resources: + requests: + cpu: 10m + limits: + cpu: 1000m + memory: 1Gi + probes: + liveness: + enabled: true + readiness: + enabled: true + service: + languagetool: + controller: languagetool + ports: + http: + port: 8010 + protocol: HTTP + appProtocol: http + ingress: + main: + className: nginx-internal + hosts: + - host: &host "${APP_DNS_LANGUAGETOOL:=languagetool}" + paths: &paths + - path: / + pathType: Prefix + service: + identifier: languagetool + port: http + tls: + - hosts: [*host] + defaultPodOptions: + automountServiceAccountToken: false + enableServiceLinks: false + hostAliases: + - ip: "${APP_IP_AUTHENTIK:=127.0.0.1}" + hostnames: ["${APP_DNS_AUTHENTIK:=authentik}"] + securityContext: + runAsNonRoot: true + runAsUser: &uid ${APP_UID_LANGUAGETOOL:=1000} + runAsGroup: *uid + fsGroup: *uid + fsGroupChangePolicy: Always + seccompProfile: { type: "RuntimeDefault" } + topologySpreadConstraints: + - maxSkew: 1 + topologyKey: kubernetes.io/hostname + whenUnsatisfiable: DoNotSchedule + labelSelector: + matchLabels: + app.kubernetes.io/name: *app + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: fuckoff.home.arpa/languagetool + operator: DoesNotExist diff --git a/kube/deploy/apps/languagetool/ks.yaml b/kube/deploy/apps/languagetool/ks.yaml new file mode 100644 index 00000000..ecf7953c --- /dev/null +++ b/kube/deploy/apps/languagetool/ks.yaml @@ -0,0 +1,14 @@ +--- +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: languagetool-app + namespace: flux-system + labels: &l + app.kubernetes.io/name: "languagetool" +spec: + commonMetadata: + labels: *l + path: ./kube/deploy/apps/languagetool/app + targetNamespace: "languagetool" + dependsOn: [] diff --git a/kube/deploy/apps/languagetool/kustomization.yaml b/kube/deploy/apps/languagetool/kustomization.yaml new file mode 100644 index 00000000..5eeb2657 --- /dev/null +++ b/kube/deploy/apps/languagetool/kustomization.yaml @@ -0,0 +1,6 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ns.yaml + - ks.yaml diff --git a/kube/deploy/apps/languagetool/ns.yaml b/kube/deploy/apps/languagetool/ns.yaml new file mode 100644 index 00000000..bb4eda6a --- /dev/null +++ b/kube/deploy/apps/languagetool/ns.yaml @@ -0,0 +1,10 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + name: languagetool + labels: + kustomize.toolkit.fluxcd.io/prune: disabled + pod-security.kubernetes.io/enforce: &ps restricted + pod-security.kubernetes.io/audit: *ps + pod-security.kubernetes.io/warn: *ps