Criar projetos CNCF com Azure Kubernetes Service

Azure Kubernetes Service (AKS)

Este artigo mostra como conceber, arquitetar, criar e implementar uma aplicação que utiliza projetos da Cloud Native Computing Foundation (CNCF) depois de implementar Azure Kubernetes Service (AKS). A arquitetura descreve a Aplicação CNCF Projects no GitHub. As instruções de configuração no repositório fornecem passos para implementar a arquitetura.

Arquitetura

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

Transfira um ficheiro do Visio desta arquitetura.

A carga de trabalho é uma aplicação Web simples que os funcionários podem utilizar para submeter e ver relatórios de despesas. Quando um funcionário submete um relatório de despesas, o gestor do funcionário recebe um e-mail.

Fluxo de trabalho

Fluxo da aplicação

1. O funcionário acede a uma aplicação Web através da Entrada NGINX para submeter despesas.

2. A aplicação Web chama uma aplicação API para obter o gestor do funcionário.

3. A aplicação Web envia uma mensagem gerada para a criação do relatório de despesas para uma fila NATS.

4. O relatório de despesas é guardado no MySQL.

5. O Conector NATS invoca a função OpenFaaS Email Dispatcher com a mensagem de despesas como payload.

6. Email Dispatcher cria uma mensagem SendGrid.

7. O SendGrid envia um e-mail para o gestor recuperado para revisão.

Fluxo de DevOps

a. Os programadores escrevem ou atualizam o código no Visual Studio Code.

b. Os programadores enviam o código para o GitHub a partir da área de trabalho local no Visual Studio Code.

c. Os pipelines Tekton solicitam o código do GitHub.

d. Os pipelines enviam e extraem uma imagem de contentor a partir de um registo harbor.

e. A Tekton implementa a aplicação Web, a aplicação API e Email aplicações Dispatcher.

f. O Prometheus captura as métricas da aplicação.

exemplo, Os engenheiros monitorizam as métricas num Dashboard do Grafana.

h. Os engenheiros do DevOps monitorizam o Dashboard do Grafana.

Infraestrutura

i. Cluster do AKS baseado na infraestrutura apresentada na linha de base do AKS.

ii. Rook Ceph que é utilizado para o armazenamento de clusters.

iii. Malha de serviço linkerd.

iv. Docker para rastreio geral de aplicações no cluster do Kubernetes.

Operações de cluster

Poderá considerar vantajoso gerir clusters e o arranque do cluster com a gestão do GitOps. O Flux é um operador popular do GitOps. É frequentemente emparelhado com GitHub Actions para ativar a validação em manifestos atualizados e gráficos Helm.

Componentes

Azure

Software open source (OSS)

  • Kubernetes. CNCF. Automatiza a implementação, o dimensionamento e a gestão de aplicações em contentores.
  • A torre. CNCF. Fornece a gestão de armazenamento para os clusters.
  • Porto. CNCF. Registo de contentor para as imagens.
  • NATS. CNCF. Fornece mensagens de publicação/subscrição para mensagens geradas para criar o relatório de despesas.
  • Linkerd. CNCF. Malha de serviço que se integra com OpenFaaS, NGINX, Prometheus e Jaeger.
  • Prometheus. CNCF. Captura as métricas da aplicação.
  • O Desaudo. CNCF. Fornece controlo geral de aplicações no cluster do Kubernetes.
  • OpenFaaS. Utilizado para implementar a função Email Dispatcher.
  • MySQL. Base de dados que armazena os relatórios de despesas.
  • NGINX. Controlador de entrada do Kubernetes que os funcionários utilizam para aceder à aplicação Web para submeter relatórios de despesas.
  • Tekton. Projeto de Fundação de Entrega Contínua que é utilizado para integração contínua/implementação contínua (CI/CD). Implementa a aplicação Web, a aplicação API e Email aplicações Dispatcher.
  • Grafana. Dashboard para métricas de aplicação.
  • SendGrid. Serviço de e-mail externo que envia correio para o gestor para revisão do relatório de despesas.
  • GitHub. Repositório de código. Os pipelines Tekton utilizam o código do GitHub.
  • .NET Core. Utilizado para o front-end web e a API Web.
  • Flux. Fornece gestão do GitOps.

