Expor um serviço AKS sobre HTTP ou HTTPS usando o Application Gateway
Este artigo ilustra o uso de recursos de entrada do Kubernetes para expor um exemplo de serviço do Serviço Kubernetes do Azure (AKS) por meio do Gateway de Aplicativo do Azure sobre HTTP ou HTTPS.
Gorjeta
Considere o Application Gateway for Containers para sua solução de ingresso do Kubernetes.
Pré-requisitos
- Um gráfico de leme instalado
ingress-azure
:- Implantação Greenfield: Se você estiver começando do zero, consulte estas instruções de instalação, que descrevem as etapas para implantar um cluster AKS com o Application Gateway e instalar o Application Gateway Ingress Controller (AGIC) no cluster AKS.
- Implantação de Brownfield: Se você tiver um cluster AKS existente e uma implantação do Application Gateway, consulte estas instruções para instalar o AGIC no cluster AKS.
- Um certificado x509 e sua chave privada, se você quiser usar HTTPS neste aplicativo.
Implantar o aplicativo de livro de visitas
O guestbook
aplicativo é um aplicativo Kubernetes canônico que consiste em um frontend de interface do usuário da Web, um back-end e um banco de dados Redis.
Por padrão, guestbook
expõe seu 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 é acessível de fora do cluster AKS. Você usa o aplicativo e configura recursos de entrada para acessar o aplicativo, por meio de HTTP e HTTPS.
Para implantar o guestbook
aplicativo:
Faça o download
guestbook-all-in-one.yaml
nesta página do GitHub.Implante
guestbook-all-in-one.yaml
em seu cluster AKS executando este comando:kubectl apply -f guestbook-all-in-one.yaml
Expor serviços por HTTP
Para expor o guestbook
aplicativo, 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 frontend
guestbook-all-in-one
serviço da implantação como um back-end padrão da implantação do Application Gateway.
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 log do controlador de entrada para o status da implantação.
Agora o guestbook
aplicativo deve estar disponível. Você pode verificar a disponibilidade visitando o endereço público da implantação do Application Gateway.
Expor serviços por HTTPS
Sem um nome de host especificado
Se você não especificar um nome de host, o guestbook
serviço estará disponível em todos os nomes de host que apontam para a implantação do Application Gateway.
Antes de implantar o recurso de entrada, crie um segredo do 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 o seguinte recurso de entrada.
secretName
Na seção, 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 log do controlador de entrada para o status da implantação.
Agora o guestbook
aplicativo 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 configurações e serviços multiplex TLS. Quando você especifica um nome de host, o guestbook
serviço está disponível somente no host especificado.
Defina o seguinte recurso de entrada.
secretName
Na seção, substitua<guestbook-secret-name>
pelo nome do seu segredo. Nas seções ehost
, substitua<guestbook.contoso.com>
pelo nome dohosts
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 log do controlador de entrada para o status da implantação.
Agora o guestbook
aplicativo está disponível em HTTP e HTTPS, apenas no host especificado.
Integrar noutros 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