• 会員限定
  • 2022/12/23 掲載

実体験でわかった「Azure Kubernetes Service」のデプロイ、つまづきポイントとは?

山市良のマイクロソフトEYE

  • icon-mail
  • icon-print
  • icon-hatena
  • icon-line
  • icon-close-snsbtns
記事をお気に入りリストに登録することができます。
前回に続き、マイクロソフトが公開しているWindowsコンテナーのデモアプリをAzure Kubernetes Service(AKS)にデプロイしたレポートです。前回はNano ServerベースのPythonアプリ「Django poll app」のコンテナーイメージ「poll-app」をビルドしました。今回は、このイメージをいよいよAKS上にデプロイします。先に言っておくと、なかなかうまくいかないものです。
執筆:フリーライター 山市 良

執筆:フリーライター 山市 良

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年)
など

photo
筆者の体験をもとに、AKSでのアプリ開発を解説する
(Photo/Getty Images)

デモアプリのデプロイ、大まかな8つの手順

 デモアプリのコンテナーイメージは、docker buildコマンド1行で簡単に作成できます。ここからの作業は、ローカルでAzure CLI(azコマンド)、Python(Azure CLIに含まれる)、Djangoが利用可能である必要があります。これらの導入方法については、前回の最後に説明しました。

 ドキュメント(デモアプリのREADME.md)に従ってAzureの各種サービスを準備していくわけですが、大まかな手順は以下のようになります。

  1. Azureコンテナーレジストリ(ACR)のコンテナーレジストリを作成し、「poll-app」コンテナーイメージをプッシュする。

  2. Azure File共有を作成する。

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

  4. Azure MySQLにデータベースを作成し、データベースにテーブルとユーザーを作成する。

  5. Azureキーコンテナー(Key Vault)を作成し、MySQLデータベースの接続文字列を含むキー値シークレットを作成する。

  6. Azureファイル共有に接続するためのシークレットを作成する。

  7. AKSにWindowsノード用のCSIプロバイダーをインストールする。

  8. 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
画像
画面1:「powershell-scripts」ディレクトリにある「variables.txt」にパラメーターを定義する

 「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

処理に失敗しました

人気のタグ

投稿したコメントを
削除しますか?

あなたの投稿コメント編集

機能制限のお知らせ

現在、コメントの違反報告があったため一部機能が利用できなくなっています。

そのため、この機能はご利用いただけません。
詳しくはこちらにお問い合わせください。

通報

このコメントについて、
問題の詳細をお知らせください。

ビジネス+ITルール違反についてはこちらをご覧ください。

通報

報告が完了しました

コメントを投稿することにより自身の基本情報
本メディアサイトに公開されます

必要な会員情報が不足しています。

必要な会員情報をすべてご登録いただくまでは、以下のサービスがご利用いただけません。

  • 記事閲覧数の制限なし

  • [お気に入り]ボタンでの記事取り置き

  • タグフォロー

  • おすすめコンテンツの表示

詳細情報を入力して
会員限定機能を使いこなしましょう!

詳細はこちら 詳細情報の入力へ進む
報告が完了しました

」さんのブロックを解除しますか?

ブロックを解除するとお互いにフォローすることができるようになります。

ブロック

さんはあなたをフォローしたりあなたのコメントにいいねできなくなります。また、さんからの通知は表示されなくなります。

さんをブロックしますか?

ブロック

ブロックが完了しました

ブロック解除

ブロック解除が完了しました

機能制限のお知らせ

現在、コメントの違反報告があったため一部機能が利用できなくなっています。

そのため、この機能はご利用いただけません。
詳しくはこちらにお問い合わせください。

ユーザーをフォローすることにより自身の基本情報
お相手に公開されます