こんにちは、サイオステクノロジー武井です。今回は、オンプレミスで稼働するアプリケーションをAzure Migrateで簡単にAKSに移行する方法をご紹介したいと思います。
Azure Migrateとは?
Azure Migrateはオンプレミス上にある仮想マシンやアプリケーションを簡単にAzure上に移行できるサービスです。2021年3月2日〜3月4日で実施されているマイクロソフトの技術カンファレンス「Ignite」にて、このAzure Migrateに新しい機能が追加されました。この機能によって、オンプレミス上のアプリケーションを簡単にAKSへ移行できるようになりました。ただし、まだプレビューですが。。。
やってみよう!!
これまじで簡単です。ホントびっくり!!ということでやってみたいと思います。これからご紹介する本手順は基本的に以下の公式マニュアルがベースになっていますが、一部うまくいかない点もありました(´・ω・`)
https://docs.microsoft.com/ja-jp/azure/migrate/tutorial-containerize-java-kubernetes
公式のドキュメントによると移行対象のアプリケーションとその移行先は以下のようです。
- ASP.NETのアプリケーションをWindowsコンテナーへ移行
- Linux上のApache Tomcatで稼働するアプリケーションをLinuxコンテナーへ移行
今回はLinux上のApache Tomcatで稼働するアプリケーションを移行してみることとします。移行対象は以下で公開されている公式のサンプルアプリです。
https://tomcat.apache.org/tomcat-8.5-doc/appdev/sample/
まずは移行ツールが必要になるのですが、この移行ツールの稼働条件はWindows Server2016以降、もしくはWindows10です。その前に移行ツールを稼働させるためには、以下のURLからダウンロードする「Web Deploy」なるものが必要なので、ウィザードに従いインストールします。
そして、移行ツールを以下のURLからダウンロードします。
https://go.microsoft.com/fwlink/?linkid=2134571
ダウンロードした移行ツールを任意のディレクトリに配置したら、PowerShellのコンソールを管理者権限で起動して、以下のコマンドを実行します。
PS C:\hoge> Set-ExecutionPolicy RemoteSigned PS C:\hoge> .\AppContainerizationInstaller.ps1
しばらくするとブラウザが起動して以下のような画面になります。「Specify application type」で「Java web apps on Tomcat」を選択して「Continue」をクリックします。
セットアップに必要な条件をチェックする画面になります。ライセンス条項に承諾する旨のチェックボックスにチェックを入れると、インターネットへの接続などセットアップに必要な条件が次々とチェックされていきます。「Enable SSH」は後ほど細かいチェックが入るので、気にせず「Continue」をクリックします。
Azureへのログイン画面が表示されます。「ログイン」をクリックします。
「Copy code and Login」をクリックしますと、別のブラウザでAzureへのログイン画面が表示されますので、ログインします。ここでは、サブスクリプションのオーナー権限のユーザーでログインすることを前提としています。そうでない場合は、適切なロールを与える必要があります。詳細はこちらの公式ドキュメントを参考にしてください。
ログインに成功すると以下のような画面になるはずなので、移行先のAKSを作成したいAzureテナントとサブスクリプションを選択してください。
移行元のアプリケーションが稼働しているサーバーのIPアドレスかFQDN、管理者権限を持つユーザー名、パスワードを入力して、「Validate」をクリックしますと、接続情報が正しければ「Mapped」と表示されます。ちなみにサーバーのIPアドレスかFQDNがプライベートIPアドレス帯のものでないとエラーになります。
移行ツールが、先ほど指定したサーバーをチェックして、移行対象のアプリケーションが無いかどうかを確認します。以下の例では、sampleというcontextをもつアプリが検出されました。「Target container」に任意のコンテナ名を入力して、「Continue」をクリックします。このコンテナ名は後にAzure Container Registryに登録されるイメージ名になります。「Edit」をクリックしてフォルダーを追加すると、そのフォルダーを後のステップでPersistent Volumeに割り当てることができますが、ここではやりません。
ビルドします。ビルドしたイメージを格納するAzure Container Registryを新規作成もしくは既存のものを選択します。ここでは新規作成するので、「Create new registry」 をクリックします。
必要な情報を入力して「Create」をクリックします。
ビルドしたい対象のアプリケーションをチェックして「Build」をクリックします。
ビルドが終わると以下のような画面になります。
AKSへデプロイするための設定をする画面が表示されます。AKSを新規に作成するか既存のものを利用するか選べます。今回は新規に作成しますので「Create new AKS cluster」をクリックします。
必要な情報を入力して「Create」をクリックします。
AKSクラスターの作成に成功すると以下のような画面になります。
Persistent Volumeを指定できますが、先の手順でPersistent Volume対象のフォルダーを追加しませんでしたので、そのままContinueです。
「Configure」をクリックします。
デプロイの設定をします。確認を簡単にするために「Load Balancer type」だけ「External」にしてください。AKSクラスターにパブリックIPアドレスが付与されたロードバランサーが作成されます。
「Continue」をクリックします。
「Deploy」をクリックします。AKSクラスターへのデプロイが始まります。
デプロイが完了すると以下のような画面になります。
https://[ロードバランサーのパブリックIPアドレス]:8080/sampleにアクセスすると、たしかにオンプレミスのアプリがAKSに移行されていることが確認できますヮ(゚д゚)ォ!
さいごに
本当に簡単にオンプレアプリをAKSに移行できましたね。このツールが普及すればクラウドネイティブ化が加速すること間違いなしです。早くGAキボンヌ。