Partilhar via


Implantando eShopOnContainers no Azure

Gorjeta

Este conteúdo é um excerto do eBook, Architecting Cloud Native .NET Applications for Azure, disponível no .NET Docs ou como um PDF transferível gratuito que pode ser lido offline.

Cloud Native .NET apps for Azure eBook cover thumbnail.

O aplicativo eShopOnContainers pode ser implantado em várias plataformas do Azure. A abordagem recomendada é implantar o aplicativo no Azure Kubernetes Services (AKS). 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 for Kubernetes para simplificar seu processo de desenvolvimento.

Azure Kubernetes Service

Para hospedar a eShop no AKS, o primeiro passo é criar um cluster 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 a partir da CLI do Azure, tomando cuidado para habilitar o RBAC (Controle de Acesso Baseado em Função) e o roteamento de aplicativos. A documentação do eShopOnContainers detalha as etapas para criar seu próprio cluster AKS. Uma vez criado, você pode acessar e gerenciar o cluster a partir do painel do Kubernetes.

Agora você pode implantar o aplicativo eShop no cluster usando o Helm.

Implantando no Serviço Kubernetes do Azure usando o Helm

Helm é uma ferramenta de gerenciamento de pacotes de aplicativos que trabalha diretamente com o Kubernetes. Ele ajuda você a definir, instalar e atualizar aplicativos Kubernetes. Enquanto aplicativos simples podem ser implantados no AKS com scripts CLI personalizados 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 nos pacotes Helm. Os gráficos usam arquivos padrão formatados em YAML para descrever um conjunto relacionado de recursos do Kubernetes. Eles são versionados junto com o código do aplicativo que descrevem. Os gráficos de leme variam de simples a complexos, dependendo dos requisitos da instalação que descrevem.

O Helm é composto por uma ferramenta de cliente de linha de comando, que consome gráficos de leme e inicia comandos para um componente de servidor chamado Tiller. O Tiller se comunica com a API do Kubernetes para garantir o provisionamento correto de suas cargas de trabalho conteinerizadas. O Helm é mantido pela Cloud-native Computing Foundation.

O seguinte arquivo yaml apresenta um modelo 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 incluídos em chaves são extraídos de outros arquivos de configuração baseados em yaml.

Você encontrará os gráficos de leme 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 leme para definir e gerenciar implantações.

The eShopOnContainers helm folderFigura 2-6. A pasta do leme eShopOnContainers.

Cada componente individual é instalado usando um helm install comando. O eShop inclui um script "deploy all" que percorre e instala os componentes usando seus respetivos gráficos de leme. O resultado é um processo repetível, versionado com o aplicativo no controle do código-fonte, que qualquer pessoa da equipe pode implantar em um cluster AKS com um comando de script de uma linha.

Note que a versão 3 do Helm remove oficialmente a necessidade do componente de servidor Tiller. Mais informações sobre esta melhoria podem ser encontradas aqui.

Azure Functions e Aplicativos Lógicos (sem servidor)

O exemplo eShopOnContainers inclui suporte para rastrear campanhas de marketing on-line. Uma Função do Azure é usada para rastrear 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 de compilação e implantação simples, especialmente quando configurado para ser executado no Kubernetes. A implantação da função é executada por script usando modelos do Azure Resource Manager (ARM) e a CLI do Azure. Este serviço de campanha não é voltado para o cliente e invoca uma única operação, tornando-o 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. Você configura o Azure Functions no portal do Azure.