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

Empaquetadores y compresores/descompresores en Debian

Los empaquetadores y compresores/descompresores son paquetes fundamentales en cualquier distribución de un sistema operativo. En este post se analizan varios de estos paquetes disponibles para Debian y otras distribuciones GNU/Linux

Leer

Escenario de enrutamiento en GNS3

En esta práctica se parte de un escenario recreado en el simulador GNS3 y, a partir de él, se enruta el tráfico entre los diferentes equipos que forman la red para permitir la comunicación entre todas las máquinas.

Leer

Creación de Deployments en kubernetes

Para crear un despliegue o deployment en Kubernetes se define el recurso en un fichero yaml.

Leer