Exponer un servicio de AKS a través de HTTP o HTTPS mediante Application Gateway
Este artículo ayuda a ilustrar el uso de los recursos de entrada de Kubernetes para exponer un servicio de Azure Kubernetes Service (AKS) de ejemplo mediante Azure Application Gateway a través de HTTP o HTTPS.
Sugerencia
Considere Puerta de enlace de aplicaciones para contenedores para la solución de entrada de Kubernetes.
Requisitos previos
- Un gráfico de Helm
ingress-azure
instalado:- 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 (AGIC) en el clúster de AKS.
- Implementación de Brownfield: si tiene un clúster de AKS existente y una implementación de Application Gateway, consulte estas instrucciones para instalar AGIC en el clúster de AKS.
- Un certificado x509 y su clave privada, si desea usar HTTPS en esta aplicación.
Implementación de la aplicación de libro de invitados
La aplicación guestbook
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.
Para implementar la aplicación guestbook
:
Descargue
guestbook-all-in-one.yaml
de esta página de GitHub.Implemente
guestbook-all-in-one.yaml
en el clúster de AKS mediante la ejecución de este comando:kubectl apply -f guestbook-all-in-one.yaml
Exponer servicios a través de HTTP
Para exponer la aplicación guestbook
, 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 implementación de Application Gateway.
Guarde el recurso de entrada anterior como ing-guestbook.yaml
:
Implemente
ing-guestbook.yaml
mediante la ejecución de este comando: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 implementación de Application Gateway.
Exponer servicios a través de HTTPS
Sin un nombre de host especificado
Si no especifica un nombre de host, el servicio guestbook
está disponible en todos los nombres de host que apuntan a la implementación de Application Gateway.
Antes de implementar el recurso de entrada, cree un secreto de Kubernetes para hospedar el certificado y la clave privada:
kubectl create secret tls <guestbook-secret-name> --key <path-to-key> --cert <path-to-cert>
Defina el siguiente recurso de entrada. En la sección
secretName
, reemplace<guestbook-secret-name>
por el nombre del secreto.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
Almacene el recurso de entrada en un archivo denominado
ing-guestbook-tls.yaml
.Implemente
ing-guestbook-tls.yaml
mediante la ejecución de este comando: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 un nombre de host especificado
También puede especificar el nombre de host en el recurso de entrada para multiplexar las configuraciones y los servicios de TLS. Al especificar un nombre de host, el servicio guestbook
solo está disponible en el host especificado.
Defina el siguiente recurso de entrada. En la sección
secretName
, reemplace<guestbook-secret-name>
por el nombre del secreto. En las seccioneshosts
yhost
, reemplace<guestbook.contoso.com>
por el nombre de host.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 de este comando:kubectl 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.
Integración con otros servicios
Use el siguiente recurso de entrada para agregar rutas de acceso 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