Despliegue de una aplicación PHP en Kubernetes

Í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
comments powered by Disqus

Relacionados

Conceptos de gestión de paquetería en Debian

En este post se recoge un breve resumen sobre la información relativa a los gestores de paquetes apt y aptitude incluida en el manual de referencia de Debian.

Leer

Disparar un pipeline de Jenkins desde GitHub usando Ngrok

Jenkins se integra con Ngrok para hacer accesible el servidor Jenkins local a servicios en Internet como, por ejemplo, GitHub. Para poder exponer Jenkins a Internet es necesario crear una URL de Ngrok.

Leer

Cómo configurar Windows 11 sin conexión a Internet

Hoy, en la empresa en la que estoy haciendo mis prácticas, he tenido que configurar un nuevo equipo con Windows 11. Por varias razones puede que, cuando nos enfrentemos a esta tarea, no tengamos acceso a Internet. En este caso, la red local requiere una validación para poder acceder a ella pero, en otros, puede ocurrir que simplemente no tengas una red wifi a la conectarte o un cable de red a mano. El asistente de configuración de Windows 11 tal y como viene programado por defecto en los nuevos equipos no permite configurar el sistema operativo si no se establece una conexión entre el ordenador e Internet. Pero hay una forma de evitar esta limitación.

Leer