es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo exponer la IP externa de un nodo en el servicio de Ingress de Kubernetes a través de internet.

Instalé un clúster de Kubernetes de un solo nodo con kubeadm. Esto se encuentra en un vServer “bare metal” con una IP externa estática dedicada.

Con estos componentes/configuraciones:
– calico (configuración por defecto)
– MetalLB (configuración de capa 2 con rango de direcciones 192.168.1.240-192.168.1.250)
– Traefik (configuración por defecto)

Ahora, un servicio de traefik se expone como una “IP externa”, pero la IP es 192.168.1.240. Esto es externo desde el punto de vista de Kubernetes, pero ¿cómo puedo exponer el servicio de ingreso a internet?

No quiero configurar un balanceador de carga externo adicional. ¿Cómo puedo lograr esto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para exponer el servicio de ingreso a internet sin configurar un balanceador de carga externo adicional, puedes utilizar la función MetalLB en modo de capa 2 para asignar la IP estática de tu VPS como la IP externa para tu controlador de ingreso. Aquí están los pasos a seguir:

    1. Descubre la IP externa de tu VPS (por ejemplo, 203.0.113.1).
    2. Edita el archivo YAML de implementación de Traefik (traefik-deployment.yaml) para agregar las siguientes variables de entorno bajo la sección spec.template.spec.containers:

            env:
            - name: TRAEFIK_NODE_PORT
              value: "80"
            - name: TRAEFIK_INSECURE_SKIP_VERIFY
              value: "true"
            - name: TRAEFIK_ENTRYPOINTS_HTTP_ADDRESS
              value: ":80"
            - name: TRAEFIK_ENTRYPOINTS_HTTPS_ADDRESS
              value: ":443"
    
    1. Edita el archivo YAML de ingreso de Traefik (traefik-ingress.yaml) para agregar las siguientes anotaciones a la sección metadata:
        annotations:
            metallb.universe.tf/address-pool: layer2-ips
            traefik.ingress.kubernetes.io/router.entrypoints: http, https
            traefik.ingress.kubernetes.io/router.tls: "true"
            traefik.ingress.kubernetes.io/router.tls.certresolver:  default
            traefik.ingress.kubernetes.io/router.hsts: "true"
            traefik.ingress.kubernetes.io/router.middlewares: default-redirecthttps, http-to-https, securityheaders
            traefik.ingress.kubernetes.io/router.service: traefik/http@internal
    
    1. Aplica los cambios a tu clúster de Kubernetes:
    $ kubectl apply -f traefik-deployment.yaml
    $ kubectl apply -f traefik-ingress.yaml
    
    1. Verifica que Traefik esté sirviendo solicitudes en la IP estática del VPS accediendo a http://203.0.113.1` ohttps://203.0.113.1` desde un navegador web. Deberías ver el panel de control de Traefik o una página de error 404 Not Found si no hay servicios ejecutándose aún.

    Nota: Si deseas usar un nombre de dominio en lugar de una dirección IP, necesitas configurar tu proveedor de DNS para redirigir tu dominio a la dirección IP del VPS y agregar el dominio a la sección spec.template.spec.hostnames del archivo YAML de ingreso de Traefik.

Comments are closed.