Exponer un servicio de AKS a través de HTTP o HTTPS mediante Application Gateway
Estos tutoriales ayudan a ilustrar el uso de los recursos de entrada de Kubernetes para exponer un servicio de Kubernetes de ejemplo mediante Azure Application Gateway a través de HTTP o HTTPS.
Sugerencia
Consulte también Qué es la Puerta de enlace de aplicaciones para contenedores.
Requisitos previos
- Haber instalado el gráfico de Helm
ingress-azure
.- Implementación Greenfield: si empieza desde cero, consulte estas instrucciones de instalación, en las que se describen los pasos para implementar un clúster de AKS con Application Gateway e instalar el controlador de entrada de Application Gateway en el clúster de AKS.
- Implementación Brownfield: si ya tiene un clúster de AKS y una instancia de Application Gateway, consulte estas instrucciones para instalar el controlador de entrada de Application Gateway en el clúster de AKS.
- Si desea usar HTTPS en esta aplicación, necesita un certificado X509 y su clave privada.
Implementación de la aplicación guestbook
La aplicación del libro de visitas es una aplicación canónica de Kubernetes que se compone de un front-end de interfaz de usuario Web, un back-end y una base de datos de Redis. De forma predeterminada, guestbook
expone su aplicación a través de un servicio con el nombre frontend
en el puerto 80
. Sin un recurso de entrada de Kubernetes, no se puede acceder al servicio desde fuera del clúster de AKS. Usamos los recursos de entrada de la aplicación y la configuración para acceder a la aplicación mediante HTTP y HTTPS.
Utilice las instrucciones siguientes para implementar la aplicación de libro de visitas.
- Descargue
guestbook-all-in-one.yaml
de aquí - Implemente
guestbook-all-in-one.yaml
en el clúster de AKS mediante la ejecución de
kubectl apply -f guestbook-all-in-one.yaml
Ahora, la aplicación guestbook
se ha implementado.
Exponer servicios a través de HTTP
Para exponer la aplicación de libro de visitas, utilice el siguiente recurso de entrada:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: guestbook
annotations:
kubernetes.io/ingress.class: azure/application-gateway
spec:
rules:
- http:
paths:
- backend:
serviceName: frontend
servicePort: 80
Esta entrada expone el servicio frontend
de la implementación de guestbook-all-in-one
como un back-end predeterminado de la instancia de Application Gateway.
Guarde el recurso de entrada anterior como ing-guestbook.yaml
.
Implemente
ing-guestbook.yaml
mediante la ejecución de:kubectl apply -f ing-guestbook.yaml
Compruebe el registro del estado de implementación del controlador de entrada.
Ahora la aplicación guestbook
debe estar disponible. Para comprobar la disponibilidad, visite la dirección pública de la instancia de Application Gateway.
Exponer servicios a través de HTTPS
Sin nombre de host especificado
Sin especificar el nombre de host, el servicio de libro de visitas estará disponible en todos los nombres de host que apunten a la instancia de Application Gateway.
Antes de implementar la entrada, debe crear un secreto de Kubernetes para hospedar el certificado y la clave privada. Puede crear un secreto de Kubernetes mediante la ejecución de
kubectl create secret tls <guestbook-secret-name> --key <path-to-key> --cert <path-to-cert>
Defina la siguiente entrada. En la entrada, especifique el nombre del secreto en la sección
secretName
.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: guestbook annotations: kubernetes.io/ingress.class: azure/application-gateway spec: tls: - secretName: <guestbook-secret-name> rules: - http: paths: - backend: serviceName: frontend servicePort: 80
Nota:
Reemplace
<guestbook-secret-name>
en el recurso de entrada anterior por el nombre de su secreto. Almacene el recurso de entrada anterior en un archivo bajo el nombre deing-guestbook-tls.yaml
.Implemente ing-guestbook-tls.yaml mediante la ejecución de
kubectl apply -f ing-guestbook-tls.yaml
Compruebe el registro del estado de implementación del controlador de entrada.
Ahora, la aplicación guestbook
está disponible mediante HTTP y HTTPS.
Con nombre de host especificado
También puede especificar el nombre de host en la entrada para multiplexar las configuraciones y los servicios de TLS. Al especificar el nombre de host, el servicio de libro de visitas solo está disponible en el host especificado.
Defina la siguiente entrada. En la entrada, especifique el nombre del secreto en la sección
secretName
y reemplace el nombre de host en la secciónhosts
según corresponda.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: guestbook annotations: kubernetes.io/ingress.class: azure/application-gateway spec: tls: - hosts: - <guestbook.contoso.com> secretName: <guestbook-secret-name> rules: - host: <guestbook.contoso.com> http: paths: - backend: serviceName: frontend servicePort: 80
Implemente
ing-guestbook-tls-sni.yaml
mediante la ejecución dekubectl apply -f ing-guestbook-tls-sni.yaml
Compruebe el registro del estado de implementación del controlador de entrada.
Ahora, la aplicación guestbook
está disponible mediante HTTP y HTTPS solo en el host especificado (<guestbook.contoso.com>
, en este ejemplo).
Integración con otros servicios
La entrada siguiente le permite agregar otras rutas de acceso a esta entrada y redirigir esas rutas de acceso a otros servicios:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: guestbook
annotations:
kubernetes.io/ingress.class: azure/application-gateway
spec:
rules:
- http:
paths:
- path: </other/*>
backend:
serviceName: <other-service>
servicePort: 80
- backend:
serviceName: frontend
servicePort: 80