Share via


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.

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.

  1. Download guestbook-all-in-one.yaml a partir daqui
  2. 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 frontendguestbook-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.

  1. Implante ing-guestbook.yaml executando:

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

  1. 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>
    
  2. 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 nome ing-guestbook-tls.yamlde arquivo .

  3. Implante ing-guestbook-tls.yaml executando

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

  1. Defina a seguinte entrada. Na entrada, especifique o nome do segredo na secretName seção e substitua o nome do host na hosts 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
    
  2. Implantar ing-guestbook-tls-sni.yaml executando

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