Editar

Compartilhar via


Criar projetos da CNCF usando o Serviço de Kubernetes do Azure

AKS (Serviço de Kubernetes do Azure)

Este artigo mostra como conceituar, arquitetar, criar e implantar um aplicativo que usa projetos da CNCF (Cloud Native Computing Foundation) depois de implantar o AKs (Serviço de Kubernetes do Azure). A arquitetura descreve o Aplicativo de Projetos da CNCF em GitHub. As instruções de instalação no repositório fornecem etapas para implantar a arquitetura.

Arquitetura

Diagrama de arquitetura que mostra a arquitetura de referência para a criação de um projeto CNCF.

Baixe um Arquivo Visio dessa arquitetura.

A carga de trabalho é um aplicativo Web simples que os funcionários podem usar para enviar e exibir relatórios de despesas. Quando um funcionário envia um relatório de despesas, o gerente do funcionário recebe um email.

Workflow

Fluxo do aplicativo

1. o funcionário acessa um aplicativo Web por meio do NGINX Ingress para enviar despesas.

2. o aplicativo Web chama um aplicativo de API para recuperar o gerente do funcionário.

3. O aplicativo web envia uma mensagem gerada para a criação do relatório de despesas para um corretor Knative.

4. o relatório de despesas é salvo no MySQL.

5. Knative aciona a função Email Dispatcher com a mensagem de despesa como a carga útil.

6. o Dispatcher de email cria uma mensagem SendGrid.

7. o SendGrid envia um email para o gerenciador recuperado para revisão.

fluxo de DevOps

a. Os desenvolvedores gravam ou atualizam o código em Visual Studio Code.

b. Os desenvolvedores enviam por push o código para GitHub de seu espaço de trabalho local no Visual Studio Code.

c. O Webhook do GitHub aciona pipelines do Tekton que clonam o código do GitHub.

d. Os pipelines são construídos e enviados por push e as imagens do contêiner para um registro do Harbor.

e. O tekton implanta o aplicativo Web, o aplicativo de API e os aplicativos do Dispatcher de email.

f. O Prometheus captura métricas de aplicativo.

g. Os engenheiros monitoram as métricas em um painel do Grafana.

.h Os engenheiros de DevOps monitoram o painel do Grafana.

Infraestrutura

i. O cluster de AKS que se baseia na infraestrutura apresentada na linha de base AKS.

ii. Rook Ceph usado para armazenamento de cluster.

III. Malha de serviço Linkerd.

iv. Jaeger para rastreamento de aplicativo geral no cluster de Kubernetes.

Operações de cluster

Talvez você ache benéfico gerenciar clusters e a inicialização do cluster usando o gerenciamento de GitOps. O fluxo é um operador GitOps popular. Com frequência, ele é emparelhado com GitHub Actions para habilitar a validação em manifestos atualizados e gráficos de Helm.

Componentes

Azure

Software livre

  • Kubernetes. CNCF. Automatiza a implantação, o dimensionamento e o gerenciamento de aplicativos em contêineres.
  • Flux. CNCF. Provedor de GitOps para entrega de infraestrutura.
  • Torre. CNCF. Fornece gerenciamento de armazenamento para os clusters.
  • Harbor. CNCF. Registro de Contêiner para as imagens.
  • Linkerd. CNCF. Malha de serviço que se integra com OpenFaaS, NGINX, Prometheus e Jaeger.
  • Prometheus. CNCF. Captura métricas de aplicativo.
  • Jaeger. CNCF. Fornece rastreamento de aplicativo geral no cluster de Kubernetes.
  • Knative. CNCF. Usado para criar aplicativos sem servidor e orientados a eventos. Implanta a função de Dispatcher de email.
  • MySQL. Banco de dados que armazena os relatórios de despesas.
  • NGINX Controlador de entrada do Kubernetes que os funcionários usam para acessar o aplicativo Web para enviar relatórios de despesas.
  • Tekton. Projeto de base de entrega contínua usado para integração contínua/implantação contínua (CI/CD). Implanta o aplicativo Web, o aplicativo de API e os aplicativos do Dispatcher de email.
  • Grafana. Painel para métricas de aplicativo.
  • SendGrid. Serviço de email externo que envia mensagens para o gerente para revisão do relatório de despesas.
  • GitHub. Repositório de códigos. Os pipelines do Tekton usam código do GitHub.
  • .NET Core. Usado para o front-end da Web e a API Web.
  • Flux. Fornece gerenciamento de GitOps.

