Expor um serviço AKS sobre HTTP ou HTTPS usando o Application Gateway
Estes tutoriais ajudam a ilustrar o uso dos Recursos de Ingresso do Kubernetes para expor um exemplo de serviço Kubernetes por meio do Gateway de Aplicativo do Azure sobre HTTP ou HTTPS.
Gorjeta
Consulte também O que é o Application Gateway for Containers.
Pré-requisitos
- 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 controlador de entrada do gateway de aplicativo no cluster AKS.
- Implantação de Brownfield: Se você tiver um cluster AKS e um Application Gateway existentes, consulte estas instruções para instalar o controlador de entrada do gateway de aplicativo no cluster AKS.
- Se você quiser usar HTTPS neste aplicativo, você precisa de um certificado x509 e sua chave privada.
Implantar guestbook
aplicativo
O aplicativo de livro de visitas é um aplicativo Kubernetes canônico que compõe 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 nome frontend
na porta 80
. Sem um recurso de entrada do Kubernetes, o serviço não é acessível de fora do cluster AKS. Usamos o aplicativo e configuramos o Ingress Resources para acessar o aplicativo através de HTTP e HTTPS.
Use as instruções a seguir para implantar o aplicativo de livro de visitas.
- Download
guestbook-all-in-one.yaml
a partir daqui - Implante
guestbook-all-in-one.yaml
em seu cluster AKS executando
kubectl apply -f guestbook-all-in-one.yaml
Agora, o guestbook
aplicativo foi implantado.
Expor serviços por HTTP
Para expor o aplicativo de livro de visitas, 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 do Application Gateway.
Salve o recurso de entrada acima como ing-guestbook.yaml
.
Implante
ing-guestbook.yaml
executando:kubectl apply -f ing-guestbook.yaml
Verifique o log do controlador de entrada para obter o status da implantação.
Agora o guestbook
aplicativo deve estar disponível. Você pode verificar a disponibilidade visitando o endereço público do Application Gateway.
Expor serviços por HTTPS
Sem nome de host especificado
Sem especificar o nome do host, o serviço de livro de visitas está disponível em todos os nomes de host que apontam para o gateway do aplicativo.
Antes de implantar a entrada, você precisa criar um segredo do kubernetes para hospedar o certificado e a chave privada. Você pode criar um segredo de kubernetes executando
kubectl create secret tls <guestbook-secret-name> --key <path-to-key> --cert <path-to-cert>
Defina a seguinte entrada. Na entrada, especifique o nome do segredo na
secretName
seção.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
Substitua
<guestbook-secret-name>
no Recurso de Ingresso acima pelo nome do seu segredo. Armazene o recurso de ingresso acima em um nomeing-guestbook-tls.yaml
de arquivo .Implante ing-guestbook-tls.yaml executando
kubectl apply -f ing-guestbook-tls.yaml
Verifique o log do controlador de entrada para obter o status da implantação.
Agora o guestbook
aplicativo está disponível em HTTP e HTTPS.
Com nome de host especificado
Você também pode especificar o nome do host na entrada para multiplexar configurações e serviços TLS. Ao especificar o nome do host, o serviço de livro de visitas só está disponível no host especificado.
Defina a seguinte entrada. Na entrada, especifique o nome do segredo na
secretName
seção e substitua o nome do host nahosts
seção de acordo.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
Implantar
ing-guestbook-tls-sni.yaml
executandokubectl apply -f ing-guestbook-tls-sni.yaml
Verifique o log do controlador de entrada para obter o status da implantação.
Agora o guestbook
aplicativo está disponível em HTTP e HTTPS somente no host especificado (<guestbook.contoso.com>
neste exemplo).
Integrar noutros serviços
A entrada a seguir permite que você adicione outros caminhos a essa entrada e redirecione 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