NGINX

Manifiesto para Nginx en el Namespace "nginx" + PVC (ceph-rbd SotorageClass)+ Deployment + Servicio + TLS Ingress + Certificado
---
# 0. Namespace
apiVersion: v1
kind: Namespace
metadata:
name: nginx
---
# 1. PersistentVolumeClaim (Ceph RBD)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nginx-pvc
namespace: nginx
spec:
storageClassName: ceph-rbd # Nombre de tu StorageClass Ceph
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi # Ajusta el tamaño según necesites
---
# 2. Deployment de NGINX con volumen persistente
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: nginx
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
volumeMounts:
- name: nginx-storage
mountPath: /usr/share/nginx/html # Montamos en la carpeta de contenido
- name: nginx-config
mountPath: /etc/nginx/conf.d/default.conf
subPath: default.conf
volumes:
- name: nginx-storage
persistentVolumeClaim:
claimName: nginx-pvc
- name: nginx-config
configMap:
name: nginx-config
---
# 2.3. ConfigMap para NGINX
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config
namespace: nginx
data:
default.conf: |
server {
listen 80;
server_name _;
location / {
root /usr/share/nginx/html;
index index.html;
}
}
---
# 3.4. Service (ClusterIP)
apiVersion: v1
kind: Service
metadata:
name: nginx-service
namespace: nginx
spec:
type: ClusterIP
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
---
# 4.5. Ingress con TLS
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
namespace: nginx
annotations:
cert-manager.io/cluster-issuer: letsencrypt-staging
#cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
tls:
- hosts:
- nginx.example.com # Cambia por tu dominio
secretName: nginx-tls-staging
rules:
- host: nginx.example.com
# Cambia por tu dominio
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 80