# Namespace apiVersion: v1 kind: Namespace metadata: name: nginx-deployment --- # Persistent Volume apiVersion: v1 kind: PersistentVolume metadata: name: nginx-pv spec: capacity: storage: 5Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: manual hostPath: path: "/mnt/data/nginx-pv" # Adjust this path according to the Kubernetes node filesystem --- # Persistent Volume Claim apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nginx-pvc namespace: nginx-deployment spec: storageClassName: manual accessModes: - ReadWriteOnce resources: requests: storage: 5Gi --- # Deployment for Nginx Pods apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment namespace: nginx-deployment spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 volumeMounts: - mountPath: /usr/share/nginx/html name: nginx-storage resources: limits: memory: "512Mi" cpu: "1" requests: memory: "256Mi" cpu: "0.5" volumes: - name: nginx-storage persistentVolumeClaim: claimName: nginx-pvc --- # Service of type LoadBalancer to expose Nginx externally apiVersion: v1 kind: Service metadata: name: nginx-service namespace: nginx-deployment spec: selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancer --- # Ingress to route traffic to Nginx service (no specific host) apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: nginx-ingress namespace: nginx-deployment annotations: traefik.ingress.kubernetes.io/router.entrypoints: web spec: rules: - http: # host: something.hs-fulda.de # Replace with your domain paths: - path: / pathType: Prefix backend: service: name: nginx-service port: number: 80