- 会員限定
- 2022/12/23 掲載
実体験でわかった「Azure Kubernetes Service」のデプロイ、つまづきポイントとは?
山市良のマイクロソフトEYE
デモアプリのデプロイ、大まかな8つの手順
デモアプリのコンテナーイメージは、docker buildコマンド1行で簡単に作成できます。ここからの作業は、ローカルでAzure CLI(azコマンド)、Python(Azure CLIに含まれる)、Djangoが利用可能である必要があります。これらの導入方法については、前回の最後に説明しました。ドキュメント(デモアプリのREADME.md)に従ってAzureの各種サービスを準備していくわけですが、大まかな手順は以下のようになります。
- Azureコンテナーレジストリ(ACR)のコンテナーレジストリを作成し、「poll-app」コンテナーイメージをプッシュする。
- Azure File共有を作成する。
- AKSクラスターを作成する。
- Azure MySQLにデータベースを作成し、データベースにテーブルとユーザーを作成する。
- Azureキーコンテナー(Key Vault)を作成し、MySQLデータベースの接続文字列を含むキー値シークレットを作成する。
- Azureファイル共有に接続するためのシークレットを作成する。
- AKSにWindowsノード用のCSIプロバイダーをインストールする。
- Azure Pipelinesを実装し、Azure DevOpsビルドパイプラインを構築する。
手順が多く複雑なように見えますが、ほとんどの作業をPowerShellスクリプトがやってくれるようになっています(一部、マニュアルでコマンドラインを実行する作業もあります)。
最初に行うことは、PowerShellスクリプトに与える各種パラメーターを、「django-poll-app\scripts\powershell-scripts」ディレクトリにある「variables.txt」に設定することです(画面1)。
「variables.txt」では、AzureサブスクリプションIDや、リソースグループ名(リソースグループを削除することでデモ環境を完全にクリーンアップできます)、リージョン、各種Azureサービスのリソース名やパラメーター、MySQLデータベースのサーバー名やデータベース名、管理者ユーザーの名前とパスワードなどを定義します。
準備ができたら、PowerShellウィンドウで次のコマンドラインを接続し、Azureに接続します。
az login
「variables.txt」を定義する際には、いくつか注意が必要です。同じリソースグループに各種Azureサービスがセットアップされるため、利用可能なリージョンが限られています。
また、Azureサービスごとに命名規則(文字数や使用可能な文字種)に違いがあることにも注意が必要です。たとえば、AKSのLinuxノードプール名は最大12文字ですが、Windowsノードプールは6文字以下にする必要がありますし、ノードプール名は小文字の英数字のみを含むことができ、小文字で始まる必要があるなどです。
さらに、既定でKubernetesバージョン「1.24.3」が定義されていますが、このままだと「kubernetesVersion="1.24.3" windows agentpool is not supported for k8s version above 1.24.0」のエラーが発生し、Windowsノードプールの作成に失敗しました。
使用するリージョンでサポートされているバージョンを確認し、バージョン1.23系で最も新しい「1.23.12」を指定することで、エラーを回避できました。
az aks get-versions --location <リージョン> --output table【次ページ】ACRコンテナーレジストリの作成とイメージのプッシュ
関連コンテンツ
PR
PR
PR