HomePtNotíciaComo configurar um controlador de entrada NGINX no DigitalOcean Kubernetes

Como configurar um controlador de entrada NGINX no DigitalOcean Kubernetes

- Advertisement -


O serviço Managed Kubernetes da DigitalOcean simplifica o provisionamento e a manutenção de clusters Kubernetes. A plataforma fornece uma base pronta para uso para cargas de trabalho em contêiner com suporte de um clique para aplicativos complementares comuns.

Neste artigo, mostraremos como usar um desses plug-ins para configurar um NGINX Ingress Controller em seu cluster. O Ingress fornece um mecanismo para rotear o tráfego externo para seus serviços com base em regras como nome do host, caminho e cabeçalhos. O NGINX Ingress é um dos controladores de entrada mais populares; usa o servidor web NGINX como um proxy reverso direcionando o tráfego de entrada para o serviço Kubernetes correto.

Iniciando

Você deve criar um cluster Kubernetes em sua conta DigitalOcean antes de seguir este tutorial. Também presumiremos que você esteja familiarizado com os conceitos básicos de uso do Kubernetes, Kubectl e o DigitalOcean Cloud Dashboard.

Imagem de clusters do Kubernetes no painel da DigitalOcean

Comece fazendo login no painel da DigitalOcean, clicando no link “Kubernetes” na barra lateral esquerda e selecionando seu pool na página exibida. Em seguida, clique na guia “Mercado” para ver a lista de aplicativos de 1 clique disponíveis.

O que são aplicativos de 1 clique?

Os aplicativos Kubernetes 1-Click da DigitalOcean fornecem instalações pré-configuradas para aplicativos clusterizados populares. Os aplicativos são testados pela DigitalOcean, para que funcionem com todas as versões disponíveis do Kubernetes.

Os aplicativos disponíveis usam a tabela oficial do Helm de seu provedor. Os gráficos são estendidos com configurações padrão fornecidas pela DigitalOcean em um repositório GitHub de código aberto. O Painel de Controle da DigitalOcean permite que você instale os gráficos disponíveis com um único clique, fornecendo uma maneira fácil de começar com os utilitários essenciais. Você não precisa instalar manualmente o Helm ou configurar repositórios de gráficos.

Instalando o NGINX Ingress com o aplicativo de 1 clique

Agora você pode usar essa técnica para adicionar o NGINX Ingress ao seu cluster. Encontre o aplicativo no mercado rolando para baixo na lista ou usando a barra de pesquisa. Clique no botão azul “Instalar” no cartão do aplicativo e aceite a mensagem de confirmação.

O procedimento de instalação pode levar vários minutos para ser concluído. O progresso será exibido na interface do usuário da web. Um novo balanceador de carga será adicionado automaticamente à sua conta durante o processo de configuração do aplicativo. Esse balanceador de carga será cobrado na taxa padrão e deve ser usado como um ponto de entrada externo para seu cluster.

Seu Ingress Controller estará pronto para uso após a conclusão da instalação. Como o aplicativo de 1 clique é baseado em um gráfico de leme, você pode verificar se o aplicativo foi adicionado listando os lançamentos de leme em seu grupo:

$ helm list --all-namespaces
NAME                    NAMESPACE               REVISION  UPDATED                                 STATUS    CHART                       APP VERSION 
ingress-nginx           ingress-nginx           1         2022-05-30 14:46:37.591626084 +0000 UTC deployed  ingress-nginx-4.1.0-beta.1  1.2.0-beta.1

a ingress-nginx lançamento foi adicionado pela DigitalOcean. É mostrado como deployed para que você possa começar a criar recursos do Ingress para rotear o tráfego para seus serviços.

Usando seu driver de login

Você pode testar seu controlador de entrada criando recursos simples de entrada, serviço e implantação do Kubernetes:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo-app
  template:
    metadata:
      labels:
        app: demo-app
    spec:
      containers:
      - name: demo-container
        image: httpd:latest
        ports:
          - containerPort: 80
 
---

apiVersion: v1
kind: Service
metadata:
  name: demo-service
spec:
  selector:
    app: demo-app
  ports:
    - port: 80
 
---

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: demo-ingress
spec:
  ingressClassName: nginx
  rules:
    - host: example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: demo-service
                port:
                  number: 80

Aplique este manifesto ao seu cluster usando o Kubectl:

$ kubectl apply -f app.yaml

a spec.ingressClassName: nginx O campo no recurso de login significa que ele será registrado com o driver de login NGINX recém-instalado. Cada implementação de driver tem seu próprio nome de classe para que você possa usar vários drivers em um cluster.

Em seguida, configure um registro DNS para example.com que aponta para o endereço IP externo do seu balanceador de carga da DigitalOcean. Você pode encontrar isso navegando até Networking > Load Balancers no painel de controle online ou executando o seguinte comando Kubectl:

$ kubectl get service ingress-nginx-controller --namespace=ingress-nginx
NAME                       TYPE           CLUSTER-IP       EXTERNAL-IP    PORT(S)                      AGE
ingress-nginx-controller   LoadBalancer   XXX.XXX.XXX.XXX  1.2.3.4        80:30547/TCP,443:32027/TCP   1d

visitando example.com ele deve exibir a página web padrão do Apache assim que a alteração de DNS entrar em vigor. Seu controlador de entrada recebe a solicitação do balanceador de carga. Usa seus recursos do Ingress para selecionar um serviço adequado, que faz solicitações example.com para encerrar seus contêineres Apache.

Agora você pode seguir a documentação do Kubernetes para criar recursos do Ingress que expressam as regras de roteamento de serviço necessárias para seus aplicativos reais.

Adicionar HTTPS

