Azure Kubernetes Service (AKS) プライベート クラスターへの BDC のデプロイ

重要

Microsoft SQL Server 2019 ビッグ データ クラスターのアドオンは廃止されます。 SQL Server 2019 ビッグ データ クラスターのサポートは、2025 年 2 月 28 日に終了します。 ソフトウェア アシュアランス付きの SQL Server 2019 を使用する既存の全ユーザーはプラットフォームで完全にサポートされ、ソフトウェアはその時点まで SQL Server の累積更新プログラムによって引き続きメンテナンスされます。 詳細については、お知らせのブログ記事と「Microsoft SQL Server プラットフォームのビッグ データ オプション」を参照してください。

この記事では、Azure Kubernetes Service (AKS) プライベート クラスターに SQL Server ビッグ データ クラスターをデプロイする方法について説明します。 この構成では、エンタープライズ ネットワーク環境でのパブリック IP アドレスの使用が制限付きでサポートされます。

プライベート デプロイには次のような利点があります。

  • パブリック IP アドレスを制限付きで使用できる
  • アプリケーション サーバーとクラスターのノード プールの間のネットワーク トラフィックがプライベート ネットワークにのみ保持される
  • 必須のエグレス トラフィックの構成を特定の要件に合わせてカスタマイズできる

この記事では、AKS プライベート クラスターを使用して、それぞれのセキュリティ文字列が適用されている間に パブリック IP アドレスの使用を制限する方法について説明します。

AKS プライベート クラスターでプライベート ビッグ データ クラスターを展開する

最初に、AKS プライベート クラスターを作成して、API サーバーとノード プールの間のネットワーク トラフィックがプライベート ネットワークにのみ保持されるようにします。 コントロール プレーンまたは API サーバーは、AKS プライベート クラスターで内部 IP アドレスを持ちます。

このセクションでは、高度なネットワーク (CNI) を備えた Azure Kubernetes Service (AKS) プライベート クラスターにビッグ データ クラスターを展開する方法について説明します。

高度なネットワークが有効になっているプライベート AKS クラスターを作成する


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

高度なネットワーク (CNI) を備えた AKS プライベート クラスターを作成する

次の手順に進むには、Standard Load Balancer を使用して AKS クラスターをプロビジョニングし、プライベート クラスター機能を有効にする必要があります。 コマンドは次のようになります。

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

展開が正常に完了したら、<MC_yourakscluster> リソース グループにアクセスして、kube-apiserver がプライベート エンドポイントであることを確認します。 たとえば、次のセクションを参照してください。

AKS クラスターに接続する

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

ビッグ データ クラスターの展開プロファイルを作成する

AKS クラスターに接続したら、BDC のデプロイを開始できます。環境変数を準備して、デプロイを開始します。

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

BDC カスタム デプロイ プロファイルを生成および構成する:

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"

HA を使用してプライベート SQL Server ビッグ データ クラスターを展開する

高可用性 (HA) を使用して SQL Server ビッグ データ クラスター (SQL-BDC) を展開する場合は、aks-dev-test-ha 展開プロファイルを使用します。 展開が正常に完了した後は、同じ kubectl get svc コマンドを使用して追加の master-secondary-svc サービスが作成されていることを確認できます。 ServiceTypeNodePort として構成する必要があります。 他の手順は、前のセクションで説明したものと同様です。

次の例では、ServiceTypeNodePort として設定しています。

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

AKS プライベート クラスターに BDC をデプロイする

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

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

展開の状態を確認する

デプロイには数分かかります。デプロイの状態は、次のコマンドを使って確認できます。

kubectl get pods -n mssql-cluster -w

サービスの状態を確認する

次のコマンドを使用してサービスを確認します。 外部 IP を使用せずにすべてが正常であることを確認します。

kubectl get services -n mssql-cluster

AKS プライベート クラスターでビッグ データ クラスターを管理し、その後 SQL Server ビッグ データ クラスターに接続する方法をご確認ください。

GitHub の SQL Server Samples リポジトリにある、このシナリオ用の自動化スクリプトを確認してください。