Configurar políticas de quotas de recursos do AKS com o Azure Policy para Kubernetes

Concluído

O Azure Policy permite-lhe impor normas e avaliar a conformidade em escala para o ambiente na cloud. É uma boa prática para as empresas implementar regras de negócios para definir como os funcionários podem usar o software, hardware e outros recursos da empresa na organização. Portanto, as empresas usam políticas para impor, revisar e definir o acesso. As políticas ajudam as organizações a satisfazer requisitos legais e de governação, e a implementarem melhores práticas e convenções organizacionais.

O Serviço Kubernetes do Azure (AKS) permite orquestrar seus aplicativos nativos da nuvem de forma eficiente com políticas. Você percebe que precisa aplicar regras de negócios para gerenciar como as equipes usam o AKS para garantir uma abordagem econômica. Você decide usar a Política do Azure para aplicar essa ideia em seus recursos de nuvem baseados no Azure.

Antes de discutir como usar a Política do Azure para Kubernetes, você deve entender mais alguns conceitos que habilitam esse recurso de dentro do Kubernetes.

O que é um controlador de admissão do Kubernetes?

Um controlador de admissão é um plug-in do Kubernetes que interceta pedidos autenticados e autorizados para a API do Kubernets antes da persistência do objeto do Kubernetes pedido. Por exemplo, suponha que implementa uma nova carga de trabalho e a implementação inclui um pedido de pod com uma condição de memória específica. O controlador de admissão interceta o pedido de implementação e deve autorizar a implementação antes de ser persistida no cluster.

Pode pensar no controlador de admissão como um software que rege e impõe a forma como o cluster é utilizado e como foi concebido. Limita os pedidos para criar, eliminar e modificar objetos do Kubernetes.

O que é um webhook de controlador de admissão?

Um webhook de controlador de admissão é uma função de chamada de retorno HTTP que recebe pedidos de admissão e, em seguida, age de acordo com estes pedidos. Os controladores de admissão precisam ser configurados em tempo de execução. Esses controladores existem para seu plug-in de admissão compilado ou para uma extensão implantada que é executada como um webhook.

Os webhooks de admissão estão disponíveis em dois tipos: um webhook de validação ou um webhook de mutação. Os webhooks de mutação são invocados primeiro e alteram e aplicam predefinições nos objetos enviados para o servidor da API. Os webhooks de validação validam os valores dos objetos e pode rejeitar pedidos.

O que é o OPA (Open Policy Agent)?

O Open Policy Agent (OPA) é um motor de política open-source e para fins gerais que proporciona um elevado nível de linguagem declarativa a políticas de autor. Estas políticas permitem definir regras que supervisionam a forma como o seu sistema se deve comportar.

O que é o OPA Gatekeeper?

O OPA Gatekeeper é um webhook de controlador de admissão Kubernetes de código aberto, validador, que impõe políticas baseadas em CRD (Custom Resource Definition) que seguem a sintaxe OPA.

O objetivo do OPA Gatekeeper é permitir que você personalize as políticas de admissão usando a configuração em vez de regras de política codificadas para serviços. Também lhe apresenta uma vista completa do cluster para identificar os recursos que constituem uma violação das políticas.

Use o OPA Gatekeeper para definir políticas em toda a organização com regras:

  • Os limites máximos dos recursos, tais como a CPU e a memória, sejam aplicados a todos os pods configurados.

  • A implementação de imagens apenas seja permitida a partir de repositórios aprovados.

  • A convenção de nomenclatura para rótulos para todos os namespaces em um cluster deve especificar um ponto de contato para cada namespace.

  • Exigir que os serviços de cluster tenham seletores globalmente exclusivos.

Azure Policy para AKS

O Azure Policy expande o OPA Gatekeeper versão 3 e integra-se com o AKS por meio de políticas incorporadas. Estas políticas aplicam imposições à escala e proteções no cluster de forma consistente e centralizada.

As equipas de desenvolvimento da sua empresa querem otimizar o desenvolvimento e introduzir ferramentas de desenvolvimento, tais como o DevSpaces, para simplificar os respetivos fluxos de trabalho de desenvolvimento do Kubernetes. Quer ter certeza de que os membros das equipas respeitam limites de recursos específicos para os respetivos projetos. Decide implementar uma política que define os recursos de computação, os recursos de armazenamento e a contagem de objetos permitida nos espaços de nomes de desenvolvimento.

