Membatasi lalu lintas keluar dari Kluster Big Data SQL Server 2019 di kluster privat Azure Kubernetes Service (AKS)

Penting

Add-on Kluster Big Data Microsoft SQL Server 2019 akan dihentikan. Dukungan untuk SQL Server 2019 Kluster Big Data akan berakhir pada 28 Februari 2025. Semua pengguna SQL Server 2019 yang ada dengan Jaminan Perangkat Lunak akan didukung sepenuhnya pada platform dan perangkat lunak akan terus dipertahankan melalui pembaruan kumulatif SQL Server hingga saat itu. Untuk informasi selengkapnya, lihat posting blog pengumuman dan Opsi big data di platform Microsoft SQL Server.

Anda dapat membatasi lalu lintas keluar dari Kluster Big Data dengan Azure Kubernetes Service (AKS). Layanan ini menyediakan Load Balancer SKU standar. Ini disiapkan dan digunakan untuk keluar secara default. Sekarang, pengaturan default mungkin tidak memenuhi semua skenario dan persyaratan. Misalnya, jika IP publik tidak diizinkan atau hop tambahan diperlukan untuk keluar. Anda dapat menentukan tabel rute yang ditentukan pengguna (UDR) jika kluster melarang IP publik dan berada di belakang appliance virtual jaringan (NVA).

Kluster AKS memiliki akses internet keluar (keluar) yang tidak dibatasi. Ini untuk tujuan manajemen dan operasional. Simpul pekerja dalam kluster AKS perlu mengakses port tertentu dan nama domain yang sepenuhnya memenuhi syarat (FQDN). Berikut ini adalah contohnya:

  • Ketika kluster perlu menarik gambar kontainer sistem dasar dari Microsoft Container Registry (MCR) selama pembaruan keamanan OS simpul pekerja.
  • Ketika simpul pekerja AKS yang diaktifkan GPU perlu mengakses titik akhir dari Nvidia untuk menginstal driver.
  • Saat pelanggan menggunakan AKS berfungsi bersama dengan layanan Azure, seperti kebijakan Azure untuk kepatuhan tingkat perusahaan, Azure Monitoring (dengan wawasan kontainer).
  • Saat Dev Space diaktifkan, dan skenario serupa lainnya.

Catatan

Saat Anda menyebarkan kluster big data (BDC) di kluster privat Azure Kubernetes Service (AKS), tidak ada dependensi masuk kecuali yang disebutkan dalam artikel ini. Anda dapat menemukan semua dependensi keluar pada lalu lintas keluar kontrol untuk node kluster di Azure Kubernetes Service (AKS) .

Artikel ini menjelaskan cara menyebarkan BDC di kluster privat AKS dengan jaringan tingkat lanjut dan UDR. Ini juga mengeksplorasi integrasi lebih lanjut BDC dengan lingkungan jaringan tingkat perusahaan.

Cara membatasi lalu lintas keluar dengan firewall Azure

Azure Firewall menyediakan tag Azure Kubernetes Service (AzureKubernetesService) FQDN untuk menyederhanakan konfigurasi.

Untuk informasi lengkap tentang tag FQDN, kunjungi Membatasi lalu lintas keluar menggunakan firewall Azure.

Gambar berikut menunjukkan bagaimana lalu lintas dibatasi pada kluster privat AKS.

Screenshot that shows AKS private cluster firewall egress traffic.

Kembangkan arsitektur dasar untuk Kluster Big Data dengan Azure Firewall:

  1. Membuat grup sumber daya & VNet
  2. Membuat &menyiapkan firewall Azure
  3. Membuat tabel rute yang ditentukan pengguna
  4. Menyiapkan aturan firewall
  5. Membuat perwakilan layanan (SP)
  6. Membuat kluster privat AKS
  7. Membuat profil penyebaran BDC
  8. Menyebarkan BDC

Membuat grup sumber daya dan VNet

  1. Tentukan sekumpulan variabel lingkungan untuk membuat sumber daya.

    export REGION_NAME=<region>
    export RESOURCE_GROUP=private-bdc-aksudr-rg
    export SUBNET_NAME=aks-subnet
    export VNET_NAME=bdc-vnet
    export AKS_NAME=bdcaksprivatecluster
    
  2. Membuat grup sumber daya

    az group create -n $RESOURCE_GROUP -l $REGION_NAME
    
  3. Membuat VNET

    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)
    

Membuat dan menyiapkan Azure Firewall

  1. Tentukan sekumpulan variabel lingkungan untuk membuat sumber daya.

    export FWNAME=bdcaksazfw
    export FWPUBIP=$FWNAME-ip
    export FWIPCONFIG_NAME=$FWNAME-config
    
    az extension add --name azure-firewall
    
  2. Membuat subnet khusus untuk firewall

    Catatan

    Anda tidak dapat mengubah nama firewall setelah pembuatan

    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 secara otomatis merutekan traffic antara subnet Azure, jaringan virtual, dan jaringan lokal.

Cara membuat tabel rute yang ditentukan pengguna

Anda dapat membuat tabel UDR dengan lompatan ke 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

Cara mengatur aturan 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

Anda dapat mengaitkan UDR dengan kluster AKS tempat Anda sebelumnya menyebarkan BDC, menggunakan perintah berikut:

az network vnet subnet update -g $RESOURCE_GROUP --vnet-name $VNET_NAME --name $SUBNET_NAME --route-table $FWROUTE_TABLE_NAME

Membuat & mengonfigurasi perwakilan layanan (SP)

Dalam langkah ini, Anda perlu membuat perwakilan layanan dan menetapkan izin ke jaringan virtual.

Lihat contoh berikut:

# 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"

Membuat kluster AKS

Anda sekarang dapat membuat kluster AKS dengan userDefinedRouting sebagai jenis keluar.

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

Membangun profil penyebaran Kluster Big Data

Anda dapat membuat kluster big data dengan profil kustom:

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

Membuat dan mengonfigurasi profil penyebaran BDC kustom

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"

Menyebarkan BDC di kluster privat AKS

export AZDATA_USERNAME=<your bdcadmin username>
export AZDATA_PASSWORD=< your bdcadmin password>

azdata bdc create --config-profile private-bdc-aks --accept-eula yes

Dapatkah saya menggunakan firewall pihak ketiga untuk membatasi lalu lintas keluar?

Anda dapat menggunakan firewall pihak ketiga untuk membatasi lalu lintas keluar dengan kluster privat BDC dan AKS yang disebarkan. Untuk melihat contoh, kunjungi firewall Marketplace Azure. Firewall pihak ketiga dapat digunakan dalam solusi penyebaran privat dengan konfigurasi yang lebih sesuai. Firewall harus menyediakan aturan jaringan berikut:

  • Lihat semua aturan jaringan keluar dan FQDN yang diperlukan untuk kluster AKS. URL ini juga mencakup semua titik akhir dan dependensi HTTP/HTTPS wildcard. Ini dapat bervariasi dengan kluster AKS Anda, berdasarkan sejumlah kualifikasi, dan persyaratan Anda yang sebenarnya.
  • Aturan jaringan yang diperlukan Azure Global / aturan FQDN/aplikasi yang disebutkan di sini.
  • Aturan FQDN / aplikasi opsional yang direkomendasikan untuk kluster AKS yang disebutkan di sini.

Silakan periksa cara mengelola kluster big data di kluster privat AKS dan kemudian langkah selanjutnya adalah menyambungkan ke kluster big data.

Lihat skrip otomatisasi untuk skenario ini di repositori Sampel SQL Server di GitHub.