Compartilhar via


Visão geral dos namespaces gerenciados no AKS (Serviço de Kubernetes do Azure)

Aplica-se a: ✔️ AKS Automático ✔️ AKS Standard

À medida que você gerencia clusters no Serviço de Kubernetes do Azure (AKS), geralmente é necessário isolar equipes e cargas de trabalho. Com o isolamento lógico, você pode usar um único cluster do AKS para várias cargas de trabalho, equipes ou ambientes. Os namespaces do Kubernetes formam o limite de isolamento lógico para cargas de trabalho e recursos. A execução de isolamento lógico envolve a implementação de scripts e processos para criar namespaces, definir limites de recursos, aplicar políticas de rede e conceder acesso à equipe por meio do controle de acesso baseado em função. Saiba como usar namespaces gerenciados no AKS (Serviço de Kubernetes do Azure) para simplificar o gerenciamento de namespace, a multilocação de cluster e o isolamento de recursos.

A separação lógica de clusters geralmente oferece uma densidade de pod maior do que clusters fisicamente isolados, com menos capacidade de computação excedente ociosa no cluster. Quando combinado com o dimensionador automático de cluster ou o Provisionamento Automático de Nós, você poderá dimensionar o número de nós para cima ou para baixo para atender às demandas. Essa melhor prática minimiza os custos executando apenas o número necessário de nós.

Políticas de rede

As Políticas de Rede são recursos do Kubernetes que você pode usar para controlar o fluxo de tráfego entre pods, namespaces e pontos de extremidade externos. As políticas de rede permitem definir regras de entrada (recebida) e tráfego de saída (realizada), garantindo que apenas a comunicação autorizada seja permitida. Ao aplicar políticas de rede, você poderá aprimorar a segurança e o isolamento de cargas de trabalho em seu cluster.

Observação

A regra de política de rede de entrada padrão de Permitir o mesmo namespace opta por uma posição segura por padrão. Caso precise que seus serviços, entradas ou gateways do Kubernetes sejam acessíveis de fora do namespace em que estão implantados, por exemplo, de um controlador de entrada implantado em um namespace separado, você precisará selecionar Permitir tudo. Em seguida, você pode aplicar sua própria política de rede para restringir a entrada a ser somente desse namespace.

Os namespaces gerenciados vêm com um conjunto de políticas internas.

  • Permitir tudo: permite todo o tráfego de rede.
  • Permitir o mesmo namespace: permite todo o tráfego de rede dentro do mesmo namespace.
  • Negar tudo: nega todo o tráfego de rede.

É possível aplicar qualquer uma das políticas internas em regras de entrada e saída e elas têm os seguintes valores padrão.

Policy Valor padrão
Entrada Permitir o mesmo namespace
Saída Permitir tudo

Observação

Os usuários com uma ação Microsoft.ContainerService/managedClusters/networking.k8s.io/networkpolicies/write, como Azure Kubernetes Service RBAC Writer, na função do Microsoft Entra ID atribuída podem adicionar mais políticas de rede por meio da API do Kubernetes.

Por exemplo, se um administrador aplicar uma Deny All política para entrada/saída e um usuário aplicar uma Allow política para um namespace por meio da API do Kubernetes, a Allow política tem prioridade sobre a Deny All política, e o tráfego é permitido para o namespace.

Cotas de recursos

As Cotas de Recursos são recursos do Kubernetes usados para gerenciar e limitar o consumo de recursos de namespaces em um cluster. Eles permitem que os administradores definam restrições na quantidade de CPU, memória, armazenamento ou outros recursos que são usados por cargas de trabalho em um namespace. Ao aplicar cotas de recursos, você poderá garantir uma distribuição justa de recursos, impedir o uso excessivo de recursos e manter a estabilidade do cluster.

Namespaces gerenciados podem ser criados com as seguintes cotas de recursos:

  • Solicitações e limites de CPU: defina a quantidade mínima e máxima de recursos de CPU que as cargas de trabalho no namespace podem solicitar ou consumir. A cota garante que as cargas de trabalho tenham recursos de CPU suficientes para operar, evitando o uso excessivo que poderia afetar outros namespaces. A cota é definida no formulário milliCPU.
  • Solicitações e limites de memória: especifique a quantidade mínima e máxima de recursos de memória que as cargas de trabalho no namespace podem solicitar ou consumir. A cota ajuda a manter a estabilidade evitando o excesso de comprometimento de memória e garantindo uma alocação justa de recursos entre namespaces. A cota é definida no formato de potência de dois equivalentes, como Ei,Pi, Ti, Gi, Mi e Ki.