Para configurar limites de recursos, pode aplicar quotas de recursos ao nível do espaço de nomes e monitorizar a utilização de recursos para ajustar as quotas de política. Utilize esta estratégia para reservar e limitar os recursos por toda a equipa de desenvolvimento.

Como ativar o suplemento do Azure Policy para o AKS

Há alguns passos que tem de seguir para registar a funcionalidade Suplemento do Azure Policy para o AKS. Forneceremos exemplos aqui, mas você realmente concluirá as etapas na próxima unidade.

  1. Registe dois fornecedores de recursos com o comando az provider register:

    • Microsoft.ContainerService e Microsoft.PolicyInsights: esses provedores de recursos oferecem suporte a ações como consultar informações sobre eventos de política e gerenciar contêineres. Essas são ações para consultar, criar, atualizar ou excluir a correção de política.

    Veja a seguir um exemplo dos dois comandos de registo:

    az provider register --namespace Microsoft.ContainerService
    az provider register --namespace Microsoft.PolicyInsights
    
  2. Registe a funcionalidade AKS-AzurePolicyAutoApprove com o fornecedor de recursos Microsoft. ContainerService. Veja a seguir um exemplo do comando:

    az feature register --namespace Microsoft.ContainerService --name AKS-AzurePolicyAutoApprove
    
  3. Depois de confirmar o registro bem-sucedido do recurso, execute o az provider register comando com o --namespace parâmetro para propagar o novo registro do recurso. Veja a seguir um exemplo do comando:

    az provider register -n Microsoft.ContainerService
    
  4. Habilite o complemento azure-policy:

    az aks enable-addons \
        --addons azure-policy \
        --name myAKSCluster \
        --resource-group myResourceGroup
    

    A ativação do complemento agenda cargas de trabalho em dois namespaces no cluster. O primeiro namespace é kube-system, que contém o azure-policy e azure-policy-webhook. O segundo namespace é gatekeeper-system, que contém o gatekeeper-controller-manager. Estas cargas de trabalho são responsáveis pela avaliação dos pedidos enviados para o plano de controlo do AKS. Com base em suas políticas configuradas, seu webhook de política pode permitir ou negar solicitações.

Atribuir uma definição de política incorporada

Para gerir as políticas do ambiente do Azure, utilize o dashboard de conformidade das políticas do Azure. O painel permite detalhar um nível de detalhe por recurso e por política. Tal ajuda-o a fazer com que os recursos fiquem em conformidade através da remediação em massa dos recursos existentes e da remediação automática dos recursos novos.

Para cada política, são listadas as seguintes informações de descrição geral:

Item Description Exemplo
Nome O nome da política. [Visualização]: Certifique-se de que os limites de recursos de CPU e memória do contêiner não excedam os limites especificados no cluster do Kubernetes.
Scope O grupo de recursos da subscrição a que esta política se aplica. mySubscription/rg-akscostsaving.
Estado de conformidade O estado das políticas atribuídas. Conforme, Conflituoso, Não iniciado ou Não Registrado.
Conformidade do recurso A percentagem de recursos que está em conformidade com a política. Este cálculo tem em conta os recursos em conformidade, em não conformidade e em conflito. 100
Recursos em não conformidade O número de recursos exclusivos que violam uma ou mais regras de política. 3
Políticas em não conformidade O número de políticas em não conformidade. 5

A partir daqui, você pode detalhar os detalhes por recurso e por política para os eventos acionados. Por exemplo, você pode examinar detalhes de uma implantação de carga de trabalho negada.

Atribuição de políticas

Para atribuir uma política, selecione a opção Atribuições na seção Criação no painel de navegação Política do Azure.

Você atribui políticas do Azure de duas maneiras: como um grupo de políticas chamado iniciativa ou como uma única política.

Atribuição de iniciativas

Uma atribuição de iniciativa é uma coleção de definições de políticas do Azure agrupadas para satisfazer um objetivo ou propósito específico. Por exemplo, o objetivo pode ser aplicar a Norma de Segurança de Dados da Indústria de Cartões de Pagamento em todos os recursos.

