- 会員限定
- 2022/12/23 掲載
実体験でわかった「Azure Kubernetes Service」のデプロイ、つまづきポイントとは?
山市良のマイクロソフトEYE
IT 専門誌、Web 媒体を中心に執筆活動を行っているテクニカルライター。システムインテグレーター、IT 専門誌の編集者、地方の中堅企業のシステム管理者を経て、2008年にフリーランスに。雑誌やWebメディアに多数の記事を寄稿するほか、ITベンダー数社の技術文書 (ホワイトペーパー) の制作やユーザー事例取材なども行う。2008年10月よりMicrosoft MVP - Cloud and Datacenter Management(旧カテゴリ:Hyper-V)を毎年受賞。岩手県花巻市在住。
主な著書・訳書
『インサイドWindows 第7版 上』(訳書、日経BP社、2018年)
『Windows Sysinternals徹底解説 改定新版』(訳書、日経BP社、2017年)
『Windows Server 2016テクノロジ入門 完全版』(日経BP社、2016年)
『Windows Server 2012 R2テクノロジ入門』(日経BP社、2014年)
『Windows Server 2012テクノロジ入門』(日経BP社、2012年)
『Windows Server仮想化テクノロジ入門』(日経BP社、2011年)
『Windows Server 2008 R2テクノロジ入門』(日経BP社、2009年)
など

デモアプリのデプロイ、大まかな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