Partilhar via


Expor um serviço AKS sobre HTTP ou HTTPS usando o Application Gateway

Este artigo ilustra o uso de recursos de ingressos do Kubernetes para expor um exemplo de serviço do Serviço Kubernetes do Azure (AKS) através do Azure Application Gateway sobre HTTP ou HTTPS.

Gorjeta

Considere o Application Gateway for Containers para sua solução de ingresso do Kubernetes.

Pré-requisitos

  • Um Helm chart instalado ingress-azure
    • Greenfield Implantação: Se estiver a começar 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 Brownfield: Se já tiver um cluster AKS existente e uma implementaçã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:

  1. Faça o download guestbook-all-in-one.yaml nesta página do GitHub.

  2. 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 frontendguestbook-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:

  1. Implante ing-guestbook.yaml executando este comando:

    kubectl apply -f ing-guestbook.yaml
    
  2. 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 através de 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.

  1. 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>
    
  2. Defina o seguinte recurso de entrada. 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
    
  3. Armazene o recurso de entrada em um arquivo chamado ing-guestbook-tls.yaml.

  4. Implante ing-guestbook-tls.yaml executando este comando:

    kubectl apply -f ing-guestbook-tls.yaml
    
  5. 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 ingressão para multiplexar configurações e serviços TLS. Quando você especifica um nome de host, o guestbook serviço está disponível somente no host especificado.

  1. Defina o seguinte recurso de entrada. Na seção secretName, substitua <guestbook-secret-name> pelo nome do seu segredo. Nas secções hosts e host, substitua <guestbook.contoso.com> pelo nome do seu 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
    
  2. Implante ing-guestbook-tls-sni.yaml executando este comando:

    kubectl apply -f ing-guestbook-tls-sni.yaml
    
  3. 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