Recomendações para habilitar a automação
Aplica-se a esta recomendação de lista de verificação do Azure Well-Architected Framework Operation Excellence:
OE:10 | Projete e implemente a automação antecipadamente para operações como questões de ciclo de vida, inicialização e aplicação de grades de proteção de governança e conformidade. Não tente adaptar a automação mais tarde. Escolha os recursos de automação que sua plataforma oferece. |
---|
Este guia descreve as recomendações para projetar e implementar sua carga de trabalho para habilitar a automação. Projete sua carga de trabalho com a automação em mente para garantir que tarefas rotineiras, como provisionamento de recursos, dimensionamento e implantações, sejam executadas de forma rápida e confiável. A automação simplifica as tarefas de manutenção e permite que você atualize, corrija e atualize seus sistemas com mais eficiência.
Principais estratégias de design
Projetar componentes de carga de trabalho para dar suporte à automação
Você pode projetar sua carga de trabalho para dar suporte à automação desde a fase de ideação até a fase de melhoria contínua. Primeiro, considere como você deseja aplicar a automação em sua carga de trabalho para ajudar a garantir que você esteja colocando as peças necessárias no lugar. Pense em sua carga de trabalho em termos dos pilares do Well-Architected Framework para ajudar a planejar os tipos de automação que você usará. Você pode automatizar muitas funções de segurança, confiabilidade, desempenho, operações e controle de custos.
Projete com a automação em mente para minimizar a refatoração depois que sua carga de trabalho estiver em execução. Considere seus requisitos de carga de trabalho ao decidir quais ferramentas de automação usar. Pode haver ferramentas de automação prontas para uso com as quais sua equipe já está familiarizada. A adoção dessas ferramentas pode facilitar o caminho para automatizar sua carga de trabalho, mas esteja ciente de suas limitações e compatibilidade com sua plataforma de nuvem. Por exemplo, algumas ferramentas de automação podem se integrar bem às ferramentas da CLI do Azure, enquanto outras podem exigir interfaces REST. Sempre investigue as ferramentas que sua plataforma de nuvem fornece para garantir que elas sejam compatíveis e forneçam a funcionalidade necessária. Exemplos de maneiras de planejar proativamente a automação incluem:
Implantação: automatize suas implantações de aplicativos e infraestrutura para garantir um padrão previsível. Planeje a implantação automatizada desenvolvendo padrões de implantação, treinando sua equipe nas ferramentas que você usará e implementando a infraestrutura necessária.
Validação: valide automaticamente os requisitos de conformidade em relação à sua carga de trabalho usando ferramentas de orquestração ou política. Identifique a ferramenta de validação apropriada para sua carga de trabalho e planeje implementar os sistemas necessários, por exemplo, servidores de orquestração.
Escalabilidade automática: use a escalabilidade automática em toda a sua infraestrutura para ajudá-lo a atingir seus requisitos de confiabilidade e desempenho. Você deve alocar espaço de endereço IP e sub-redes em sua carga de trabalho com antecedência para contabilizar as operações de dimensionamento, além de planejar a redundância e o crescimento natural.
Compensação: ao projetar sua carga de trabalho para habilitar a automação, considere o grau de controle que você deseja manter versus a eficiência que você pode obter com a automação. Em alguns casos, sua carga de trabalho pode não estar madura o suficiente para automatizar algumas funções ou você pode precisar de um nível de flexibilidade que a automação não oferece.
Considere também o conjunto de habilidades de sua equipe ao projetar sua carga de trabalho. Se um alto grau de automação exigir ferramentas que sua equipe não está equipada para suportar, talvez seja necessário usar um design menos abrangente como uma etapa intermediária.
Revisite o design de automação durante o ciclo de vida
Depois que sua carga de trabalho estiver em execução na nuvem, é importante priorizar a melhoria contínua. Observe sua carga de trabalho em ação, analise os padrões de uso e analise o comportamento do cliente relacionado à sua carga de trabalho para identificar áreas em que você pode melhorar a automação. Procure maneiras de aprimorar a automação existente ou introduzir novas automações para melhorar a experiência do cliente. Por exemplo, você pode ter o dimensionamento automatizado habilitado, mas o aumento da carga de trabalho é de curta duração. Você pode integrar a automação de redução horizontal para diminuir o uso da CPU quando a carga cair abaixo do limite.
As seções a seguir deste guia oferecem recomendações sobre áreas específicas de automação que podem ajudá-lo no design e na implementação da carga de trabalho.
Automatize a inicialização
Inicialização refere-se às atualizações de configuração para um recurso que deve ser feito após o provisionamento, mas antes que ele esteja disponível como parte do pool de cargas de trabalho. A inicialização geralmente é associada a VMs (máquinas virtuais), mas muitos outros recursos devem ser configurados como parte do processo de implantação, incluindo tecnologias de PaaS (plataforma como serviço) e tecnologias de hospedagem de contêiner, como o AKS (Serviço de Kubernetes do Azure).
Sua plataforma de nuvem pode fornecer soluções de bootstrapping para você, que você deve usar sempre que possível. Por exemplo, você pode usar extensões de VM no Azure para fazer alterações de configuração predefinidas durante o processo de implantação e personalizar suas alterações de configuração injetando scripts do PowerShell.
Incorpore a automação ao gerenciamento de acesso
Leve a automação em consideração ao projetar sua estratégia de autenticação e autorização. É importante manter o mais alto nível de segurança nas cargas de trabalho de produção, mas isso pode afetar a automação. Por exemplo, o uso de autenticação biométrica ou multifator adiciona complexidade que deve ser considerada em seu projeto de automação. Use contas seguras e não humanas para autenticação automatizada, como identidades gerenciadas, identidades de carga de trabalho ou certificados. Certifique-se de ter incluído o gerenciamento de segredos e chaves em sua automação para aumentar a segurança da autenticação.
Dimensione a variabilidade em sua carga de trabalho
Evite implantar desnecessariamente uma nova infraestrutura quando pequenas alterações forem feitas, criando flexibilidade em seus artefatos. Por exemplo, em vez de reimplantar sua infraestrutura quando um sinalizador de recurso é alterado, você pode usar parâmetros definidos para atualizar componentes como configurações de aplicativos. Certifique-se de definir e documentar claramente como a variabilidade é usada para evitar o uso excessivo e o desvio de configuração.
Criar um plano de controle
Um plano de controle é o sistema de back-end ou conjunto de ferramentas que você usa para gerenciar o aplicativo e suas dependências por meio de uma interface unificada. Crie seu plano de controle como uma interface REST, CLI ou webhook para dar suporte à automação por ferramentas externas.
Exponha as operações de manutenção por meio do plano de controle que permitem coordenar os componentes da carga de trabalho, por exemplo, backup e restauração ordenados, inicialização, configuração, importação/exportação e operações em lote. Tenha cuidado para escolher o nível certo de granularidade ao decidir as operações a serem expostas por meio do plano de controle.
Adote uma abordagem orientada por dados para desenvolver a automação
Desenvolva uma estratégia de monitoramento para capturar métricas que impulsionem o tipo de automação necessária. Use o registro estruturado e as métricas personalizadas para fornecer as informações exigidas pela automação em um formato fácil de reconhecer com ferramentas de automação. As métricas capturadas devem ser combinadas com limites definidos no sistema de monitoramento que acionam alertas e ações automatizadas, como notificações ou mecanismos de autocorreção, quando apropriado. Para obter mais informações, consulte Recomendações para autocorreção e autopreservação.
Automatize eventos do ciclo de vida do usuário
Projete seu aplicativo e infraestrutura para permitir a integração e o desligamento automatizados de usuários, para indivíduos ou clientes multilocatários. Planeje atualizações automatizadas de banco de dados por meio de scripts, provisionamento e desprovisionamento de infraestrutura e gerenciamento de credenciais e segredos.
Automatize a configuração do estado desejado
Como parte do gerenciamento contínuo da carga de trabalho, você pode automatizar a DSC (Configuração de Estado Desejado) em seus recursos para ajudar a garantir que eles atendam aos requisitos de conformidade e de negócios. A automação DSC ajuda a garantir que o descompasso de configuração seja detectado e corrigido rapidamente. Você pode automatizar a DSC usando ferramentas de orquestração ou ferramentas de gerenciamento de políticas. Pense em ferramentas de orquestração, como serviços do Azure DevOps ou Jenkins, como mecanismos baseados em push. As ferramentas de orquestração permitem que as atualizações de configuração sejam enviadas por meio de um evento de fluxo de trabalho, como uma implantação manual ou automatizada. Essas atualizações são executadas como parte de uma sequência de tarefas definida no script de implantação. As ferramentas de gerenciamento de políticas usam mecanismos baseados em pull, o que significa que um sistema é executado no nível fundamental de sua carga de trabalho que sonda periodicamente a carga de trabalho para verificar seu estado em relação ao DSC definido. Se a sondagem identificar um desalinhamento ou desvio de configuração, a ferramenta tomará uma ação corretiva. Considere os seguintes fatores ao decidir entre ferramentas de orquestração e gerenciamento de políticas:
As ferramentas de orquestração não têm recursos internos para sondar proativamente sua carga de trabalho em busca de descompasso de configuração. As ferramentas de orquestração devem ser integradas ao pipeline de CI/CD (integração contínua e entrega contínua) para manter um padrão de implantação e gerenciamento de infraestrutura como código (IaC). Uma vantagem de usar ferramentas de orquestração é que os recursos são sempre totalmente configurados quando implantados.
As ferramentas de gerenciamento de políticas permitem definir políticas que afetam um ou mais grupos de recursos. Essas políticas são impostas quando o recurso faz check-in com o sistema de gerenciamento de políticas. Uma vantagem de usar o gerenciamento de políticas é que esses sistemas não são controlados por código, portanto, podem ser mais fáceis de serem adotados pelos operadores de sua equipe.
Ao decidir entre ferramentas de orquestração ou política, considere se as atualizações de configuração que você planeja fazer em novos recursos devem ser feitas no momento da implantação. Considere também se a definição de atualizações no código se encaixa em suas práticas operacionais e quantos tipos de recursos você planeja implantar. Se houver muitas configurações diferentes entre os tipos de recursos, as ferramentas de política poderão ser uma maneira mais fácil de gerenciar atualizações.
Facilitação do Azure
Gerenciamento de política
Azure Policy: usando o Azure Policy, você pode impor padrões e avaliar a conformidade em escala. O Azure Policy fornece uma exibição agregada para avaliar o estado geral do ambiente de carga de trabalho no painel de conformidade. Ou você pode usar o Azure Policy para avaliar cada recurso e política em um nível granular. Você também pode usar o Azure Policy para corrigir novos recursos automaticamente ou corrigir recursos existentes em massa.
Compensação: descarregar a automação do pipeline de CI/CD para ferramentas ou serviços de plataforma, como Azure Policy, pode simplificar seu pipeline, mas tem desvantagens, como a carga de gerenciamento adicional de usar vários sistemas. Por exemplo, falhas de execução em um serviço de plataforma não serão capturadas em seus logs de pipeline e terão que alimentar sua plataforma de observabilidade de forma inteligente para que as partes apropriadas sejam notificadas.
Inicializar automação
Extensões de Máquinas Virtuais do Azure: as extensões de Máquinas Virtuais são pequenos pacotes que executam a configuração e a automação pós-implantação em VMs. Várias extensões estão disponíveis para diferentes tarefas de configuração, como executar scripts, configurar soluções antimalware e configurar soluções de log. Instale e execute essas extensões em VMs usando um modelo do Azure Resource Manager, a CLI do Azure, o módulo do Azure PowerShell ou o portal do Azure. Cada VM tem um agente de VM instalado que gerencia o ciclo de vida da extensão.
Normalmente, as extensões de VM usam uma extensão de script personalizado para instalar software, executar comandos e executar configurações em uma VM ou em Conjuntos de Dimensionamento de Máquinas Virtuais do Azure. Você pode configurar essas extensões para serem executadas como parte de implantações de IaC para que elas sejam executadas em novas VMs usando o Agente de VM do Azure. As extensões também podem ser executadas fora de uma implantação do Azure usando a CLI do Azure, o módulo do PowerShell ou o portal do Azure.
Cloud-init: Cloud-init é uma ferramenta do setor para configurar VMs do Linux na primeira inicialização. Assim como as extensões de script personalizado do Azure, o cloud-init permite instalar pacotes e executar comandos em VMs do Linux. Você pode usar o cloud-init para instalação de software, configuração do sistema e preparação de conteúdo. O Azure inclui muitas imagens de VM habilitadas para cloud-init em distribuições Linux conhecidas. Para obter uma lista completa, consulte suporte cloud-init para VMs no Azure.
Recurso de script de implantação do Azure: ao implantar usando o Azure, talvez seja necessário executar código arbitrário para inicializar o gerenciamento de contas de usuário, pods do Kubernetes ou consultar dados de um sistema que não seja do Azure. Como nenhuma dessas operações pode ser acessada por meio do painel de controle do Azure, um mecanismo separado é necessário. Para obter mais informações, consulte Microsoft.Resources deploymentScripts. Como qualquer outro recurso do Azure, o recurso de script de implantação:
Pode ser usado em um modelo do Azure Resource Manager.
Contém dependências de modelo do Azure Resource Manager em outros recursos.
Consome entrada e produz saída.
Usa uma identidade gerenciada atribuída pelo usuário para autenticação.
Quando implantado, o script de implantação executa comandos e scripts do PowerShell ou da CLI do Azure. As execuções de script e o registro em log podem ser observados no portal do Azure ou com a CLI do Azure e o módulo do PowerShell. Você pode personalizar as variáveis para o ambiente de execução, opções de tempo limite e gerenciamento de recursos após uma falha de script.
Inicializar clusters do AKS com o GitOps: você pode inicializar um cluster do AKS recém-provisionado usando o GitOps e a extensão de cluster do Flux v2 declarando suas definições de configuração nos repositórios do GitHub. Como os arquivos de cluster do AKS são armazenados em um repositório GitHub, eles têm controle de versão e as alterações entre as versões são facilmente rastreadas. Os controladores do Kubernetes são executados nos clusters e reconciliam continuamente o estado do cluster com o estado desejado declarado no repositório Git, extraindo os arquivos do repositório. Para obter mais informações, consulte Arquitetura de referência de linha de base do AKS.
Gerenciamento de configuração
O State Configuration da Automação do Azure é uma ferramenta de gerenciamento de DSC gerenciada pelo recurso de configuração de convidado do Azure Policy que você pode usar para escrever, gerenciar e compilar configurações de DSC do PowerShell para nós em qualquer datacenter local ou de nuvem. Você também pode usar essa ferramenta para importar recursos de DSC e atribuir configurações a nós de destino.
A Configuração de Aplicativos do Azure é um serviço que você pode usar para gerenciar centralmente as configurações do aplicativo e os sinalizadores de recursos. Ele funciona com o Azure Key Vault para que você possa gerenciar com segurança uma ampla variedade de configurações de aplicativos em seu ambiente.
Controle de alterações e inventário
O controle de alterações e o inventário usando o Azure Monitoring Agent rastreiam o descompasso de configuração do sistema operacional em VMs do Azure e VMs habilitadas para Arc. Isso automatiza a detecção de desvios, os serviços de execução de inventário e os pacotes instalados nas máquinas virtuais em sua carga de trabalho. Os itens rastreados pelo controle de alterações e pelo inventário incluem:
- Software Windows e Linux instalado
- Principais arquivos do Windows e Linux
- Chave do registro do Windows
- Serviços do Windows e daemons do Linux
Links relacionados
- Arquitetura de referência de linha de base do AKS
- Configuração de Aplicativos do Azure
- State Configuration da Automação do Azure
- Azure Policy
- Suporte de cloud-init para VMs no Azure
- Configurações do GitOps Flux v2 com AKS e Kubernetes habilitado para Azure Arc
- Microsoft.Resources deploymentScripts
- Recomendações para autocura e autopreservação
Lista de verificação de Excelência Operacional
Consulte o conjunto completo de recomendações.