Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
El cifrado mTLS de Cilium con Advanced Cluster Networking Services se encuentra actualmente en versión preliminar. Consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure para conocer los términos legales que se aplican a las características de Azure que se encuentran en la versión beta, en versión preliminar o que todavía no se han publicado para que estén disponibles con carácter general.
En este artículo se muestra cómo implementar el cifrado mTLS de Cilium con Advanced Container Networking Services en clústeres de Azure Kubernetes Service (AKS).
Prerrequisitos
- Una cuenta de Azure con una suscripción activa. Si no tienes una, crea una cuenta gratuita antes de empezar.
Use el entorno de Bash en Azure Cloud Shell. Para obtener más información, consulte Introducción a Azure Cloud Shell.
Si prefieres ejecutar comandos de referencia CLI localmente, instala la CLI de Azure. Si estás utilizando Windows o macOS, considera ejecutar Azure CLI en un contenedor Docker. Para obtener más información, consulte Cómo ejecutar el Azure CLI en un contenedor de Docker.
Si estás utilizando una instalación local, inicia sesión en Azure CLI utilizando el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Autenticación en Azure mediante la CLI de Azure.
Cuando se le solicite, instale la extensión Azure CLI en el primer uso. Para obtener más información sobre las extensiones, consulte Uso y administración de extensiones con la CLI de Azure.
Ejecute az version para ver la versión y las bibliotecas dependientes que están instaladas. Para actualizar a la versión más reciente, ejecute az upgrade.
La versión mínima de la CLI de Azure necesaria para los pasos de este artículo es la 2.71.0. Para encontrar la versión, ejecute
az --version. Si necesita instalar o actualizar, consulte Install Azure CLI.El cifrado mTLS de Cilium solo se admite con Azure CNI impulsado por Cilium. Si usa cualquier otro complemento de red, no se admite el cifrado mTLS de Cilium. Consulte Configuración de Azure CNI Powered by Cilium.
Asegúrese de que el clúster de AKS ejecuta Kubernetes versión 1.34.0 o posterior.
Asegúrese de que el clúster usa la versión 1.18 o posterior de Cilium.
Instalación de la extensión de la CLI de Azure aks-preview
Importante
Las características en versión preliminar de AKS están disponibles a elección del usuario y en régimen de autoservicio. Las versiones preliminares se proporcionan "tal cual" y "como están disponibles", y están excluidas de los Acuerdos de nivel de servicio y garantía limitada. Las versiones preliminares de AKS cuentan con soporte parcial por parte del servicio al cliente en la medida de lo posible. Por lo tanto, estas características no están diseñadas para su uso en producción. Para más información, consulte los siguientes artículos de soporte:
Instale o actualice la extensión de versión preliminar de la CLI de Azure mediante el az extension add comando o az extension update .
La versión mínima de la extensión de la CLI de Azure aks-preview es 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
Registro de la marca de característica AdvancedNetworkingmTLSPreview
Registre la marca de características de AdvancedNetworkingmTLSPreview mediante el comando az feature register.
az feature register --namespace "Microsoft.ContainerService" --name "AdvancedNetworkingmTLSPreview"
Compruebe el registro correcto mediante el az feature show comando . El registro tarda unos minutos en completarse.
az feature show --namespace "Microsoft.ContainerService" --name "AdvancedNetworkingmTLSPreview"
Una vez que la característica muestre Registered, actualice el registro del Microsoft.ContainerService proveedor de recursos mediante el az provider register comando .
Habilitación de Advanced Container Networking Services y cifrado mTLS
Para continuar, debe tener un clúster de AKS con Servicios avanzados de redes de contenedores habilitado.
El comando az aks create con la marca Advanced Container Networking Services, --enable-acns, crea un nuevo clúster de AKS con todas las características avanzadas de Container Networking Services. Estas características abarcan:
Observabilidad de red de contenedor: Proporciona información sobre el tráfico de red. Para obtener más información, visite Observabilidad de Red de Contenedores.
Seguridad de red del contenedor: Ofrece características de seguridad como el filtrado de nombres de dominio completo (FQDN), la directiva L7 y el cifrado en tránsito. Para más información, visite Seguridad de red de contenedores.
Nota:
Los clústeres con el plano de datos de Cilium admiten la observabilidad de red de contenedor y la seguridad de red de contenedor a partir de la versión 1.29 de Kubernetes.
Nota:
El cifrado mTLS de Cilium está deshabilitado de forma predeterminada incluso después de habilitar ACNS. Para habilitar mTLS, establezca el tipo de cifrado mediante la marca --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
Habilitación de Advanced Container Networking Services y cifrado mTLS en un clúster existente
El az aks update comando con la marca Advanced Container Networking Services, --enable-acns, actualiza un clúster de AKS existente con todas las características de Advanced Container Networking Services, que incluyen Container Network Observability y la característica Container Network Security.
Importante
Al habilitar el cifrado mTLS en un clúster existente, se desencadena un reinicio de lanzamiento del agente de Cilium en todos los nodos. En el caso de los clústeres de gran tamaño, este proceso puede tardar algún tiempo y puede afectar temporalmente a las cargas de trabajo. Planee la actualización durante una ventana de mantenimiento o un período de tráfico bajo para minimizar la interrupción.
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-acns \
--acns-transit-encryption-type mTLS
Obtener credenciales del clúster
Obtenga las credenciales del clúster mediante el az aks get-credentials comando .
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Inscribir un espacio de nombres
Para inscribir una aplicación en mTLS, aplique la etiqueta mTLS al espacio de nombres que contiene los pods de aplicación.
kubectl label namespace <namespace-name> io.cilium/mtls-enabled=true
El tráfico entre cargas de trabajo inscritas y no inscritas continúa en texto no cifrado sin causar problemas de conectividad o errores duros.
Comprobación de que mTLS está habilitado
Después de inscribir un espacio de nombres para Cilium mTLS, puede comprobar que la autenticación y el cifrado están activos mediante los métodos siguientes.
Compruebe que ztunnel se ha habilitado:
kubectl -n kube-system describe cm cilium-config | grep enable-ztunnel -A2Debería ver la salida que indica que el cifrado ztunnel está habilitado.
Compruebe qué espacios de nombres están habilitados:
kubectl get namespaces -l io.cilium/mtls-enabled=trueEsto muestra todos los namespaces etiquetados para el registro de ztunnel.
Para comprobar que estos espacios de nombres están inscritos realmente en la tabla StateDB:
kubectl exec -n kube-system ds/cilium -- cilium-dbg statedb dump | jq '.["mtls-enrolled-namespaces"]'Los resultados de esta consulta deben mostrar qué espacios de nombres se han procesado correctamente por el conciliador de inscripciones.
Verificar que los pods estén inscritos en SPIRE
Ejecutar el comando dentro del contenedor de SPIRE Server y listar las entradas.
kubectl exec -n kube-system spire-server-0 -c spire-server -- \ /opt/spire/bin/spire-server entry showEste comando consulta el almacén de datos de SPIRE Server e imprime todas las identidades de carga de trabajo registradas.
Busque entradas que coincidan con el formato SPIFFE:
spiffe://<trust-domain>/ns/<namespace>/sa/<serviceaccount>Verificar la inscripción de pods en ztunnel
Ztunnel expone un punto de conexión de administrador local que permite inspeccionar su configuración activa, incluidas las cargas de trabajo inscritas.
Seleccione un pod ztunnel.
kubectl get pods -n kube-system \ -l app.kubernetes.io/name=ztunnel-cilium \ -o wideReenviar el punto de conexión de administración de ztunnel. ztunnel expone una API de administrador en el puerto 15000 (solo localhost de forma predeterminada).
kubectl port-forward -n kube-system <ZTUNNEL_POD> 15000:15000Inspeccione el volcado de configuración de ztunnel.
curl -s http://localhost:15000/config_dump | jqCompruebe que el pod está registrado. Busque en el volcado de configuración la identidad de SPIFFE o el espacio de nombres/la cuenta de servicio de su carga de trabajo. Las entradas deben ser parecidas a los siguientes resultados:
"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"
}
]
Deshabilitación de mTLS en un clúster existente
Se recomienda dar de baja los espacios de nombres de mTLS antes de deshabilitarlo.
kubectl label namespace <namespace-name> io.cilium/mtls-enabled-
El cifrado mTLS se puede deshabilitar independientemente sin afectar a otras características de ACNS. Para deshabilitarlo, establezca la marca --acns-transit-encryption-type a none.
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-acns \
--acns-transit-encryption-type none