Compartilhar via


Usar namespaces gerenciados no AKS (Serviço de Kubernetes do Azure)

Aplica-se a: ✔️ AKS Automatic ✔️ AKS Standard

Namespaces gerenciados no AKS (Serviço de Kubernetes do Azure) fornecem uma maneira de isolar logicamente cargas de trabalho e equipes em um cluster. Esse recurso permite que os administradores imponham cotas de recursos, apliquem políticas de rede e gerenciem o controle de acesso no nível do namespace. Para obter uma visão geral detalhada dos namespaces gerenciados, consulte a visão geral dos namespaces gerenciados.

Antes de começar

Pré-requisitos

Pré-requisito Anotações
Azure CLI 2.80.0 ou posterior instalado. Para localizar a versão da CLI, execute az --version. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.
Versão da API do AKS 2025-09-01 ou posterior.
Permissões necessárias Função interna Microsoft.ContainerService/managedClusters/managedNamespaces/* ou Azure Kubernetes Service Namespace Contributor. Microsoft.Resources/deployments/* no grupo de recursos que contém o cluster. Para mais informações, consulte funções internas associadas a namespaces gerenciados.

Limitações

  • Não é permitido tentar integrar namespaces do sistema, como kube-system, app-routing-system, istio-system, gatekeeper-system, etc., para que sejam gerenciados.
  • Quando um namespace é um namespace gerenciado, as alterações no namespace por meio da API do Kubernetes são bloqueadas.
  • Listar namespaces existentes a serem convertidos no portal não funciona com clusters privados. Você pode adicionar novos namespaces.

Criar um namespace gerenciado em um cluster e atribuir usuários

Observação

Quando você cria um namespace gerenciado, um componente é instalado no cluster para reconciliar o namespace com o estado no Azure Resource Manager. Esse componente bloqueia as alterações nos campos e recursos gerenciados da API do Kubernetes, garantindo a consistência com a configuração desejada.

O exemplo Bicep a seguir demonstra como criar um namespace gerenciado como uma sub-fonte de um cluster gerenciado. Selecione o valor apropriado para defaultNetworkPolicy, adoptionPolicye deletePolicy. Para obter mais informações sobre o que esses parâmetros significam, consulte a visão geral dos namespaces gerenciados.

resource existingCluster 'Microsoft.ContainerService/managedClusters@2024-03-01' existing = {
  name: 'contoso-cluster'
}

resource managedNamespace 'Microsoft.ContainerService/managedClusters/managedNamespaces@2025-09-01' = {
  parent: existingCluster
  name: 'retail-team'
  location: location
  properties: {
    defaultResourceQuota: {
      cpuRequest: '1000m'
      cpuLimit: '2000m'
      memoryRequest: '512Mi'
      memoryLimit: '1Gi'
    }
    defaultNetworkPolicy: {
      ingress: 'AllowSameNamespace'
      egress: 'AllowAll'
    }
    adoptionPolicy: 'IfIdentical'
    deletePolicy: 'Keep'
    labels: {
      environment: 'dev'
    }
    annotations: {
      owner: 'retail'
    }
  }
}

Salve o arquivo Bicep managedNamespace.bicep no computador local.

Implante o arquivo Bicep usando a CLI do Azure.

az deployment group create --resource-group <resource-group> --template-file managedNamespace.bicep

Definir variáveis

Defina as variáveis a seguir a serem usadas nas etapas subsequentes.

RG_NAME=cluster-rg
CLUSTER_NAME=contoso-cluster
NAMESPACE_NAME=retail-team
LABELS="environment=dev"
ANNOTATIONS="owner=retail"

Criar o namespace gerenciado

Para personalizar sua configuração, os namespaces gerenciados têm várias opções de parâmetro para escolher durante a criação. Selecione o valor apropriado para ingress-network-policy, egress-network-policyadoption-policye delete-policy. Para obter mais informações sobre o que esses parâmetros significam, consulte a visão geral dos namespaces gerenciados.

az aks namespace add \
    --name ${NAMESPACE_NAME} \
    --cluster-name ${CLUSTER_NAME} \
    --resource-group ${RG_NAME} \
    --cpu-request 1000m \
    --cpu-limit 2000m \
    --memory-request 512Mi \
    --memory-limit 1Gi \
    --ingress-policy [AllowSameNamespace|AllowAll|DenyAll] \
    --egress-policy [AllowSameNamespace|AllowAll|DenyAll] \
    --adoption-policy [Never|IfIdentical|Always] \
    --delete-policy [Keep|Delete] \
    --labels ${LABELS} \
    --annotations ${ANNOTATIONS}

Atribuir função

Depois que o namespace for criado, você poderá atribuir uma das funções internas para o plano de controle e o plano de dados.

ASSIGNEE="user@contoso.com"
NAMESPACE_ID=$(az aks namespace show --name ${NAMESPACE_NAME} --cluster-name ${CLUSTER_NAME} --resource-group ${RG_NAME} --query id -o tsv)

Atribua uma função de plano de controle para poder exibir o namespace gerenciado no portal, na saída da CLI do Azure e no Azure Resource Manager. Essa função também permite que o usuário recupere as credenciais para se conectar a esse namespace.

az role assignment create \
  --assignee ${ASSIGNEE} \
  --role "Azure Kubernetes Service Namespace User" \
  --scope ${NAMESPACE_ID}

Atribua a função de plano de dados para obter acesso para criar recursos no namespace usando a API do Kubernetes.

az role assignment create \
  --assignee ${ASSIGNEE} \
  --role "Azure Kubernetes Service RBAC Writer" \
  --scope ${NAMESPACE_ID}
  1. Entre no portal do Azure.
  2. Na home page do portal do Azure, selecione Criar um recurso.
  3. Na seção Categorias, selecione Namespaces Gerenciados do Kubernetes.
  4. Na guia Noções básicas , em detalhes do Projeto , defina as seguintes configurações:
    1. Selecione o cluster de destino no qual criar o namespace.
    2. Se você estiver criando um novo namespace, deixe o padrão criar novo, caso contrário, escolha alterar existente para gerenciado para converter um namespace existente.
  5. Configure a política de rede a ser aplicada no namespace.
  6. Configure solicitações de recursos e limites para o namespace.
  7. Selecione os membros (usuários ou grupos) e sua função.
    1. Atribua a função de Usuário do Namespace do Serviço de Kubernetes do Azure para conceder-lhes acesso para exibir o namespace gerenciado no portal, na saída da CLI do Azure e no Azure Resource Manager. Essa função também permite que o usuário recupere as credenciais para se conectar a esse namespace.
    2. Atribua a função de Gravador RBAC do Serviço de Kubernetes do Azure para dar a eles acesso para criar recursos no namespace usando a API do Kubernetes.
  8. Selecione Examinar + criar para executar a validação na configuração. Após a conclusão da validação, selecione Criar.

Listar namespaces gerenciados

Você pode listar namespaces gerenciados em escopos diferentes usando a CLI do Azure.

Nível de assinatura

Execute o comando a seguir para listar todos os namespaces gerenciados em uma assinatura.

az aks namespace list --subscription <subscription-id>

Nível do grupo de recursos

Execute o comando a seguir para listar todos os namespaces gerenciados em um grupo de recursos específico.

az aks namespace list --resource-group <rg-name>

Nível do cluster

Execute o comando a seguir para listar todos os namespaces gerenciados em um cluster específico.

az aks namespace list --resource-group <rg-name> --cluster-name <cluster-name>

Listar namespaces gerenciados

Você pode listar namespaces gerenciados em escopos diferentes usando a CLI do Azure.

Nível de assinatura

Execute o comando a seguir para listar todos os namespaces gerenciados em uma assinatura.

az aks namespace list --subscription <subscription-id>

Nível do grupo de recursos

Execute o comando a seguir para listar todos os namespaces gerenciados em um grupo de recursos específico.

az aks namespace list --resource-group <rg-name>

Nível do cluster

Execute o comando a seguir para listar todos os namespaces gerenciados em um cluster específico.

az aks namespace list --resource-group <rg-name> --cluster-name <cluster-name>

Conectar-se ao cluster

Você pode recuperar as credenciais para se conectar a um namespace por meio do comando a seguir.

az aks namespace get-credentials --name <namespace-name> --resource-group <rg-name> --cluster-name <cluster-name>

Conectar-se ao cluster

Você pode recuperar as credenciais para se conectar a um namespace por meio do comando a seguir.

az aks namespace get-credentials --name <namespace-name> --resource-group <rg-name> --cluster-name <cluster-name>

Próximas etapas

Este artigo se concentrou em usar o recurso namespaces gerenciados para isolar logicamente equipes e aplicativos. Você pode explorar ainda mais outros "guardrails" (proteções) e melhores práticas para aplicar por meio de proteções de implantação.