Atribuição de políticas

Uma atribuição de política atribui uma única política, como Não permitir contentores com privilégios no cluster Kubernetes.

Como atribuir uma política

Cada política é definida através de uma série de passos de configuração. A quantidade de informações a capturar depende do tipo de política que selecionar.

Por exemplo, para limitar a implementação de recursos por programadores no ambiente de cloud da empresa, pode atribuir uma das políticas do Azure incorporadas do Azure Kubernetes Service. O nome da política é Garantir que os limites de recursos da memória e da CPU de contentor não excedem os limites especificados no cluster Kubernetes.

A política requer que defina o limite dos recursos permitidos solicitados por pedidos de implementação.

Vamos dar uma olhada nas opções configuráveis quando você atribui uma política.

Informações de políticas básicas

O primeiro passo requer que selecione e introduza informações básicas que definam a nova política. Por exemplo, essas informações podem ser a política e o escopo do recurso. Esta tabela mostra cada item que você pode configurar:

Item Description
Scope O escopo determina em quais recursos ou grupo de recursos a atribuição de política é imposta. Este valor baseia-se numa subscrição ou num grupo de gestão. Pode excluir recursos da seleção num nível inferior ao nível do âmbito.
Definição de Política A política que quer aplicar. Pode escolher de entre várias opções de políticas incorporadas.
Nome da atribuição O nome usado para identificar a política atribuída.
Descrição Uma descrição de texto livre que descreve a política.
Imposição de políticas Você pode escolher Ativado e Desativado. Se a opção estiver Desativada, a política não será aplicada e os pedidos não serão negados por incumprimento.
Atribuído por Um valor de texto livre predefinido para o utilizador registado. Você pode alterar esse valor.

Parâmetros de políticas

As políticas requerem que configure as regras de negócio aplicáveis a cada política específica. Nem todas as políticas têm as mesmas regras de negócio e é por isso que cada política tem diferentes parâmetros.

Por exemplo, a política Garantir que os limites de recursos da CPU e da memória de contentor não excedem os limites especificados no cluster Kubernetes requer a definição de três parâmetros:

  • O máximo de unidades de CPU permitido para um contêiner
  • O máximo de bytes de memória permitido para um contêiner
  • Uma lista de namespaces do Kubernetes a serem excluídos da política

Compare essa política com A Aplicação Web deve ser acessível apenas através de HTTPS, que não tem parâmetros personalizados a configurar.

Todas as políticas têm uma definição Efeito. Essa configuração habilita ou desabilita a execução da política. Tal como os parâmetros, as políticas também podem ter diferentes opções de Efeito.

Por exemplo, para a política de gerenciamento de recursos, você pode selecionar auditar, negar ou desabilitar como o valor Effect . Para a política de aplicações Web, só pode selecionar auditar ou desativar.

Esta tabela lista todos os efeitos atualmente suportados nas definições de políticas:

Efeito Description
Acrescentar Adiciona mais campos ao recurso solicitado
Auditar Cria um evento de aviso no registro de atividades
AuditIfNotExists Permite a auditoria de recursos relacionados ao recurso que corresponde à condição
Deny Impede uma solicitação de recurso que não corresponde aos padrões definidos por meio de uma definição de política e falha na solicitação
DeployIfNotExists Executa uma implantação de modelo quando a condição é atendida
Desativado Útil para testar situações ou para quando a definição de política parametrizou o efeito e você deseja desabilitar uma única atribuição
Modificar Adiciona, atualiza ou remove tags em um recurso durante a criação ou atualização

Remediação de políticas

O último passo é considerar a remediação das políticas. Quando você atribui políticas, é possível que os recursos já existam e violem a nova política. Por padrão, apenas os recursos recém-criados são aplicados à nova política. Use a correção para verificar os recursos existentes depois de atribuir uma nova política. As tarefas de correção podem variar dependendo dos tipos de políticas aplicadas.

No próximo exercício, use a opção Garantir que os limites de recursos de CPU e memória do contêiner não excedam os limites especificados na política de cluster do Kubernetes para reduzir ainda mais os custos.