Rótulos e anotações

Os Rótulos e as Anotações do Kubernetes são metadados anexados aos objetos do Kubernetes, como namespaces, para fornecer informações adicionais. Os rótulos são pares chave-valor usados para organizar e selecionar recursos, permitindo agrupamento e consulta eficientes. As anotações armazenam metadados não identificados, como detalhes de configuração ou instruções operacionais, que são consumidos por ferramentas ou sistemas.

Opcionalmente, você poderá definir rótulos e anotações do Kubernetes para serem aplicados no namespace.

Política de adoção

A política de adoção determina como um namespace existente no Kubernetes é tratado ao criar um namespace gerenciado.

Aviso

A integração de um namespace existente a ser gerenciado pode causar interrupção. Se a cota de recursos aplicada for menor do que o que já está sendo solicitado pelos pods, novas implantações e pods que excedem a cota serão negados. As implantações existentes não são afetadas, mas o escalonamento não é permitido. A aplicação de políticas de rede a um namespace existente pode afetar o tráfego existente. Verifique se as políticas são testadas e validadas para evitar interrupções não intencionais na comunicação entre pods ou pontos de extremidade externos.

As seguintes opções estão disponíveis:

  • Nunca: se o namespace já existir no cluster, as tentativas de criar esse namespace como um namespace gerenciado falharão.
  • Se idênticos: assuma o namespace existente a ser gerenciado, desde que não haja diferenças entre o namespace existente e a configuração desejada.
  • Sempre: sempre assuma o namespace existente a ser gerenciado, mesmo que alguns campos no namespace possam ser substituídos.

Excluir política

A política de exclusão especifica como o namespace do Kubernetes é tratado quando o recurso de namespace gerenciado é excluído.

Aviso

A exclusão de um namespace gerenciado com a política de Exclusão faz com que todos os recursos dentro desse namespace, como Implantações, Serviços, Entradas e outros objetos do Kubernetes, sejam excluídos. Certifique-se de fazer backup ou migrar todos os recursos críticos antes de continuar.

As seguintes opções estão disponíveis:

  • Mantenha: exclua apenas o recurso de namespace gerenciado mantendo o namespace do Kubernetes intacto. Além disso, o rótulo ManagedByARM é removido do namespace.
  • Excluir: exclua o recurso de namespace gerenciado e o namespace do Kubernetes juntos.

Funções internas de namespaces gerenciados

Namespaces gerenciados usam as seguintes funções internas para o plano de controle.

Função Descrição
Colaborador do Namespace do Serviço de Kubernetes do Azure Permite o acesso para criar, atualizar e excluir namespaces gerenciados em um cluster.
Usuário do Namespace do Serviço de Kubernetes do Azure Permite o acesso somente leitura a um namespace gerenciado em um cluster. Permite o acesso à lista de credenciais no namespace.

Os namespaces gerenciados usam as seguintes funções internas para o plano de dados.

Função Descrição
Leitor do RBAC do Serviço de Kubernetes do Azure Permite acesso somente leitura para ver a maioria dos objetos em um namespace. Não permite exibir funções nem associações de função. Essa função não permite a exibição de Segredos, já que ler o conteúdo de Segredos permite o acesso às credenciais de ServiceAccount no namespace, o que permitiria o acesso à API como qualquer ServiceAccount no namespace (uma forma de escalonamento de privilégios).
Gravador do RBAC do Serviço de Kubernetes do Azure Permite acesso de leitura/gravação à maioria dos objetos em um namespace. Essa função não permite exibir ou modificar funções ou associações de função. No entanto, essa função permite acessar os Segredos e executar Pods como qualquer ServiceAccount no namespace, de modo que ela possa ser usada para obter os níveis de acesso de API de uma ServiceAccount no namespace.
Administrador do RBAC do Serviço de Kubernetes do Azure Permite o acesso de leitura/gravação à maioria dos recursos em um namespace, incluindo a capacidade de criar funções e associações de função dentro do namespace. Essa função não permite acesso de gravação à cota de recursos ou ao próprio namespace.

Casos de uso de namespaces gerenciados

A configuração correta de namespaces com cotas ou políticas de rede associadas pode ser complexa e demorada. Os namespaces gerenciados permitem configurar namespaces pré-configurados em seus clusters do AKS com os quais você pode interagir usando a CLI do Azure.

As seções a seguir descrevem alguns casos de uso comuns para namespaces gerenciados.

