Comunicar dos microservicios en un clúster de Kubernetes

Primero es necesario crear una implementación y un servicio para comunicación:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: webapp1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: webapp1
  template:
    metadata:
      labels:
        app: webapp1
    spec:
      containers:
      - name: webapp1
        image: katacoda/docker-http-server:latest
        ports:
        - containerPort: 80

---

apiVersion: v1
kind: Service
metadata:
  name: web-app-service
spec:
  selector:
    app: webapp1
  ports:
    - protocol: TCP
      port: 80

Guardar como web-app-service.yaml y ejecutar el siguiente comando:

    kubectl create -f web-app-service.yaml

Cuando se ejecuta un Pod dentro de un Node, el kubelet le agrega un conjunto de variables de entorno que incluyen el HOST y el PORT de cada servicio en ejecución:{SVCNAME}_SERVICE_HOST` y `{SVCNAME}_SERVICE_PORT.

Si el nombre de servicio es web_app_service luego se obtendrán las variables de entorno: WEB_APP_SERVICE_SERVICE_HOST and WEB_APP_SERVICE_SERVICE_PORT

Luego, es posible pasarlas como variables de entorno del segundo servicio, y el clúster las mantendrá actualizadas, incluso si cambia el HOST y/o el PORT.

Enlaces de referencia

Last updated