apiVersion: v1 kind: Namespace metadata: name: homepage --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: homepage-config-pvc namespace: homepage spec: accessModes: - ReadWriteOnce resources: requests: storage: 5Gi storageClassName: longhorn --- apiVersion: apps/v1 kind: Deployment metadata: name: homepage namespace: homepage spec: replicas: 1 strategy: type: RollingUpdate selector: matchLabels: app: homepage template: metadata: labels: app: homepage spec: containers: - name: homepage image: ghcr.io/gethomepage/homepage:latest imagePullPolicy: Always ports: - containerPort: 3000 name: http protocol: TCP env: - name: HOMEPAGE_ALLOWED_HOSTS value: needlestack.boo,localhost:3000 volumeMounts: - mountPath: /app/config name: config-volume volumes: - name: config-volume persistentVolumeClaim: claimName: homepage-config-pvc --- apiVersion: v1 kind: Service metadata: name: homepage-service namespace: homepage spec: type: ClusterIP selector: app: homepage ports: - port: 80 protocol: TCP targetPort: 3000 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: homepage-local-ingress namespace: homepage annotations: # AUTOMATED TLS FIX: Triggers cert-manager to provision the certificate cert-manager.io/cluster-issuer: "letsencrypt-production" # THE 502 FIX: Instructs NGINX to bridge to the unencrypted pod port safely nginx.ingress.kubernetes.io/backend-protocol: "HTTP" spec: ingressClassName: nginx tls: - secretName: homepage-tls-secret hosts: - needlestack.boo rules: - host: needlestack.boo http: paths: - path: / pathType: Prefix backend: service: name: homepage-service port: number: 80