クイックスタート: Helm チャートを使用して SQL Server Linux コンテナーを Kubernetes にデプロイする

適用対象:Linux 上の SQL Server

このクイックスタートでは、WindowsクライアントマシンからSQL Server on LinuxコンテナをAzure Kubernetes Service(AKS)にHelm chartsでデプロイする手順を説明します。

AKS は、コンテナー クラスターをデプロイおよび管理するためのマネージド Kubernetes サービスです。 Helm は、Kubernetes アプリケーションのライフサイクルをインストールおよび管理するのに役立つオープン ソースのパッケージ化ツールです。

前提条件

  • Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、無料のアカウントを作成できます。

  • AKS クラスターを作成する。

  • このクイックスタートのサンプル Helm チャートをダウンロードして確認する。 このサンプル チャートには、SQL Server デプロイをカスタマイズするための多くの構成オプションが含まれています。

クライアント ツールをインストールする

Windows クライアント コンピューターには、次のツールが必要です。

別のクライアント オペレーティング システムを使用する場合は、そのプラットフォームに適したパッケージを選択する必要があります。

Azure CLI を使用して kubectl をインストールする

Kubernetes クラスターと対話するには、kubectl を使用します。 詳細については、「az aks install-cli」を参照してください。

kubectl をインストールするには、Windows コマンド プロンプトから次のコマンドを実行します。

az aks install-cli

Tip

kubectl をローカルの PATH 環境変数に追加して、毎回完全なパスを入力する必要がないようにすることができます。

kubectl を AKS クラスターに接続する

  1. kubectl コマンドや helm コマンドがその特定の AKS クラスターで実行されるように、AKS クラスターの "コンテキスト" をマージする必要があります。

    マージするには、AKS クラスターへの接続に関する記事の説明に従って次のコマンドを実行します。

    az aks get-credentials --resource-group <resourcegroupname> --name <aks clustername>
    

    次の出力が表示されます。<clustername> は指定したクラスター、<username> はローカルの Windows ユーザー アカウントです。

    Merged "<clustername>" as current context in C:\Users\<username>\.kube.config
    
  2. kubectl get nodes を実行して、マージが成功したことを確認します。 出力には、AKS クラスターのコンテキストに含まれるノードが表示されます。

    NAME                    STATUS   ROLES   AGE    VERSION
    <aks-node>-vmss000000   Ready    agent   141d   v1.16.13
    <aks-node>-vmss000001   Ready    agent   141d   v1.16.13
    

サンプル Helm チャートを確認する

これでHelmチャートを通じてSQL ServerをAKSクラスターに展開する準備ができました。

このクイックスタートは 「as-is」ヘルムチャートのサンプルを提供しています。 このサンプルは参照専用です。 実際の構成要件に一致する構成値を理解するため、readme ファイルを必ず確認してください。

SQL Server のデプロイに推奨されている StatefulSet モードで SQL Server をデプロイする場合は、代わりにサンプル "そのままの" StatefulSet ベースの Helm チャートを確認できます。

  1. サンプル Helm チャートをダウンロードします。

  2. サンプル チャートをダウンロードしたディレクトリに切り替え、必要に応じて values.yaml ファイルを変更します。

SQL Server を AKS クラスターにデプロイする

次のコマンドを使って SQL Server をデプロイします。 デプロイ名はカスタマイズ可能なので、必要に応じて mssql-latest-deploy を変更できます。

helm install mssql-latest-deploy . --set ACCEPT_EULA.value=Y --set MSSQL_PID.value=Developer

前の例では、チャートとそのファイルは、ピリオド (.) で表されている現在のディレクトリにあります。 必要に応じて、チャートのパスを指定できます。

成功した場合は、次のような出力が表示されます。

NAME: mssql-latest-deploy
LAST DEPLOYED: Wed Apr 06 21:36:19 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1

SQL Server のデプロイを確認する

Kubernetes クラスターへのデプロイには数分かかる場合があります。 デプロイが成功したことを確認するには、次のコマンドを実行します。

kubectl get all

成功した場合は、次のような出力が表示されます。

NAME                                      READY   STATUS    RESTARTS   AGE
pod/mssql-latest-deploy-7f8c7f5bc-9grmg   1/1     Running   0          2m56s

NAME                          TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
service/kubernetes            ClusterIP      10.0.0.1       <none>        443/TCP          141d
service/mssql-latest-deploy   LoadBalancer   10.0.247.220   20.40.0.145   1433:30780/TCP   2m56s

NAME                                  READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/mssql-latest-deploy   1/1     1            1           2m56s

NAME                                            DESIRED   CURRENT   READY   AGE
replicaset.apps/mssql-latest-deploy-7f8c7f5bc   1         1         1       2m56s

AKS で実行されている SQL Server に接続する

SQLcmd、SQL Server Management Studio (SSMS)、Visual Studio Code 用の MSSQL 拡張機能など、使い慣れた SQL Server クライアント ツールを使用して、SQL Server のインスタンスに接続できます。

たとえば、SSMS を使用して SQL Server インスタンスに接続する場合は、次の設定を使用できます。

  • サーバー名:External-IP サービスの mssql-latest-deploy アドレスを使用します。 この例の場合、20.40.0.145 です。
  • 認証: ドロップダウン リストから [SQL Server 認証] を選択します。
  • ログイン: システム管理者アカウントである sa を使用します。
  • パスワード:sa パスワードは、Helm チャートの MSSQL_SA_PASSWORD ファイルの values.yaml 構成オプションで指定した値と一致します。

接続すると、SQL Server インスタンスをオブジェクト エクスプローラーで展開できるようになります。

データベース インスタンスに接続したオブジェクト エクスプローラーを示すスクリーンショット。

リソースをクリーンアップする

この AKS クラスターを引き続き使用しない場合は、必ずクラスターを削除してください。