Alternativas

Este projeto utiliza projetos licenciados e incubados do CNCF. Podem existir várias alternativas para os serviços utilizados. Consulte o site CNCF para obter alternativas. Seguem-se alguns recursos que descrevem alguns deles:

Pode considerar vários serviços do Azure como alternativas. Por exemplo, Gateway de Aplicação Controlador de Entrada, Azure Container Registry e Azure Monitor.

A Microsoft também suporta projetos OSS, incluindo o Open Service Mesh.

Detalhes do cenário

Pode implementar esta arquitetura em qualquer cluster do Kubernetes e não apenas no AKS. Fornece um exemplo da flexibilidade da plataforma AKS. O AKS facilita a implementação de um cluster do Kubernetes gerido no Azure.

Depois de rever este artigo, terá uma boa compreensão de como implementar uma aplicação típica composta maioritariamente por projetos CNCF.

Potenciais casos de utilização

Estes outros casos de utilização têm padrões de design semelhantes:

  • Criar um pipeline CI/CD para cargas de trabalho baseadas em contentores
  • Utilizar o GitOps para O AKS

Considerações

Estas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios orientadores que podem ser utilizados para melhorar a qualidade de uma carga de trabalho. Para obter mais informações, veja Microsoft Azure Well-Architected Framework.

  • Para o cluster do Kubernetes, precisa de, pelo menos, um conjunto de nós de utilizador de 3 nós com sKU de máquina virtual (VM) DS2_v2 ou maior.
  • Os volumes que utilizam discos geridos do Azure não podem ser anexados entre zonas. Têm de estar localizados na mesma zona.
  • A instalação do Rook pode demorar entre 20 e 25 minutos. Certifique-se de que o cluster ceph está completamente aprovisionado antes de avançar para o passo seguinte.
  • A configuração do Jaeger demora cerca de 5 minutos.
  • O Linkerd demora cerca de 12 minutos a aparecer no dashboard.

Otimização de custos

A otimização de custos consiste em analisar formas de reduzir as despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, veja Descrição geral do pilar de otimização de custos.

Pode utilizar a calculadora de preços do Azure para estimar os custos. Seguem-se algumas considerações de preços para a execução deste projeto no Azure. Aplica-se um custo de largura de banda insignificante.

Conjuntos de Dimensionamento de Máquinas Virtuais

As VMs utilizadas no Azure Conjuntos de Dimensionamento de Máquinas Virtuais para o cluster do AKS incorrem num custo. Para obter mais informações, veja Conjuntos de Dimensionamento de Máquinas Virtuais preços.

Armazenamento

Os custos de armazenamento aplicam-se a cada disco de dados que é necessário para a instalação do Rook. Para este cluster do AKS de 3 nós, a configuração do Rook utiliza dois discos de dados por nó: um disco de 1 GB e um disco de 200 GB. Para obter mais informações, veja Preços de custos de armazenamento.

Balanceador de carga

O balanceador de carga associado a este cluster do AKS implica um custo. Para obter mais informações, veja Balanceador de Carga preços.

Rede virtual

A rede virtual utilizada pelo cluster do AKS implica um custo. Para obter mais informações, veja Rede Virtual preços.

Implementar este cenário

Implemente este cenário a partir do repositório gitHub do Azure/cloud-native-app . Siga as instruções de configuração na sequência fornecida para implementar a Aplicação de Projetos CNCF no seu ambiente.

Este repositório é um projeto de comunidade. Aceita e aprova pedidos Pull (PRs) para melhoramentos e modificações da comunidade.

Passos seguintes