Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Importante
A encriptação Cilium mTLS com os Serviços de Rede Avançada de Cluster está atualmente em pré-visualização. Consulte os Termos de Utilização Complementares das Visualizações Prévias do Microsoft Azure para obter os termos legais que se aplicam às funcionalidades do Azure que estão em beta, em pré-visualização ou que ainda não foram lançadas para disponibilidade geral.
Este artigo mostra-lhe como implementar encriptação Cilium mTLS com Advanced Container Networking Services em clusters Azure Kubernetes Service (AKS).
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Se você não tiver uma, crie uma conta gratuita antes de começar.
Usa o ambiente Bash em Azure Cloud Shell. Para mais informações, veja Get started with Azure Cloud Shell.
Se preferires executar comandos de referência de CLI localmente, instala a Azure CLI. Se estiver a usar Windows ou macOS, considere executar o Azure CLI num contentor Docker. Para mais informações, veja Como executar o Azure CLI num contentor Docker.
Se você estiver usando uma instalação local, entre na CLI do Azure usando o comando az login . Para concluir o processo de autenticação, siga os passos exibidos no seu terminal. Para outras opções de iniciação de sessão, veja Autenticar para Azure usando Azure CLI.
Quando solicitado, instale a extensão do Azure CLI na primeira utilização. Para mais informações sobre extensões, veja Usar e gerir extensões com a Azure CLI.
Execute az version para descobrir a versão e as bibliotecas dependentes que estão instaladas. Para atualizar para a versão mais recente, execute az upgrade.
A versão mínima da CLI do Azure necessária para as etapas neste artigo é 2.71.0. Para localizar a versão, execute
az --version. Se precisar de instalar ou atualizar, consulte Install Azure CLI.A encriptação Cilium mTLS é suportada apenas com o Azure CNI alimentado por Cilium. Se estiveres a usar qualquer outro plugin de rede, a encriptação Cilium mTLS não é suportada. Veja Configurar o Azure CNI Powered by Cilium.
Certifique-se de que o seu cluster AKS está a correr a versão Kubernetes 1.34.0 ou posterior.
Certifique-se de que o seu cluster está a usar Cilium versão 1.18 ou posterior.
Instalar a extensão da CLI do aks-preview Azure
Importante
Os recursos de pré-visualização do AKS estão disponíveis numa base de autosserviço e adesão voluntária. As visualizações prévias são fornecidas "como estão" e "conforme disponíveis" e são excluídas dos contratos de nível de serviço e da garantia limitada. As versões de teste do AKS são parcialmente cobertas pelo suporte ao cliente numa base de melhor esforço. Assim sendo, estas funcionalidades não se destinam ao uso em produção. Para obter mais informações, consulte os seguintes artigos de suporte:
Instale ou atualize a extensão de pré-visualização da CLI do Azure usando o comando az extension add ou az extension update.
A versão mínima da extensão aks-preview Azure CLI é 14.0.0b6.
# Install the aks-preview extension
az extension add --name aks-preview
# Update the extension to make sure you have the latest version installed
az extension update --name aks-preview
Registar o sinalizador de funcionalidade AdvancedNetworkingmTLSPreview
Registe o sinalizador de funcionalidade AdvancedNetworkingmTLSPreview com o comando az feature register.
az feature register --namespace "Microsoft.ContainerService" --name "AdvancedNetworkingmTLSPreview"
Verifique o registro bem-sucedido usando o az feature show comando. O registo demora alguns minutos a ser concluído.
az feature show --namespace "Microsoft.ContainerService" --name "AdvancedNetworkingmTLSPreview"
Depois de o recurso ser exibido Registered, atualize o registro do Microsoft.ContainerService provedor de recursos usando o comando az provider register.
Ativar Serviços Avançados de Rede de Contentores e encriptação mTLS
Para continuar, você deve ter um cluster AKS com Advanced Container Networking Services habilitado.
O az aks create comando com o sinalizador Advanced Container Networking Services, --enable-acns, cria um novo cluster AKS com todos os recursos Advanced Container Networking Services. Estas características abrangem:
Observabilidade da rede de contêineres: fornece informações sobre o tráfego da rede. Para saber mais, visite Container Network Observability.
Segurança da Rede de Contentores: Oferece funcionalidades de segurança como filtragem de Nomes de Domínio Totalmente Qualificados (FQDN), Política L7 e encriptação em trânsito. Para saber mais, visite Container Network Security.
Observação
Clusters com o plano de dados Cilium suportam a Observabilidade da Rede de Contentores e a Segurança da Rede de Contentores a partir da versão 1.29 do Kubernetes.
Observação
A encriptação Cilium mTLS está desativada por defeito mesmo depois de ativar o ACNS. Para ativar o mTLS, defina o tipo de encriptação usando a flag --acns-transit-encryption-type mTLS.
# Set environment variables for the AKS cluster name and resource group. Make sure to replace the placeholders with your own values.
export CLUSTER_NAME="<aks-cluster-name>"
export RESOURCE_GROUP="<resourcegroup-name>"
# Create an AKS cluster
az aks create \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--location eastus \
--network-plugin azure \
--network-plugin-mode overlay \
--network-dataplane cilium \
--enable-acns \
--acns-transit-encryption-type mTLS \
--generate-ssh-keys
Ativar Serviços Avançados de Rede de Contentores e encriptação mTLS num cluster existente
O az aks update comando com o sinalizador Advanced Container Networking Services, --enable-acns, atualiza um cluster AKS existente com todos os recursos Advanced Container Networking Services, que inclui Observabilidade de Rede de Contêiner e o recurso Segurança de Rede de Contêiner .
Importante
Ativar a encriptação mTLS num cluster existente desencadeia um reinício de implementação do agente Cilium em todos os nós. Para clusters grandes, este processo pode demorar algum tempo e afetar temporariamente as cargas de trabalho. Planeie a atualização durante uma janela de manutenção ou período de baixo tráfego para minimizar a interrupção.
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-acns \
--acns-transit-encryption-type mTLS
Obter credenciais de cluster
Obtenha suas credenciais de cluster usando o az aks get-credentials comando.
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Inscrever um namespace
Para inscrever uma aplicação em mTLS, aplique o rótulo mTLS ao espaço de nomes que contém os pods da aplicação.
kubectl label namespace <namespace-name> io.cilium/mtls-enabled=true
O tráfego entre cargas de trabalho inscritas e não inscritas continua em texto simples sem causar problemas de conectividade ou falhas graves.
Verificar se o mTLS está ativado
Após inscrever um namespace para o Cilium mTLS, pode verificar que a autenticação e a encriptação estão ativas usando os seguintes métodos.
Verifica se o ztunnel foi ativado:
kubectl -n kube-system describe cm cilium-config | grep enable-ztunnel -A2Deverias ver o resultado a indicar que a encriptação do ztunnel está ativada.
Verifique quais os namespaces inscritos:
kubectl get namespaces -l io.cilium/mtls-enabled=trueIsto mostra todos os namespaces rotulados para a inscrição no ztunnel.
Para verificar se estes namespaces estão realmente inscritos na tabela StateDB:
kubectl exec -n kube-system ds/cilium -- cilium-dbg statedb dump | jq '.["mtls-enrolled-namespaces"]'Os resultados desta consulta devem mostrar quais os namespaces que foram processados com sucesso pelo conciliador de inscrições.
Verifique se os pods estão inscritos no SPIRE
Executar no contentor do Servidor SPIRE e listar entradas:
kubectl exec -n kube-system spire-server-0 -c spire-server -- \ /opt/spire/bin/spire-server entry showEste comando consulta o armazenamento de dados SPIRE Server e imprime todas as identidades de cargas de trabalho registadas.
Procure entradas que correspondam ao formato SPIFFE:
spiffe://<trust-domain>/ns/<namespace>/sa/<serviceaccount>Verificar a inscrição de pods no ztunnel
O Ztunnel expõe um endpoint administrativo local que permite inspecionar a sua configuração ativa, incluindo cargas de trabalho inscritas.
Selecione um pod ztunnel.
kubectl get pods -n kube-system \ -l app.kubernetes.io/name=ztunnel-cilium \ -o wideRedirecionar porta para o endpoint de administração do ztunnel. ztunnel expõe uma API de administração na porta 15000 (apenas para localhost por defeito).
kubectl port-forward -n kube-system <ZTUNNEL_POD> 15000:15000Inspeciona o dump de configuração do ztunnel.
curl -s http://localhost:15000/config_dump | jqVerifica se o teu pod está registado. Procura no dump de configuração a identidade SPIFFE da tua carga de trabalho ou a conta de namespace/serviço. Deverá ver entradas como o exemplo abaixo:
"workloads": [
{
"capacity": 1,
"clusterId": "Kubernetes",
"name": "test-server-5dc49df4cf-grr2f",
"namespace": "ztunnel-test-enrolled",
"networkMode": "Standard",
"node": "10.224.0.5",
"protocol": "HBONE",
"serviceAccount": "default",
"status": "Healthy",
"trustDomain": "cluster.local",
"uid": "30f37433-a83f-4e30-9946-f62cf5d10924",
"workloadIps": [
"192.168.0.50"
],
"workloadType": "deployment"
}
]
Desativar o mTLS num cluster existente
Recomenda-se desinscribir namespaces do mTLS antes de o desativar.
kubectl label namespace <namespace-name> io.cilium/mtls-enabled-
A encriptação mTLS pode ser desativada independentemente sem afetar outras funcionalidades da ACNS. Para o desativar, defina o flag --acns-transit-encryption-type para none.
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-acns \
--acns-transit-encryption-type none