Como implantar o eShopOnContainers no Azure
Dica
Esse conteúdo é um trecho do livro eletrônico, para Projetar os Aplicativos .NET nativos de nuvem para o Azure, disponível no .NET Docs ou como um PDF para download gratuito que pode ser lido offline.
O aplicativo eShopOnContainers pode ser implantado em várias plataformas do Azure. A abordagem recomendada é implantar o aplicativo no AKS (Serviços de Kubernetes do Azure). O Helm, uma ferramenta de implantação do Kubernetes, está disponível para reduzir a complexidade da implantação. Opcionalmente, os desenvolvedores podem implementar o Azure Dev Spaces para Kubernetes para simplificar seu processo de desenvolvimento.
Serviço de Kubernetes do Azure
Para hospedar o eShop no AKS, a primeira etapa é criar um cluster do AKS. Para fazer isso, você pode usar o portal do Azure, que o orientará pelas etapas necessárias. Você também pode criar um cluster da CLI do Azure, tomando o cuidado de habilitar o RBAC (Controle de Acesso Baseado em Funções) e o roteamento de aplicativos. A documentação do eShopOnContainers detalha as etapas para criar seu próprio cluster do AKS. Depois de criado, você pode acessar e gerenciar o cluster no painel do Kubernetes.
Agora você pode implantar o aplicativo eShop no cluster usando o Helm.
Implantando no Serviço de Kubernetes do Azure usando o Helm
O Helm é uma ferramenta do gerenciador de pacotes de aplicativos que funciona diretamente com o Kubernetes. Ele ajuda você a definir, instalar e atualizar aplicativos Kubernetes. Embora aplicativos simples possam ser implantados no AKS com scripts personalizados da CLI ou arquivos de implantação simples, aplicativos complexos podem conter muitos objetos Kubernetes e se beneficiar do Helm.
Usando o Helm, os aplicativos incluem arquivos de configuração baseados em texto, chamados gráficos Helm, que descrevem declarativamente o aplicativo e a configuração em pacotes Helm. Os gráficos usam arquivos com formato YAML padrão para descrever um conjunto relacionado de recursos do Kubernetes. Eles são versões ao lado do código do aplicativo que descrevem. Os Gráficos Helm variam de simples a complexo, dependendo dos requisitos da instalação que eles descrevem.
O Helm é composto por uma ferramenta de cliente de linha de comando, que consome gráficos Helm e inicia comandos em um componente de servidor chamado Tiller. O Tiller se comunica com a API do Kubernetes para garantir o provisionamento correto das cargas de trabalho em contêineres. O Helm é mantido pela Cloud Native Computing Foundation.
O arquivo yaml a seguir apresenta um modelo do Helm:
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.app.svc.marketing }}
labels:
app: {{ template "marketing-api.name" . }}
chart: {{ template "marketing-api.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: http
protocol: TCP
name: http
selector:
app: {{ template "marketing-api.name" . }}
release: {{ .Release.Name }}
Observe como o modelo descreve um conjunto dinâmico de pares chave/valor. Quando o modelo é invocado, os valores que estão entre chaves são extraídos de outros arquivos de configuração baseados em yaml.
Você encontrará os gráficos Helm do eShopOnContainers na pasta /k8s/helm. A Figura 2-6 mostra como os diferentes componentes do aplicativo são organizados em uma estrutura de pastas usada pelo Helm para definir e gerenciar implantações.
Figura 2-6. A pasta Helm do eShopOnContainers.
Cada componente individual é instalado usando um comando helm install
. O eShop inclui um script "implantar todos" que faz loops e instala os componentes usando seus respectivos gráficos Helm. O resultado é um processo repetível, com versão com o aplicativo no controle do código-fonte, que qualquer pessoa na equipe pode implantar em um cluster do AKS com um comando de script de uma linha.
Observe que a versão 3 do Helm remove oficialmente a necessidade do componente do servidor Tiller. Mais informações sobre esse aprimoramento podem ser encontradas aqui.
Azure Functions e Aplicativos Lógicos (sem servidor)
O exemplo do eShopOnContainers inclui suporte para acompanhamento de campanhas de marketing online. Uma Função do Azure é usada para acompanhar os detalhes da campanha de marketing para uma determinada ID de campanha. Em vez de criar um microsserviço completo, uma única Função do Azure é mais simples e suficiente. O Azure Functions tem um modelo simples de build e implantação, especialmente quando configurado para execução no Kubernetes. A implantação da função é roteada usando modelos ARM (Azure Resource Manager) e a CLI do Azure. Esse serviço de campanha não é voltado para o cliente e invoca uma única operação, tornando-se um ótimo candidato para o Azure Functions. A função requer configuração mínima, incluindo dados de cadeia de conexão de banco de dados e configurações de URI de base de imagem. Configure o Azure Functions no portal do Azure.