112 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
# 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
 |