Alternativas

Este projeto utiliza projetos formados e incubados da CNCF. Pode haver várias alternativas para os serviços usados. Consulte o site da CNCF para obter alternativas. Aqui estão alguns recursos que descrevem alguns deles:

Você pode considerar vários serviços do Azure como alternativas. Por exemplo, Roteamento de Aplicativo Web, Registro de Contêiner do Azure, Armazenamento de Contêiner do Azure, Azure Monitor, serviço gerenciado do Azure Monitor para Prometheus, Azure Managed Grafana.

A Microsoft também suporta projetos de software de código aberto como Managed Addons/Derived projects no AKS, incluindo NGINX, Istio, Prometheus, Grafana e OpenEBS.

Detalhes do cenário

É possível implantar essa arquitetura em qualquer cluster do Kubernetes, não apenas do AKS. Ele fornece um exemplo da flexibilidade da plataforma de AKS. O AKS simplifica a implantação de um cluster do Kubernetes gerenciado no Azure.

Depois de examinar este artigo, você terá uma boa compreensão de como implantar um aplicativo típico que é criado principalmente em projetos da CNCF.

Possíveis casos de uso

Estes outros casos de uso têm padrões de design semelhante:

  • Criando um pipeline de CI/CD para cargas de trabalho baseadas em contêiner
  • Usando GitOps para AKS

Considerações

Estas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios de orientação que podem ser usados para aprimorar a qualidade de uma carga de trabalho. Para obter mais informações, consulte Microsoft Azure Well-Architected Framework.

  • Para o cluster de Kubernetes, você precisa de pelo menos um pool de nós de usuário de três nós com SKU de máquina virtual (VM) DS2_v2 ou maior.
  • Volumes que usam o disco gerenciado do Azure não podem ser anexados entre zonas. Eles devem estar localizados na mesma zona.
  • A instalação de torre pode levar entre 20 e 25 minutos. Certifique-se de que o cluster de Ceph seja totalmente provisionado antes de passar para a próxima etapa.
  • A configuração do Jaeger leva cerca de 5 minutos.
  • Leva cerca de 12 minutos para que o Linkerd apareça no painel.

Otimização de custo

A otimização de custos é a análise de maneiras de reduzir as despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, confira Visão geral do pilar de otimização de custo.

É possível usar a Calculadora de Preços do Azure para estimar os custos. A seguir estão algumas considerações sobre preços para executar este projeto no Azure. Um custo de largura de banda insignificante se aplica.

Conjuntos de Dimensionamento de Máquinas Virtuais

As VMs que são usadas em Conjuntos de Dimensionamento de Máquinas Virtuais do Microsoft Azure para o cluster de AKS incorrem em um encargo. Para obter mais informações, confira Preços dos Conjuntos de Dimensionamento de Máquinas Virtuais do Microsoft Azure.

Armazenamento

Armazenamento os custos se aplicam a cada disco de dados exigido pela instalação de torre. Para este cluster de AKS de três nós, a configuração de torre usa dois discos de dados por nó: um disco de 1 GB e um disco de 200 GB. Para obter mais informações, consulte Preços de custo de armazenamento.

Balanceador de carga

O balanceador de carga associado a esse cluster de AKS incorre em um encargo. Para saber mais, confira Preços do Load Balancer.

Rede virtual

A rede virtual usada pelo cluster de AKS incorre em um encargo. Para saber mais, confira Preços de rede virtual.

Implantar este cenário

Implante esse cenário do repositório do GitHub do Azure/cloud-native-app. Siga as instruções de instalação na sequência fornecida para implantar o aplicativo de projetos da CNCF em seu ambiente.

Este repositório é um projeto da Comunidade. Ele aceita e aprova PRs (solicitações de pull) para aprimoramentos e modificações da comunidade.

Próximas etapas