Поделиться через


Использование управляемых пространств имен в службе Azure Kubernetes (AKS)

Область применения: ✔️ AKS Automatic ✔️ AKS Standard

Управляемые пространства имен в службе Azure Kubernetes (AKS) позволяют логически изолировать рабочие нагрузки и команды в кластере. Эта функция позволяет администраторам применять квоты ресурсов, применять политики сети и управлять доступом на уровне пространства имен. Подробный обзор управляемых пространств имен см. в обзоре управляемых пространств имен.

Перед тем как начать

Предпосылки

  • Учетная запись Azure с активной подпиской. Если ее нет, можно создать учетную запись бесплатно.
  • Кластер AKS, настроенный в вашей среде Azure с управлением доступом на основе ролей Azure для авторизации Kubernetes, необходим, если вы планируете использовать роли Azure RBAC.
  • Чтобы использовать функцию политики сети, кластер AKS необходимо настроить с помощью подсистемы сетевой политики. Cilium — это наш рекомендуемый механизм.
Предпосылка Примечания.
Azure CLI 2.80.0 или более поздней версии. Чтобы найти версию CLI, выполните команду az --version. Если вам нужно установить или обновить, см. статью "Установка Azure CLI".
Версия API AKS 2025-09-01 или позднее.
Обязательные разрешения Microsoft.ContainerService/managedClusters/managedNamespaces/* или Azure Kubernetes Service Namespace Contributor встроенная роль. Microsoft.Resources/deployments/* в группе ресурсов, содержащей кластер. Дополнительные сведения см. в разделе "Управляемые пространства имен", встроенные роли.

Ограничения

  • Попытка управлять пространствами имен системы, такими как kube-system, app-routing-system, istio-systemи gatekeeper-systemт. д., не допускается.
  • Если пространство имен является управляемым пространством имен, изменения пространства имен через API Kubernetes блокируются.
  • Перечисление существующих пространств имен для преобразования на портале не работает с частными кластерами. Вы можете добавить новые пространства имен.

Создание управляемого пространства имен в кластере и назначение пользователей

Замечание

При создании управляемого пространства имен компонент устанавливается в кластере для согласования пространства имен с состоянием в Azure Resource Manager. Этот компонент блокирует изменения управляемых полей и ресурсов из API Kubernetes, обеспечивая согласованность с требуемой конфигурацией.

В следующем примере Bicep показано, как создать управляемое пространство имен в качестве подресурса управляемого кластера. Обязательно выберите соответствующее значение для defaultNetworkPolicy, adoptionPolicyи deletePolicy. Дополнительные сведения об этих параметрах см. в обзоре управляемых пространств имен.

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'
    }
  }
}

Сохраните файл Bicep managedNamespace.bicep на локальный компьютер.

Разверните Bicep-файл с помощью Azure CLI.

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

Определение переменных

Определите следующие переменные, которые будут использоваться в последующих шагах.

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

Создание управляемого пространства имен

Чтобы настроить конфигурацию, управляемые пространства имен имеют различные параметры для выбора во время создания. Обязательно выберите соответствующее значение для ingress-network-policy, egress-network-policyи adoption-policydelete-policy. Дополнительные сведения об этих параметрах см. в обзоре управляемых пространств имен.

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}

Назначить роль

После создания пространства имен можно назначить одну из встроенных ролей для плоскости управления и плоскости данных.

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)

Назначьте роль уровня управления для просмотра управляемого пространства имен на портале, выходных данных Azure CLI и Azure Resource Manager. Эта роль также позволяет пользователю получать учетные данные для подключения к этому пространству имен.

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

Назначьте роль плоскости данных, чтобы получить доступ к ресурсам в пространстве имен с помощью API Kubernetes.

az role assignment create \
  --assignee ${ASSIGNEE} \
  --role "Azure Kubernetes Service RBAC Writer" \
  --scope ${NAMESPACE_ID}
  1. Войдите на портал Azure.
  2. На домашней странице портала Azure выберите Создать ресурс.
  3. В разделе "Категории " выберите "Управляемые пространства имен Kubernetes".
  4. На вкладке "Основные сведения" в разделе "Сведения о проекте " настройте следующие параметры:
    1. Выберите целевой кластер , чтобы создать пространство имен.
    2. Если вы создаете новое пространство имен, оставьте новое по умолчанию, в противном случае выберите изменение существующего, чтобы преобразовать существующее пространство имен.
  5. Настройте политику сети , применяемую к пространству имен.
  6. Настройте запросы ресурсов и ограничения для пространства имен.
  7. Выберите участников (пользователей или групп) и их роль.
    1. Назначьте роль пользователя пространства имен службы Azure Kubernetes , чтобы предоставить им доступ к управляемому пространству имен на портале, выходных данных Azure CLI и Azure Resource Manager. Эта роль также позволяет пользователю получать учетные данные для подключения к этому пространству имен.
    2. Назначьте роль записи RBAC службы Azure Kubernetes , чтобы предоставить им доступ к созданию ресурсов в пространстве имен с помощью API Kubernetes.
  8. Выберите "Проверка и создание ", чтобы выполнить проверку в конфигурации. После завершения проверки нажмите кнопку "Создать".

Перечисление управляемых пространств имен

Вы можете перечислить управляемые пространства имен в разных областях с помощью Azure CLI.

Уровень подписки

Выполните следующую команду, чтобы перечислить все управляемые пространства имен в подписке.

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

Уровень группы ресурсов

Выполните следующую команду, чтобы перечислить все управляемые пространства имен в определенной группе ресурсов.

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

Уровень кластера

Выполните следующую команду, чтобы перечислить все управляемые пространства имен в определенном кластере.

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

Перечисление управляемых пространств имен

Вы можете перечислить управляемые пространства имен в разных областях с помощью Azure CLI.

Уровень подписки

Выполните следующую команду, чтобы перечислить все управляемые пространства имен в подписке.

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

Уровень группы ресурсов

Выполните следующую команду, чтобы перечислить все управляемые пространства имен в определенной группе ресурсов.

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

Уровень кластера

Выполните следующую команду, чтобы перечислить все управляемые пространства имен в определенном кластере.

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

Подключение к кластеру

Вы можете получить учетные данные для подключения к пространству имен с помощью следующей команды.

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

Подключение к кластеру

Вы можете получить учетные данные для подключения к пространству имен с помощью следующей команды.

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

Дальнейшие шаги

Эта статья посвящена использованию функции управляемых пространств имен для логического изоляции команд и приложений. Вы можете подробнее изучить другие меры безопасности и рекомендации по применению с помощью средств защиты развертывания.