Implementación de un clúster de macrodatos en el clúster privado de Azure Kubernetes Service (AKS)

Importante

El complemento Clústeres de macrodatos de Microsoft SQL Server 2019 se va a retirar. La compatibilidad con Clústeres de macrodatos de SQL Server 2019 finalizará el 28 de febrero de 2025. Todos los usuarios existentes de SQL Server 2019 con Software Assurance serán totalmente compatibles con la plataforma, y el software se seguirá conservando a través de actualizaciones acumulativas de SQL Server hasta ese momento. Para más información, consulte la entrada de blog sobre el anuncio y Opciones de macrodatos en la plataforma Microsoft SQL Server.

En este artículo se explica cómo implementar clústeres de macrodatos de SQL Server en el clúster privado de Azure Kubernetes Service (AKS). Esta configuración admite el uso restringido de direcciones IP públicas en el entorno de redes de empresa.

Una implementación privada proporciona las siguientes ventajas:

  • Uso restringido de direcciones IP públicas.
  • El tráfico de red entre los servidores de aplicaciones y los grupos de nodos de clúster se mantiene solo en la red privada.
  • Configuración personalizada para los tráficos de salida obligatorios para ajustarse a requisitos específicos

En este artículo se muestra cómo usar un clúster privado de AKS para restringir el uso de la dirección IP pública cuando están aplicadas las cadenas de seguridad respectivas.

Implementación de un clúster de macrodatos privado con un clúster privado de AKS

Para empezar, cree un clúster privado de AKS para asegurarse de que el tráfico de red entre el servidor de API y los grupos de nodos permanece solo en la red privada. El plano de control o el servidor de API tiene direcciones IP internas en un clúster privado de AKS.

En esta sección se muestra cómo implementar un clúster de macrodatos en un clúster privado de Azure Kubernetes Service (AKS) con redes avanzadas (CNI).

Creación de un clúster de AKS privado con redes avanzadas


export REGION_NAME=<your Azure region >
export RESOURCE_GROUP=< your resource group name >
export SUBNET_NAME=aks-subnet
export VNET_NAME=bdc-vnet
export AKS_NAME=< your aks private cluster name >
 
az group create -n $RESOURCE_GROUP -l $REGION_NAME
 
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)
 
echo $SUBNET_ID
## will be displayed something similar as the following: 
/subscriptions/xxxx-xxxx-xxx-xxxx-xxxxxxxx/resourceGroups/your-bdc-rg/providers/Microsoft.Network/virtualNetworks/your-aks-vnet/subnets/your-aks-subnet

Creación de un clúster privado de AKS con redes avanzadas (CNI)

Para avanzar al paso siguiente, debe aprovisionar un clúster de AKS con Standard Load Balancer con la característica de clúster privado habilitada. El comando tendrá el siguiente aspecto:

az aks create \
    --resource-group $RESOURCE_GROUP \
    --name $AKS_NAME \
    --load-balancer-sku standard \
    --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 \
    --node-vm-size Standard_D13_v2 \
    --node-count 2 \
    --generate-ssh-keys

Una vez que la implementación sea correcta, puede ir al grupo de recursos <MC_yourakscluster> y encontrará que kube-apiserver es un punto de conexión privado. Por ejemplo, consulte la sección siguiente.

Conexión a un clúster de ACS

az aks get-credentials -n $AKS_NAME -g $RESOURCE_GROUP

Compilación del perfil de implementación del clúster de macrodatos

Después de conectarse a un clúster de AKS, puede empezar a implementar el clúster de macrodatos, y puede preparar la variable de entorno e iniciar una implementación:

azdata bdc config init --source aks-dev-test --target private-bdc-aks --force

Generación y configuración de un perfil de implementación personalizado de clúster de macrodatos:

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 clúster de macrodatos de SQL Server privado con alta disponibilidad

En caso de que implemente un clúster de macrodatos de SQL Server (SQL-BDC) con alta disponibilidad (HA), usará el perfil de implementación aks-dev-test-ha. Una vez que se ha completado correctamente la implementación, puede usar el mismo comando kubectl get svc y verá que se crea un servicio master-secondary-svc adicional. No es necesario configurar ServiceType como NodePort. Otros pasos serán similares a lo que se mencionó en la sección anterior.

En el siguiente ejemplo se establece ServiceType como NodePort:

azdata bdc config replace -c private-bdc-aks /bdc.json -j "$.spec.resources.master.spec.endpoints[1].serviceType=NodePort"

Implementación del clúster de macrodatos en el 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

Comprobar el estado de implementación

La implementación tardará unos minutos; puede usar el siguiente comando para comprobar el estado de la implementación:

kubectl get pods -n mssql-cluster -w

Comprobación del estado del servicio

Utilice el comando siguiente para comprobar los servicios. Compruebe que todos sean correctos sin direcciones IP externas:

kubectl get services -n mssql-cluster

Vea cómo administrar un clúster de macrodatos en el clúster privado de AKS y, después, el paso siguiente consiste en conectarse a un clúster de macrodatos de SQL Server.

Vea scripts de automatización para este escenario en el repositorio de ejemplos de SQL Server en GitHub.