Partilhar via


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:

  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 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:

  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 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.

  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. 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
    
  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 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.

  1. Defina o seguinte recurso de entrada. secretName Na seção, substitua <guestbook-secret-name> pelo nome do seu segredo. Nas seções e host , substitua <guestbook.contoso.com> pelo nome do hosts 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