Compartir a través de


Implementación de un controlador de entrada

Se aplica a: AKS en Azure Local 22H2, AKS en Windows Server

Un controlador de entrada es un recurso de Kubernetes que permite el acceso externo a los servicios dentro del clúster de Kubernetes. La entrada permite a un operador exponer un servicio a solicitudes de red externa, normalmente HTTP o HTTPS. Para configurar el acceso, cree un conjunto de reglas que definan las conexiones entrantes que llegan a servicios específicos.

Un controlador de entrada es software que proporciona enrutamiento de tráfico configurable para los servicios de Kubernetes. Los recursos de entrada de Kubernetes se usan para configurar las reglas de entrada y las rutas de los distintos servicios de Kubernetes. Con un controlador de entrada y reglas de entrada se puede usar una sola dirección IP para enrutar el tráfico a varios servicios en un clúster de Kubernetes.

Después de implementar el controlador en el entorno, puede crear e implementar el manifiesto de entrada. Actualmente, se usa la entrada en AKS Arc mediante el controlador de entrada NGINX. Para obtener información sobre cómo instalar, configurar y usar el controlador de entrada NGINX, consulte Instalación con manifiestos.

La entrada difiere de NodePort y LoadBalancer de una manera única, y mejora el enrutamiento del tráfico al clúster de una manera menos costosa. La definición de servicios NodePort crea numerosos puertos aleatorios y la definición de los servicios LoadBalancer aumenta el costo de los recursos en la nube más de lo que quiera. Al definir un controlador de entrada, se consolidan las reglas de enrutamiento de tráfico en un único recurso que se ejecuta como parte del clúster. NodePort y LoadBalancer permiten exponer un servicio especificando ese valor en el tipo del servicio, mientras que la entrada es un recurso independiente para el servicio. La entrada se define, crea y destruye por separado del servicio.

Puede implementar la entrada de varias maneras en función del caso de uso. Los recursos de entrada se usan para actualizar la configuración en el controlador de entrada para determinar cómo funciona.

Uso de la entrada para exponer servicios a través de direcciones URL accesibles externamente

En el siguiente manifiesto YAML se muestra un ejemplo de uso de entrada. Aparece ingress.class dentro de los metadatos (en este ejemplo, ingress-nginx) y esta configuración permite al controlador de entrada NGINX saber lo que necesita para supervisar y actualizar:

apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata: 
      name: hello-world
      annotations:
          nginx.ingress.kubernetes.io/rewrite-target: /
        kubernetes.io/ingress.class: "nginx"
  spec:  
      rules:
       - host: test.example.com
          http:
             paths: 
             - path: /hello-world
pathType: Prefix
backend:
    service: 
         name: hello-world 
                    port:  
                     number: 8080

En la sección se spec proporciona información sobre lo que está configurado. En este ejemplo, se define una regla (o un conjunto de reglas) e incluye los siguientes elementos:

  • Host al que se aplican las reglas.
  • Si el tráfico es HTTP o HTTPS.
  • Ruta de acceso supervisada.
  • El servicio interno y el puerto donde se envía el tráfico.

Uso de la entrada para equilibrar la carga del tráfico

En el ejemplo siguiente, se agrega otra ruta de acceso al manifiesto que permite el equilibrio de carga entre distintos back-end de una aplicación. En este ejemplo, el operador puede dividir el tráfico y enviarlo a diferentes puntos de conexión de servicio e implementaciones en función de la ruta de acceso descrita. Detrás de cada ruta de acceso hay una implementación y un servicio, lo que resulta útil para los puntos de conexión que reciben más tráfico:

apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata: 
      name: hello-world-and-earth
      annotations:
          nginx.ingress.kubernetes.io/rewrite-target: /
  spec:  
      rules:
       - host: test.example.com
          http:
             paths: 
             - path: /hello-world
pathType: Prefix
backend:
    service: 
         name: hello-world 
                    port:  
                     number: 8080
               - path: /hello-earth
pathType: Prefix
backend:
    service: 
         name: hello-earth 
                    port:  
                     number: 8080

Uso de la entrada para enrutar el tráfico HTTP a varios nombres de host en la misma dirección IP

Puede usar un recurso de entrada diferente para cada host, lo que le permite controlar el tráfico con varios nombres de host. Para usar un recurso de entrada diferente, apunte varios nombres de host en la misma dirección IP pública que se usa para el servicio LoadBalancer. En el siguiente archivo de manifiesto, se agregó una versión de producción de hello-world. Se usa el nombre de host prod.example.com y el tráfico apunta al nuevo servicio hello-world-prod. El tráfico entra a través de la dirección IP del equilibrador de carga y se enruta según el nombre de host y la ruta de acceso que proporcione:

apiVersion: networking.k8s.io/v1  
kind: Ingress  
metadata: 
      name: hello-world-prod
      annotations:
          nginx.ingress.kubernetes.io/rewrite-target: /
  spec:  
      rules:
       - host: test.example.com
          http:
             paths: 
             - path: /hello-world
pathType: Prefix
backend:
    service: 
         name: hello-world-test 
                    port:  
                     number: 8080
       - host: prod.example.com
          http:
              paths:
               - path: /hello-world
pathType: Prefix
backend:
    service: 
         name: hello-world-prod 
                    port:  
                     number: 8080

Pasos siguientes

Para obtener más información, consulte los siguientes vínculos: