Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: ✔️ AKS Automatic ✔️ AKS Standard
Ao gerenciar clusters no Serviço Kubernetes do Azure (AKS), muitas vezes você precisa isolar equipes e cargas de trabalho. Com o isolamento lógico, você pode usar um único cluster 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 do 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 de controle de acesso baseado em função. Saiba como usar namespaces gerenciados no Serviço Kubernetes do Azure (AKS) para simplificar o gerenciamento de namespace, a multilocação de cluster e o isolamento de recursos.
A separação lógica de clusters geralmente fornece uma densidade de pod maior do que clusters fisicamente isolados, com menos excesso de capacidade de computação ociosas nos clusters. Quando combinado com autoscaler de cluster ou o Provisionamento Automático de Nós, é possível dimensionar o número de nós para cima ou para baixo para atender às demandas. Esta abordagem de melhores práticas minimiza os custos ao executar apenas o número necessário de nós.
Políticas de rede
As Políticas de Rede são recursos Kubernetes que pode usar para controlar o fluxo de tráfego entre pods, namespaces e endpoints externos. As políticas de rede permitem definir regras para o tráfego de entrada (entrada) e saída (saída), garantindo que apenas a comunicação autorizada seja permitida. Ao aplicar diretivas de rede, você pode melhorar a segurança e o isolamento de cargas de trabalho dentro do cluster.
Observação
A regra de política de rede de entrada padrão de Permitir o mesmo namespace opta por uma postura segura por padrão. Se você precisar que seus Serviços, entradas ou gateways do Kubernetes sejam acessíveis de fora do namespace onde eles são implantados, por exemplo, a partir de um controlador de entrada implantado em um namespace separado, você precisará selecionar Permitir tudo. Pode então aplicar a sua própria política de rede para restringir a entrada exclusivamente a partir 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 da rede.
Você pode aplicar qualquer uma das políticas internas nas regras de entrada e saída e elas têm os seguintes valores padrão.
| Policy | Valor predefinido |
|---|---|
| Entrada | Permitir o mesmo namespace |
| Saída | Permitir tudo |
Observação
Utilizadores com uma Microsoft.ContainerService/managedClusters/networking.k8s.io/networkpolicies/write ação, como Azure Kubernetes Service RBAC Writer, na função Microsoft Entra ID que lhes é atribuída, podem adicionar mais políticas de rede através da API Kubernetes.
Por exemplo, se um administrador aplica uma Deny All política para entrada/saída, e um utilizador aplica uma Allow política para um namespace através da API Kubernetes, a Allow política tem prioridade sobre a Deny All política, e o tráfego é autorizado a fluir para o namespace.
Quotas de recursos
As Cotas de Recursos são recursos do Kubernetes usados para gerenciar e limitar o consumo de recursos de namespaces dentro de um cluster. Permitem aos administradores definir restrições sobre a quantidade de CPU, memória, armazenamento ou outros recursos usados pelas cargas de trabalho num namespace. Ao aplicar cotas de recursos, você pode garantir uma distribuição justa de recursos, evitar o uso excessivo de recursos e manter a estabilidade do cluster.
Os 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 quota garante que as cargas de trabalho têm recursos de CPU suficientes para operar, prevenindo o uso excessivo que possa afetar outros namespaces. A quota é definida na forma miliCPU.
-
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 quota é definida na forma de potências de dois equivalentes, tal como
Ei,Pi,Ti,Gi,Mi,Ki.
Rótulos e anotações
Rótulos e Anotações do Kubernetes são metadados anexados a 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 agrupamentos e consultas eficientes. As anotações armazenam metadados não identificadores, como detalhes de configuração ou instruções operacionais, que são consumidos por ferramentas ou sistemas.
Opcionalmente, você pode 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.
Advertência
Integrar um namespace já existente a gerir pode causar perturbações. Se a cota de recursos aplicada for menor do que a que já é solicitada pelos pods, novas implementações e pods que excedam a cota serão negados. As implementações existentes não são afetadas, mas a escalabilidade é negada. Aplicar políticas de rede a um namespace existente pode afetar o tráfego existente. Assegure-se de que as políticas sejam testadas e validadas para evitar interrupções não intencionais na comunicação entre pods ou endpoints 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.
- IfIdentical: 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.
Advertência
A exclusão de um namespace gerenciado com a política Delete faz com que todos os recursos dentro desse namespace, como Implantações, Serviços, Ingressos e outros objetos do Kubernetes, sejam excluídos. Certifique-se de fazer backup ou migrar quaisquer recursos críticos antes de prosseguir.
As seguintes opções estão disponíveis:
-
Keep: exclua apenas o recurso de namespace gerenciado mantendo o namespace do Kubernetes intacto. Além disso, o
ManagedByARMrótulo é removido do namespace. - Excluir: exclua o recurso de namespace gerenciado e o namespace Kubernetes juntos.
Funções internas de namespaces gerenciados
Os namespaces gerenciados usam as seguintes funções internas para o plano de controle.
| Funções | Descrição |
|---|---|
| Azure Kubernetes Service Namespace Contributor | Permite o acesso para criar, atualizar e excluir namespaces gerenciados em um cluster. |
| Usuário do Namespace do Serviço Kubernetes do Azure | Permite o acesso apenas de leitura a um namespace gerido num cluster. Permite o acesso a credenciais de lista no namespace. |
Os namespaces gerenciados usam as seguintes funções internas para o plano de dados.
| Funções | Descrição |
|---|---|
| Azure Kubernetes Service RBAC Reader | Permite acesso somente leitura para ver a maioria dos objetos em um namespace. Ele não permite a visualização de funções ou associações de funções. Essa função não permite a visualização de Segredos, uma vez que a leitura do conteúdo de Segredos permite o acesso às credenciais ServiceAccount no namespace, o que permitiria o acesso à API como qualquer ServiceAccount no namespace (uma forma de escalonamento de privilégios). |
| Escritor RBAC do Serviço Kubernetes do Azure | Permite acesso de leitura/gravação à maioria dos objetos em um namespace. Esta função não permite visualizar ou modificar funções ou associações de funções. No entanto, esta função permite o acesso a Secrets e a execução de Pods como qualquer ServiceAccount no namespace, podendo ser usada para obter os níveis de acesso à API de qualquer ServiceAccount no mesmo namespace. |
| Azure Kubernetes Service RBAC Admin | Permite 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. Esta função não permite acesso de escrita à quota de recursos nem ao próprio namespace. |
Casos de utilização de espaços de nomes geridos
Configurar corretamente namespaces com quotas ou políticas de rede associadas pode ser complexo e demorado. Os namespaces geridos permitem-lhe configurar namespaces pré-configurados nos seus clusters AKS com os quais pode interagir usando a CLI do Azure.
As secções seguintes descrevem alguns casos de uso comuns para espaços de nomes geridos.
Gerir equipas e recursos no AKS
Imagina que és administrador numa pequena startup. Tem um cluster AKS provisionado e quer criar namespaces para programadores das suas equipas financeiras, jurídicas e de design . Ao configurar o ambiente da sua empresa, quer garantir que o acesso é rigorosamente controlado, os recursos estão devidamente definidos e os ambientes estão organizados corretamente.
A equipa financeira recebe formulários e ficheiros de equipas de toda a empresa, mas contêm informações sensíveis que, idealmente, não deveriam sair do seu ambiente. As suas aplicações e fluxos de trabalho são mais leves no lado da computação, mas consomem muita memória. Como resultado, decides criar um namespace que permita toda a entrada e saída da rede apenas dentro do seu namespace, e definir o âmbito dos seus recursos em conformidade. Um rótulo no namespace ajuda a identificar facilmente qual a equipa que o está a usar.
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=financeA equipa jurídica lida principalmente com dados sensíveis. As suas aplicações utilizam uma quantidade razoável de memória, mas requerem poucos recursos de computação. Decides criar um namespace extremamente restritivo tanto para as políticas de entrada/saída, como definir as quotas de recursos deles em conformidade.
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=legalA equipa de design precisa da capacidade de distribuir dados livremente para mostrar o seu trabalho em toda a empresa. Também incentivam as equipas a enviarem-lhes conteúdos para referência. As suas aplicações são intensivas e requerem uma grande quantidade de memória e CPU. Decides configurá-los com um espaço de nomes minimamente restritivo e alocar-lhes uma quantidade considerável de recursos.
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 estes namespaces configurados, agora tem ambientes para as três equipas da sua organização que devem permitir que cada equipa comece a funcionar num ambiente que melhor se adeque às suas necessidades. Os administradores podem usar chamadas de CLI Azure para atualizar os namespaces conforme as necessidades mudam.
Ver os namespaces geridos
À medida que o número de equipas com que lida aumenta, ou à medida que a sua organização cresce, pode ter de rever os namespaces que criou.
Imagina que queres rever os namespaces no teu cluster da secção anterior para garantir que existem três namespaces.
Use o az aks namespace list comando para rever os seus namespaces.
az aks namespace list \
--cluster-name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--output table
Sua saída deve ser semelhante à saída de exemplo a seguir:
Name ResourceGroup Location
------------------ --------------- ----------
$CLUSTER_NAME/$DESIGN_NAMESPACE $RESOURCE_GROUP <LOCATION>
$CLUSTER_NAME/$LEGAL_NAMESPACE $RESOURCE_GROUP <LOCATION>
$CLUSTER_NAME/$FINANCE_NAMESPACE $RESOURCE_GROUP <LOCATION>
Controla o acesso a namespaces geridos
Pode ainda usar as funções Azure RBAC, abrangendo cada namespace, para determinar quais os utilizadores que têm acesso a certas ações no interior do namespace. Com a configuração adequada, pode garantir que os utilizadores têm todo o acesso necessário dentro do namespace, limitando o seu acesso a outros namespaces ou recursos de cluster.
Próximos passos
- Saiba como criar e usar namespaces gerenciados no Serviço Kubernetes do Azure (AKS).
- Saiba mais sobre namespaces multi-cluster geridos com o Azure Kubernetes Fleet Manager.