Despliegue de una aplicación PHP en Kubernetes
- Francisco Javier Huete
- Servicios
- March 9, 2025
Índice
En este post se documenta el despliegue de la aplicación Let`s Chat en Kubernetes.
Para desplegar esta aplicación se crea, en primer lugar, el despliegue de la aplicación.
apiVersion: apps/v1
kind: Deployment
metadata:
name: lets-chat
labels:
app: lets-chat
tier: frontend
spec:
replicas: 2
selector:
matchLabels:
app: lets-chat
tier: frontend
template:
metadata:
labels:
app: lets-chat
tier: frontend
spec:
containers:
- name: contenedor-lets-chat
image: sdelements/lets-chat
ports:
- name: lets-chat-port
containerPort: 8080
A continuación, se define el despliegue de la base de datos.
apiVersion: apps/v1
kind: Deployment
metadata:
name: mongo
labels:
app: mongo
tier: backend
spec:
replicas: 1
selector:
matchLabels:
app: mongo
tier: backend
template:
metadata:
labels:
app: mongo
tier: backend
spec:
containers:
- name: contenedor-mongo
image: mongo:4
ports:
- name: mongo-server
containerPort: 27017
Y se ejecutan ambos despliegues.
kubectl apply -f letschat-deployment.yaml
kubectl apply -f mongo-deployment.yaml
Para que la aplicación pueda acceder a la base de datos hay que configurar un servicio de tipo CulsterIP.
apiVersion: v1
kind: Service
metadata:
name: lets-chat
labels:
app: lets-chat
tier: frontend
spec:
type: NodePort
ports:
- port: 8080
targetPort: lets-chat-port
selector:
app: lets-chat
tier: frontend
Y para poder acceder a la aplicación hay que usar un servicio de tipo NodePort.
apiVersion: v1
kind: Service
metadata:
name: mongo
labels:
app: mongo
tier: backend
spec:
type: ClusterIP
ports:
- port: 27017
targetPort: mongo-server
selector:
app: mongo
tier: backend
Y ejecutar ambos servicios.
kubectl apply -f letschat-service.yaml
kubectl apply -f mongo-service.yaml
Para poder acceder a la aplicación usando una URL hay que crear un recurso de tipo ingress.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: lets-chat
spec:
rules:
- host: www.chat-javi.org
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: lets-chat
port:
number: 8080
Y se ejecuta el recurso.
kubectl apply -f letschat-ingress.yaml