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.
Important
Los clústeres de macrodatos de Microsoft SQL Server 2019 se retiran. La compatibilidad con clústeres de macrodatos de SQL Server 2019 finalizó a partir del 28 de febrero de 2025. Para obtener más información, consulte la entrada de blog del anuncio y las opciones de macrodatos en la plataforma de Microsoft SQL Server.
Puede restringir el tráfico de salida desde clústeres de macrodatos con Azure Kubernetes Service (AKS). El servicio aprovisiona un equilibrador de carga de SKU estándar. Se configura y se usa para la salida de forma predeterminada. Ahora, es posible que la configuración predeterminada no cumpla todos los escenarios y requisitos. Por ejemplo, si las direcciones IP públicas no están permitidas o se requieren saltos adicionales para la salida. Puede definir una tabla de ruta definida por el usuario (UDR) si el clúster no permite direcciones IP públicas y se encuentra detrás de una aplicación virtual de red (NVA).
Los clústeres de AKS tienen acceso a Internet de salida sin restricciones. Esto es para fines operativos y de administración. Los nodos de trabajo de un clúster de AKS necesitan acceder a determinados puertos y nombres de dominio completos (FQDN). A continuación se muestran ejemplos de esto:
- Cuando el clúster necesita extraer imágenes del contenedor del sistema base desde Microsoft Container Registry (MCR) durante las actualizaciones de seguridad del sistema operativo del nodo de procesamiento.
- Cuando los nodos de trabajo de AKS habilitados para GPU necesitan acceder a los puntos de conexión de Nvidia para instalar un controlador.
- Cuando los clientes usan AKS funcionan junto con los servicios de Azure, como Azure Policy para el cumplimiento de nivel empresarial, Azure Monitoring (con container insights).
- Cuando se habilita un espacio de desarrollo y otros escenarios similares.
Note
Al implementar un clúster de macrodatos (BDC) en un clúster privado de Azure Kubernetes Service (AKS), no hay dependencias entrantes excepto las mencionadas en este artículo. Puede encontrar todas las dependencias salientes en controlar el tráfico de salida de los nodos del clúster en Azure Kubernetes Service (AKS).
En este artículo se describe cómo implementar BDC en un clúster privado de AKS con redes avanzadas y UDR. También explora la integración adicional de BDC con entornos de red de nivel empresarial.
Restricción del tráfico de salida con Azure Firewall
Azure Firewall proporciona una etiqueta FQDN de Azure Kubernetes Service (AzureKubernetesService) para simplificar la configuración.
Para obtener información completa sobre la etiqueta FQDN, visite Restringir el tráfico de salida mediante Azure Firewall.
En la imagen siguiente se muestra cómo se restringe el tráfico en un clúster privado de AKS.
Desarrolle la arquitectura básica para un clúster de macrodatos con Azure Firewall:
- Creación del grupo de recursos y la red virtual
- Creación y configuración de Azure Firewall
- Creación de una tabla de rutas definida por el usuario
- Configuración de reglas de firewall
- Crear principal de servicio (SP)
- Creación de un clúster privado de AKS
- Creación de un perfil de implementación de BDC
- Deploy BDC
Creación del grupo de recursos y la red virtual
Defina un conjunto de variables de entorno para crear recursos.
export REGION_NAME=<region> export RESOURCE_GROUP=private-bdc-aksudr-rg export SUBNET_NAME=aks-subnet export VNET_NAME=bdc-vnet export AKS_NAME=bdcaksprivateclusterCreación del grupo de recursos
az group create -n $RESOURCE_GROUP -l $REGION_NAMECreación de la red virtual
az network vnet create \ --resource-group $RESOURCE_GROUP \ --location $REGION_NAME \ --name $VNET_NAME \ --address-prefixes 10.0.0.0/8 \ --subnet-name $SUBNET_NAME \ --subnet-prefix 10.1.0.0/16 SUBNET_ID=$(az network vnet subnet show \ --resource-group $RESOURCE_GROUP \ --vnet-name $VNET_NAME \ --name $SUBNET_NAME \ --query id -o tsv)
Creación y configuración de Azure Firewall
Defina un conjunto de variables de entorno para crear recursos.
export FWNAME=bdcaksazfw export FWPUBIP=$FWNAME-ip export FWIPCONFIG_NAME=$FWNAME-config az extension add --name azure-firewallCreación de una subred dedicada para el firewall
Note
No se puede cambiar el nombre del firewall después de la creación.
az network vnet subnet create \ --resource-group $RESOURCE_GROUP \ --vnet-name $VNET_NAME \ --name AzureFirewallSubnet \ --address-prefix 10.3.0.0/24 az network firewall create -g $RESOURCE_GROUP -n $FWNAME -l $REGION_NAME --enable-dns-proxy true az network public-ip create -g $RESOURCE_GROUP -n $FWPUBIP -l $REGION_NAME --sku "Standard" az network firewall ip-config create -g $RESOURCE_GROUP -f $FWNAME -n $FWIPCONFIG_NAME --public-ip-address $FWPUBIP --vnet-name $VNET_NAME
Azure enruta automáticamente el tráfico entre redes locales, las redes virtuales y las subredes de Azure.
Creación de una tabla de rutas definida por el usuario
Puede crear una tabla UDR con un salto a Azure Firewall.
export SUBID= <your Azure subscription ID>
export FWROUTE_TABLE_NAME=bdcaks-rt
export FWROUTE_NAME=bdcaksroute
export FWROUTE_NAME_INTERNET=bdcaksrouteinet
export FWPUBLIC_IP=$(az network public-ip show -g $RESOURCE_GROUP -n $FWPUBIP --query "ipAddress" -o tsv)
export FWPRIVATE_IP=$(az network firewall show -g $RESOURCE_GROUP -n $FWNAME --query "ipConfigurations[0].privateIpAddress" -o tsv)
# Create UDR and add a route for Azure Firewall
az network route-table create -g $RESOURCE_GROUP --name $FWROUTE_TABLE_NAME
az network route-table route create -g $RESOURCE_GROUP --name $FWROUTE_NAME --route-table-name $FWROUTE_TABLE_NAME --address-prefix 0.0.0.0/0 --next-hop-type VirtualAppliance --next-hop-ip-address $FWPRIVATE_IP --subscription $SUBID
az network route-table route create -g $RESOURCE_GROUP --name $FWROUTE_NAME_INTERNET --route-table-name $FWROUTE_TABLE_NAME --address-prefix $FWPUBLIC_IP/32 --next-hop-type Internet
Establecimiento de reglas de firewall
# Add FW Network Rules
az network firewall network-rule create -g $RESOURCE_GROUP -f $FWNAME --collection-name 'aksfwnr' -n 'apiudp' --protocols 'UDP' --source-addresses '*' --destination-addresses "AzureCloud.$REGION_NAME" --destination-ports 1194 --action allow --priority 100
az network firewall network-rule create -g $RESOURCE_GROUP -f $FWNAME --collection-name 'aksfwnr' -n 'apitcp' --protocols 'TCP' --source-addresses '*' --destination-addresses "AzureCloud.$REGION_NAME" --destination-ports 9000
az network firewall network-rule create -g $RESOURCE_GROUP -f $FWNAME --collection-name 'aksfwnr' -n 'time' --protocols 'UDP' --source-addresses '*' --destination-fqdns 'ntp.ubuntu.com' --destination-ports 123
# Add FW Application Rules
az network firewall application-rule create -g $RESOURCE_GROUP -f $FWNAME --collection-name 'aksfwar' -n 'fqdn' --source-addresses '*' --protocols 'http=80' 'https=443' --fqdn-tags "AzureKubernetesService" --action allow --priority 100
Puede asociar una UDR a un clúster de AKS donde implementó previamente un BDC mediante el siguiente comando:
az network vnet subnet update -g $RESOURCE_GROUP --vnet-name $VNET_NAME --name $SUBNET_NAME --route-table $FWROUTE_TABLE_NAME
Crear y configurar el principal del servicio (EP)
En este paso, debe crear la entidad de servicio y asignar permisos a la red virtual.
Vea el ejemplo siguiente:
# Create SP and Assign Permission to Virtual Network
az ad sp create-for-rbac -n "bdcaks-sp"
APPID=<your service principal ID >
PASSWORD=< your service principal password >
VNETID=$(az network vnet show -g $RESOURCE_GROUP --name $VNET_NAME --query id -o tsv)
# Assign SP Permission to VNET
az role assignment create --assignee $APPID --scope $VNETID --role "Network Contributor"
RTID=$(az network route-table show -g $RESOURCE_GROUP -n $FWROUTE_TABLE_NAME --query id -o tsv)
az role assignment create --assignee $APPID --scope $RTID --role "Network Contributor"
Creación de un clúster de AKS
Ahora puede crear el clúster de AKS con userDefinedRouting como tipo de salida.
az aks create \
--resource-group $RESOURCE_GROUP \
--location $REGION_NAME \
--name $AKS_NAME \
--load-balancer-sku standard \
--outbound-type userDefinedRouting \
--enable-private-cluster \
--network-plugin azure \
--vnet-subnet-id $SUBNET_ID \
--docker-bridge-address 172.17.0.1/16 \
--dns-service-ip 10.2.0.10 \
--service-cidr 10.2.0.0/24 \
--service-principal $APPID \
--client-secret $PASSWORD \
--node-vm-size Standard_D13_v2 \
--node-count 2 \
--generate-ssh-keys
Creación de un perfil de implementación de clústeres de macrodatos
Puede crear un clúster de macrodatos con un perfil personalizado:
azdata bdc config init --source aks-dev-test --target private-bdc-aks --force
Generación y configuración de un perfil de implementación de BDC personalizado
azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.docker.imageTag=2019-CU6-ubuntu-16.04"
azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.storage.data.className=default"
azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.storage.logs.className=default"
azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.endpoints[0].serviceType=NodePort"
azdata bdc config replace -c private-bdc-aks/control.json -j "$.spec.endpoints[1].serviceType=NodePort"
azdata bdc config replace -c private-bdc-aks/bdc.json -j "$.spec.resources.master.spec.endpoints[0].serviceType=NodePort"
azdata bdc config replace -c private-bdc-aks/bdc.json -j "$.spec.resources.gateway.spec.endpoints[0].serviceType=NodePort"
azdata bdc config replace -c private-bdc-aks/bdc.json -j "$.spec.resources.appproxy.spec.endpoints[0].serviceType=NodePort"
Implementación de un BDC en un clúster privado de AKS
export AZDATA_USERNAME=<your bdcadmin username>
export AZDATA_PASSWORD=< your bdcadmin password>
azdata bdc create --config-profile private-bdc-aks --accept-eula yes
¿Puedo usar firewalls de terceros para restringir el tráfico de salida?
Puede usar firewalls de terceros para restringir el tráfico de salida con un clúster privado de BDC y AKS implementado. Para ver un ejemplo, visite Firewalls de Azure Marketplace. Los firewalls de terceros se pueden usar en soluciones de implementación privada con configuraciones más compatibles. El firewall debe proporcionar las siguientes reglas de red:
- Vea todas las reglas de red de salida y los FQDN necesarios para los clústeres de AKS. Esta dirección URL también incluye todos los puntos de conexión y dependencias HTTP/HTTPS con caracteres comodín. Estos aspectos pueden variar con tu clúster de AKS, en función de una serie de calificadores y tus requisitos reales.
- Reglas de red requeridas de Azure Global, reglas de FQDN/aplicación mencionadas aquí.
- Reglas de aplicación o FQDN recomendadas opcionales para los clústeres de AKS mencionados aquí.
Compruebe cómo administrar un clúster de macrodatos en un clúster privado de AKS y, a continuación, el siguiente paso es conectarse a un clúster de macrodatos.
Consulte los scripts de automatización para este escenario en el repositorio de muestras de SQL Server en GitHub.