Os endpoints em clusters de produção devem ser protegidos com TLS. Você pode configurar certificados HTTPS automatizados adicionando o Cert-Manager ao seu cluster, juntamente com o NGINX Ingress Controller.

O Cert-Manager está disponível como um aplicativo complementar de 1 clique no DigitalOcean Marketplace. Você pode repetir o procedimento usado acima: vá para a página de visão geral do seu cluster no painel de controle, clique na guia “Mercado” e localize e instale o aplicativo.

Após a conclusão da instalação, crie um emissor de certificado que será usado para solicitar certificados da Let’s Encrypt:

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-staging
spec:
  acme:
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    email: [email protected]
    privateKeySecretRef:
      name: letsencrypt-staging
    solvers:
      - http01:
          ingress:
            class: nginx

Mudar o spec.acme.email para seu próprio endereço de e-mail para que a Let’s Encrypt possa contatá-lo com notificações sobre seus certificados. Em seguida, aplique o manifesto ao seu cluster:

$ kubectl apply -f issuer.yml

Agora você pode atualizar seu recurso Ingress com suporte a HTTPS:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: demo-ingress
  annotations:
    kubernetes.io/ingress.class: ingress
    cert-manager.io/cluster-issuer: letsencrypt-staging
spec:
  ingressClassName: nginx
  rules:
    - host: example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: demo-service
                port:
                  number: 80
  tls:
    - hosts:
       - example.com

O novo spec.tls O campo especifica que um certificado deve ser adquirido para o example.com domínio. a letsencrypt-staging será utilizado o emissor do certificado, conforme definido pelo cert-manager.io/cluster-issuer anotação.

O exemplo mostrado acima usa o endpoint de teste Let’s Encrypt, que é recomendado à medida que você testa sua implementação. Você pode alternar para o uso de certificados reais criando um segundo emissor que tenha como alvo seus endpoints de produção. Copie o manifesto do emissor acima, substitua letsencrypt-staging com letsencrypt-productione mude o spec.acme.server URL para https://acme-v02.api.letsencrypt.org/directory. Você pode atualizar seu recurso Ingress cert-manager.io/cluster-issuer anotação para referenciar seu novo letsencrypt-production editor.

Gerencie sua instalação de login do NGINX

Infelizmente, os aplicativos de 1 clique da DigitalOcean apenas simplificam a experiência de instalação. Você está por conta própria quando se trata de gerenciar e atualizar seus aplicativos. Como os aplicativos são simplesmente gráficos Helm pré-configurados, isso não é tão oneroso quanto parece.

Você pode usar sua instalação local do Helm CLI para atualizar para novas versões do NGINX Ingress:

$ helm upgrade ingress-nginx ingress-nginx/ingress-nginx 
  --namespace ingress-nginx
  --values values.yml

você deve baixar o values.yml primeiro arquivar do repositório do DigitalOcean Marketplace. Isso garantirá que a nova versão seja configurada com as configurações existentes. Você também pode usar este procedimento para personalizar seu controlador Ingress com suas próprias configurações após a instalação inicial. Modifique o values.yml arquivo e, em seguida, execute o helm upgrade domínio.

Remova a entrada NGINX do seu cluster

Você pode remover completamente o NGINX Ingress do seu cluster desinstalando a versão Helm do aplicativo e removendo o namespace que foi criado:

$ helm uninstall ingress-nginx --namespace ingress-nginx
$ kubectl delete namespace ingress-nginx

imagem da remoção de um balanceador de carga da DigitalOcean

O balanceador de carga deve se limpar automaticamente. Você pode removê-lo manualmente da página Networking > Load Balancers no painel da DigitalOcean, se necessário. Clique no botão “Mais” ao lado do balanceador de carga e escolha “Destruir” no menu suspenso. Você não poderá recuperar o endereço IP que lhe foi atribuído.

Instalando o NGINX Ingress com o Docl

Você pode instalar aplicativos de 1 clique com o cliente de linha de comando Doctl da DigitalOcean. Comece recuperando a lista de seus clusters do Kubernetes:

$ doctl kubernetes cluster list
ID                                      Name        Region    Version        Auto Upgrade    Status     Node Pools
946407f3-abcd-123a-456b-6a0ec60f93bf    demo-k8s    lon1      1.22.8-do.1    false           running    demo-k8s-1

Em seguida, execute o seguinte comando para adicionar o NGINX Ingress ao seu cluster. Substituir <cluster-id> com o ID mostrado acima.

$ doctl kubernetes 1-click install <cluster-id> 
  --1-clicks ingress-nginx

Use esta alternativa se você também quiser instalar o Cert-Manager:

$ doctl kubernetes 1-click install <cluster-id> 
  --1-clicks ingress-nginx,cert-manager

Além de usar o Doctl, você também pode interagir diretamente com a API da DigitalOcean para adicionar novos aplicativos programaticamente ao seu cluster.

Resumo

Você pode adicionar rapidamente o NGINX Ingress Controller a um cluster DigitalOcean Kubernetes usando o aplicativo 1-Click disponível no Marketplace. Isso implanta uma versão pré-configurada do gráfico NGINX Ingress Helm com uma configuração pronta para uso.

Embora isso acelere o provisionamento inicial, você ainda precisa executar manualmente os comandos do Helm para gerenciar e atualizar sua instalação. O aplicativo 1-Click visa encontrar um equilíbrio entre facilidade de uso e personalização, garantindo que você não fique limitado a um conjunto específico de parâmetros.

- Advertisement -
- Advertisement -
Stay Connected
16,985FansLike
2,458FollowersFollow
61,453SubscribersSubscribe
Must Read
- Advertisement -
Related News
- Advertisement -
%d bloggers like this: