apiVersion: v1 kind: Secret metadata: name: airtrail namespace: airtrail labels: app: airtrail app.kubernetes.io/name: airtrail annotations: kube-1password: 2322tcm3p5v6ql7oy2efrn4jse kube-1password/vault: Kubernetes kube-1password/secret-text-parse: "true" type: Opaque --- apiVersion: v1 kind: ConfigMap metadata: name: airtrail namespace: airtrail labels: app: airtrail app.kubernetes.io/name: airtrail annotations: reloader.stakater.com/match: "true" data: ORIGIN: https://airtrail.cluster.fun UPLOAD_LOCATION: /app/uploads --- apiVersion: apps/v1 kind: Deployment metadata: name: airtrail namespace: airtrail labels: app: airtrail app.kubernetes.io/name: airtrail spec: replicas: 1 strategy: type: Recreate selector: matchLabels: app: airtrail template: metadata: labels: app: airtrail app.kubernetes.io/name: airtrail spec: securityContext: runAsUser: 1000 runAsGroup: 1000 fsGroup: 1000 containers: - name: airtrail image: johly/airtrail:v3.11.1 imagePullPolicy: IfNotPresent envFrom: - configMapRef: name: airtrail - secretRef: name: airtrail ports: - containerPort: 3000 name: web volumeMounts: - mountPath: /app/uploads name: uploads livenessProbe: httpGet: path: /api/ping port: 3000 initialDelaySeconds: 5 periodSeconds: 30 readinessProbe: httpGet: path: /api/ping port: 3000 initialDelaySeconds: 5 periodSeconds: 10 resources: requests: cpu: 100m memory: 150Mi limits: cpu: 200m memory: 300Mi volumes: - name: uploads persistentVolumeClaim: claimName: airtrail-uploads --- apiVersion: v1 kind: Service metadata: name: airtrail namespace: airtrail labels: app: airtrail app.kubernetes.io/name: airtrail spec: type: ClusterIP ports: - port: 80 targetPort: web name: web selector: app: airtrail --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: airtrail namespace: airtrail labels: app: airtrail app.kubernetes.io/name: airtrail annotations: cert-manager.io/cluster-issuer: letsencrypt nginx.ingress.kubernetes.io/force-ssl-redirect: "true" nginx.ingress.kubernetes.io/proxy-body-size: "0" nginx.ingress.kubernetes.io/client-body-buffer-size: 25m nginx.ingress.kubernetes.io/proxy-connect-timeout: "300" nginx.ingress.kubernetes.io/proxy-send-timeout: "300" nginx.ingress.kubernetes.io/proxy-read-timeout: "300" nginx.ingress.kubernetes.io/proxy-next-upstream: "300" nginx.ingress.kubernetes.io/proxy-next-upstream-timeout: "300" spec: ingressClassName: nginx tls: - hosts: - airtrail.cluster.fun secretName: airtrail-ingress rules: - host: airtrail.cluster.fun http: paths: - path: / pathType: ImplementationSpecific backend: service: name: airtrail port: name: web