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.
En este artículo se muestra cómo implementar el cifrado wireGuard 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 Get started with Azure Cloud Shell.
Si prefiere ejecutar comandos de referencia de la CLI localmente, instale la CLI de Azure. Si se ejecuta en Windows o macOS, considere la posibilidad de ejecutar Azure CLI en un contenedor de Docker. Para obtener más información, consulte Cómo ejecutar el Azure CLI en un contenedor de Docker.
Si usa una instalación local, inicie sesión en el Azure CLI mediante 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 Authenticate para Azure con Azure CLI.
Cuando se le solicite, instale la extensión Azure CLI en el primer uso. Para obtener más información sobre las extensiones, consulte Use y administre extensiones con el Azure CLI.
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 Azure CLI necesaria para los pasos de este artículo es 2.71.0. Para encontrar la versión, ejecute
az --version. Si necesita instalar o actualizar, consulte Install Azure CLI.El cifrado wireGuard solo se admite con el Azure CNI con tecnología de Cilium. Si usa cualquier otro complemento de red, no se admite el cifrado de WireGuard. Consulte Configure Azure CNI Powered by Cilium.
WireGuard establece túneles cifrados a través del puerto UDP 51871, que se expone en cada nodo de AKS. Asegúrese de que se permite el puerto UDP 51871 entre todas las direcciones IP de nodo, especialmente si el entorno usa firewalls.
Habilitación de Advanced Container Networking Services y WireGuard
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 la red de contenedor.
Seguridad de red del contenedor: Ofrece características de seguridad como el filtrado de nombres de dominio completos (FQDN). 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 la red de contenedor y la seguridad de la red de contenedor a partir de la versión 1.29 de Kubernetes.
WireGuard está deshabilitado de forma predeterminada incluso después de habilitar Advanced Container Networking Services. Para habilitar WireGuard, establezca el tipo de cifrado mediante la marca --acns-transit-encryption-type wireguard.
# 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 wireguard \
--generate-ssh-keys
Habilitación de Advanced Container Networking Services y WireGuard 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 WireGuard en un clúster existente, se desencadenará un reinicio de despliegue del agente de Cilium en todos los nodos. En el caso de los clústeres grandes, este proceso puede tardar algún tiempo y puede afectar temporalmente a las cargas de trabajo. Se recomienda planear la actualización durante una ventana de mantenimiento o un período de tráfico bajo para minimizar la interrupción.
Nota:
Solo los clústeres con el plano de datos de Cilium admiten características de seguridad de red de contenedor de Advanced Container Networking Services.
WireGuard está deshabilitado de forma predeterminada incluso después de habilitar Advanced Container Networking Services. Para habilitar WireGuard, establezca el tipo de cifrado mediante la marca --acns-transit-encryption-type wireguard.
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-acns \
--acns-transit-encryption-type wireguard
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
Validación de la configuración
Compruebe que WireGuard está habilitado correctamente mediante la CLI de cilium-dbg
Nota:
WireGuard puede tardar unos minutos en habilitarse completamente y configurarse en todos los nodos después de la activación.
- Ejecute un shell de Bash en uno de los pods de Cilium
kubectl -n kube-system exec -ti ds/cilium -- bash
- Compruebe que WireGuard está habilitado
cilium-dbg encrypt status
Resultado esperado:
Encryption: Wireguard
Interface: cilium_wg0
Public key: jikeOvVATORm/1GD0kZLxKhw1lofdsfdgiXWVyVIR3T0=
Number of peers: 2
El número de elementos del mismo nivel debe ser igual al número de nodos menos uno.
Solución de problemas
Cuando el cifrado WireGuard está habilitado en un clúster de AKS mediante CNI de Cilium, puede usar la herramienta CLI cilium-dbg para inspeccionar el estado del túnel, comprobar la conectividad entre pares y depurar problemas relacionados con el cifrado.
Inspección de elementos del mismo nivel de WireGuard
Puede inspeccionar el estado y la configuración del nodo par en cada nodo mediante:
kubectl exec -n kube-system ds/cilium -- cilium-dbg debuginfo --output json | jq .encryption
Resultado esperado:
{
"wireguard": {
"interfaces": [
{
"listen-port": 51871,
"name": "cilium_wg0",
"peer-count": 1,
"peers": [
{
"allowed-ips": [
"10.244.1.31/32",
"10.244.1.206/32",
"10.224.0.6/32"
],
"endpoint": "10.224.0.6:51871",
"last-handshake-time": "2025-04-24T11:13:49.102Z",
"public-key": "3qwZEQLdK5IcFcdXxtr1m8RkDqznPVWEEirJ88+zDyk=",
"transfer-rx": 2457024,
"transfer-tx": 15746568
}
],
"public-key": "jikeOvVATORm/1GD0kZLxKhw1lofdsfdgiXWVyVIR3T0="
}
],
"node-encryption": "Disabled"
}
}
Esta salida muestra el estado actual del cifrado wireGuard en el nodo.
- listen-port: el puerto UDP (51871) donde este nodo escucha el tráfico cifrado de los pares.
- peer-count: número de pares de WireGuard remotos configurados para este nodo.
- Compañeros:
- allowed-ips: lista de direcciones IP de pod enrutadas a través del túnel cifrado a este mismo nivel.
- endpoint: la dirección IP y el puerto de la interfaz WireGuard del par remoto.
- last-handshake-time: marca temporal del intercambio de claves exitoso más reciente con este par de red.
- public-key: la clave pública del par remoto.
- transfer-rx/transfer-tx: el número total de bytes recibidos o transmitidos a través del túnel.
- public-key: la clave pública de la interfaz local wireGuard.
- node-encryption: cifra el tráfico que se origina desde el propio nodo o desde pods de red host. En la actualidad, solo se cifra el tráfico de los pods. El cifrado de nodo aún no se admite y permanece deshabilitado de forma predeterminada.
Deshabilitación de WireGuard en un clúster existente
WireGuard se puede deshabilitar de forma independiente sin afectar a otras características de Advanced Container Networking Services. Para deshabilitarlo, establezca la marca --acns-transit-encryption-type=none.
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-acns \
--acns-transit-encryption-type none
Problemas conocidos
- Es posible que los paquetes se pierdan al configurar el dispositivo WireGuard, lo que puede causar problemas de conectividad. Este problema se produce cuando se agregan o quitan puntos de conexión o cuando se producen actualizaciones de nodo. En algunos casos, este problema podría dar lugar a llamadas erróneas a sendmsg y sendto. Para obtener más información, vea GitHub problema 33159.