Gerenciar equipes e recursos no AKS

Digamos que você seja um administrador em uma pequena startup. Você tem um cluster do AKS provisionado e deseja configurar namespaces para desenvolvedores de suas equipes de finanças, jurídicos e design . Ao configurar o ambiente da sua empresa, você deseja garantir que o acesso seja fortemente controlado, os recursos tenham o escopo correto e os ambientes sejam organizados corretamente.

  • A equipe financeira recebe formulários e arquivos de equipes de toda a empresa, pois eles contêm informações confidenciais que, idealmente, não deveriam sair do seu ambiente. Seus aplicativos e fluxos de trabalho são mais leves no lado da computação, mas consomem muita memória. Como resultado, você decide configurar um namespace que permite todas as entradas de rede, saída de rede somente dentro de seu namespace e delimite seus recursos de acordo. Um rótulo para o namespace ajuda a identificar facilmente qual equipe o está usando.

    az aks namespace add \
       --name $FINANCE_NAMESPACE \
       --cluster-name $CLUSTER_NAME \
       --resource-group $RESOURCE_GROUP \
       --cpu-request 250m \
       --cpu-limit 500m \
       --memory-request 512Mi \
       --memory-limit 2Gi \
       --ingress-policy AllowAll \
       --egress-policy AllowSameNamespace \
       --labels team=finance
    
  • A equipe jurídica lida principalmente com dados confidenciais. Seus aplicativos usam uma boa quantidade de memória, mas exigem poucos recursos de computação. Você decide configurar um namespace extremamente restritivo para as políticas de entrada/saída e definir o escopo de suas cotas de recursos adequadamente.

    az aks namespace add \
       --name $LEGAL_NAMESPACE \
       --cluster-name $CLUSTER_NAME \
       --resource-group $RESOURCE_GROUP \
       --cpu-request 250m \
       --cpu-limit 500m \
       --memory-request 2Gi \
       --memory-limit 5Gi \
       --ingress-policy DenyAll \
       --egress-policy DenyAll \
       --labels team=legal
    
  • A equipe de design precisa da capacidade de fluir dados livremente para mostrar seu trabalho em toda a empresa. Eles também incentivam as equipes a enviar conteúdo para referência. Seus aplicativos são intensivos e exigem uma grande parte da memória e da CPU. Você decide configurá-los com um namespace minimamente restritivo e alocar uma quantidade considerável de recursos para eles.

    az aks namespace add \
       --name $DESIGN_NAMESPACE \
       --cluster-name $CLUSTER_NAME \
       --resource-group $RESOURCE_GROUP \
       --cpu-request 2000m \
       --cpu-limit 2500m \
       --memory-request 5Gi \
       --memory-limit 8Gi \
       --ingress-policy AllowAll \
       --egress-policy AllowAll \
       --labels team=design
    

Com esses namespaces configurados, agora você tem ambientes para as três equipes em sua organização que devem permitir que cada equipe fique em funcionamento em um ambiente que melhor atenda às suas necessidades. Os administradores podem usar chamadas da CLI do Azure para atualizar os namespaces conforme as necessidades mudam.

Exibir namespaces gerenciados

À medida que o número de equipes com as quais você lida se expande ou à medida que sua organização cresce, talvez você precise examinar os namespaces configurados.

Digamos que você queira examinar os namespaces em seu cluster da seção anterior para garantir que haja três namespaces.

Use o az aks namespace list comando para examinar seus namespaces.

az aks namespace list \
  --cluster-name $CLUSTER_NAME \
  --resource-group $RESOURCE_GROUP \
  --output table

Seu resultado deve ser semelhante ao seguinte exemplo de saída:

Name                               ResourceGroup    Location
------------------                 ---------------  ----------
$CLUSTER_NAME/$DESIGN_NAMESPACE    $RESOURCE_GROUP  <LOCATION>
$CLUSTER_NAME/$LEGAL_NAMESPACE     $RESOURCE_GROUP  <LOCATION>
$CLUSTER_NAME/$FINANCE_NAMESPACE   $RESOURCE_GROUP  <LOCATION>

Controlar o acesso a namespaces gerenciados

Você pode usar ainda mais as funções RBAC do Azure, com escopo para cada namespace, para determinar quais usuários têm acesso a determinadas ações dentro do namespace. Com a configuração adequada, você pode garantir que os usuários tenham todo o acesso necessário dentro do namespace, limitando seu acesso a outros namespaces ou recursos em todo o cluster.

Próximas etapas