Partilhar via


Utilize espaços de nomes geridos no Azure Kubernetes Service (AKS)

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

Os namespaces gerenciados no Serviço Kubernetes do Azure (AKS) 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 Observações
CLI do Azure 2.80.0 ou instalado posteriormente. Para encontrar a versão CLI, execute az --version. Se precisar de instalar ou atualizar, consulte Install Azure CLI.
Versão da API AKS 2025-09-01 ou mais tarde.
Permissão(ões) necessária(s) Microsoft.ContainerService/managedClusters/managedNamespaces/* ou Azure Kubernetes Service Namespace Contributor função incorporada. Microsoft.Resources/deployments/* no grupo de recursos que contém o cluster. Para obter mais informações, consulte Funções internas de namespaces gerenciados.

Limitações

  • Não é permitido tentar integrar namespaces do sistema, como kube-system, , app-routing-systemistio-system, gatekeeper-system, etc., para serem namespaces gerenciados.
  • Quando um namespace é um namespace gerenciado, as alterações no namespace por meio da API do Kubernetes são bloqueadas.
  • Listar namespaces existentes para converter 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 crias um namespace gerido, instala-se um componente no cluster para reconciliar o namespace com o estado no Azure Resource Manager. Esse componente bloqueia alterações nos campos e recursos gerenciados da API do Kubernetes, garantindo a consistência com a configuração desejada.

O exemplo de Bicep a seguir demonstra como criar um namespace gerenciado como um subrecurso de um cluster gerenciado. Certifique-se de selecionar o valor apropriado para defaultNetworkPolicy, adoptionPolicye deletePolicy. Para obter mais informações sobre o significado desses parâmetros, 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 em seu 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 seguintes variáveis 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âmetros para escolher durante a criação. Certifique-se de selecionar o valor apropriado para ingress-network-policy, egress-network-policy, adoption-policye delete-policy. Para obter mais informações sobre o significado desses parâmetros, 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)

Atribuir um papel de plano de controlo para poder visualizar o namespace gerido no portal, a saída do Azure CLI e o 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 poder obter acesso para criar recursos dentro do namespace usando a API do Kubernetes.

az role assignment create \
  --assignee ${ASSIGNEE} \
  --role "Azure Kubernetes Service RBAC Writer" \
  --scope ${NAMESPACE_ID}
  1. Inicie sessão no portal Azure.
  2. Na home page do portal do Azure, selecione Criar um recurso.
  3. Na seção Categorias , selecione Namespaces Kubernetes gerenciados.
  4. Na guia Noções básicas, em Detalhes doprojeto , 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 create new, caso contrário, escolha change existing to managed to managed para converter um namespace existente.
  5. Configure a política de rede a ser aplicada no namespace.
  6. Configure as solicitações de recursos e os limites para o namespace.
  7. Selecione os membros (usuários ou grupos) e sua função.
    1. Atribuir o papel de utilizador do Azure Kubernetes Service Namespace para lhes dar acesso a visualizar o namespace gerido no portal, a saída do Azure CLI e o 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 Gravador RBAC do Serviço Kubernetes do Azure para dar a eles acesso para criar recursos dentro do namespace usando a API do Kubernetes.
  8. Selecione Rever + 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 subscrição

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 seguinte comando 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 subscrição

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 seguinte comando 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óximos passos

Este artigo concentrou-se no uso do recurso de namespaces gerenciados para isolar logicamente equipes e aplicativos. Você pode explorar ainda mais outras proteções e práticas recomendadas a serem aplicadas por meio de salvaguardas de implantação.