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

Creación de usuarios y políticas de seguridad en Debian

En este post se explica, a través de varios casos prácticos y ejemplos, el uso adecuado de los comandos básicos para la creación de usuarios y el establecimiento de políticas de seguridad en los sistemas operativos basados en Debian.

Leer

Configurar redes virtuales (VLAN) en bridges Linux

Este post pretende demostrar el funcionamiento y guiar en la configuración de redes virtuales en un bridge creado en una máquina Debian.

Leer

Configuración de un proxy inverso en Apache2 y Nginx

En este post se muestran diferentes ejemplos de configuración de los servidores web Apache2 y Nginx como proxy inverso.

Leer