cluster-manifests/homepage/homepage.yaml

100 lines
2.0 KiB
YAML

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