Expor um serviço do AKS por HTTP ou HTTPS usando o Gateway de Aplicativo
Este artigo ajuda a ilustrar o uso de Recursos de entrada do Kubernetes para expor um Serviço de Kubernetes do Azure (AKS) de exemplo por meio do Gateway de Aplicativo do Azure via HTTP ou HTTPS.
Dica
Considere o Gateway de Aplicativos para Contêineres para sua solução de entrada do Kubernetes.
Pré-requisitos
- Um gráfico Helm
ingress-azure
instalado:- Implantação Greenfield: se você estiver começando do zero, confira estas instruções de instalação, que descrevem as etapas para implantar um cluster do AKS com o Gateway de Aplicativo e instalar o Controlador de Entrada do Gateway de Aplicativo (AGIC) no cluster do AKS.
- Implantação Brownfield: se você tiver uma implantação do cluster do AKS e um Gateway de Aplicativo existente, confira estas instruções para instalar o AGIC no cluster do AKS.
- Se você quiser usar HTTPS neste aplicativo, será necessário um certificado x509 e a respectiva chave privada.
Implantar o aplicativo de página de recados
O aplicativo guestbook
é um aplicativo Kubernetes canônico que consiste no front-end de uma interface do usuário da Web, um back-end e um banco de dados Redis.
Por padrão, o guestbook
expõe o aplicativo por meio de um serviço com o nome frontend
na porta 80
. Sem um Recurso de Entrada do Kubernetes, o serviço não pode ser acessado de fora do cluster do AKS. Você usa o aplicativo e configuramos os recursos de entrada para acessar o aplicativo por meio de HTTP e HTTPS.
Para implantar o aplicativo guestbook
:
Baixe
guestbook-all-in-one.yaml
nesta página do GitHub.Implante o
guestbook-all-in-one.yaml
em seu cluster do AKS executando este comando:kubectl apply -f guestbook-all-in-one.yaml
Expor serviços via HTTP
Para expor o aplicativo guestbook
, use o seguinte 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
Essa entrada expõe o serviço frontend
da implantação guestbook-all-in-one
como um back-end padrão da implantação do Gateway de Aplicativo.
Salve o recurso de entrada anterior como ing-guestbook.yaml
:
Implante
ing-guestbook.yaml
executando este comando:kubectl apply -f ing-guestbook.yaml
Verifique o status da implantação no log do controlador de entrada.
Agora o aplicativo guestbook
deve estar disponível. Você pode verificar a disponibilidade visitando o endereço público da implantação do Gateway de Aplicativo.
Expor serviços via HTTPS
Sem um nome de host especificado
Se você não especificar um nome de host, o serviço guestbook
estará disponível em todos os nomes de host que apontam para a implantação do Gateway de Aplicativo.
Antes de você implantar o recurso de entrada, criar um segredo de Kubernetes para hospedar o certificado e a chave privada:
kubectl create secret tls <guestbook-secret-name> --key <path-to-key> --cert <path-to-cert>
Defina a entrada o recurso de entrada a seguir. Na seção
secretName
, substitua<guestbook-secret-name>
pelo nome do seu segredo.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
Armazene o recurso de entrada em um arquivo chamado
ing-guestbook-tls.yaml
.Implante
ing-guestbook-tls.yaml
executando este comando:kubectl apply -f ing-guestbook-tls.yaml
Verifique o status da implantação no log do controlador de entrada.
Agora o aplicativo guestbook
está disponível em HTTP e HTTPS.
Com um nome de host especificado
Você também pode especificar o nome do host no recurso de entrada para multiplexar configurações e serviços TLS. Quando você especifica um nome de host, o serviço guestbook
está disponível apenas no host especificado.
Defina a entrada o recurso de entrada a seguir. Na seção
secretName
, substitua<guestbook-secret-name>
pelo nome do seu segredo. Nas seçõeshosts
ehost
, substitua<guestbook.contoso.com>
pelo nome do 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
Implante
ing-guestbook-tls-sni.yaml
executando este comando:kubectl apply -f ing-guestbook-tls-sni.yaml
Verifique o status da implantação no log do controlador de entrada.
Agora o aplicativo guestbook
está disponível em HTTP e HTTPS somente no host especificado.
Integrar com outros serviços
Use o seguinte recurso de entrada para adicionar caminhos e redirecionar esses caminhos para outros serviços:
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