はじめに
Azureには様々なコンテナー関連のサービスがありますが、 今回はAzure Container Instancesを試してみます。
Azure Container Instancesとは
Azure Container Instancesとは、Azureが提供しているコンテナー関連のサービスの一つです。
一般的にコンテナーを実行する際は、コンテナーを実行する環境(仮想マシン等)の管理も必要となりますが、
Azure Container Instancesを利用すると実行環境の用意や管理は不要で、
簡単にコンテナーを実行することができます。
learn.microsoft.com
前提条件
今回は、 Azure CLIの実行環境として、Azureの仮想マシン(Windows Server 2019)を1台用意し、以下の設定を行いました。もちろん、自分のローカルPCでAzure CLIを実行しても問題ありません。
- Azure CLIのインストール
- 仮想マシンのシステム割り当てマネージドIDを有効化し、 マネージドIDに対してサブスクリプションの共同作成者権限を割り当て (強い権限のため、取り扱いには注意)
コンテナーのデプロイ
専用YAMLファイル作成
Azure Container Instancesのデプロイ方法は様々ですが、 今回は専用のYAMLファイルを用意したいと思います。
今回はDocker Hubで公開されているDocker公式のMySQLイメージを使用して、 Azure Container Instancesにデプロイしてみます。
専用のYAMLファイルを使用するとDockerのインストール不要で、 Azure CLIのみでデプロイすることができます。
用意したYAMLファイルは以下となります。
name: demo-mysql-container apiVersion: '2021-10-01' location: japaneast tags: {} properties: containers: - name: mysql properties: image: mysql:8 resources: requests: memoryInGB: 1.5 cpu: 1 ports: - port: 3306 environmentVariables: - name: MYSQL_ROOT_PASSWORD #rootユーザの初期パスワードを指定 value: example - name: MYSQL_DATABASE #初期DB名を指定 value: demo_db osType: Linux #専用YAMLでのデプロイは、現在Linuxコンテナーのみ使用可能 ipAddress: type: Public #今回はパブリックを指定 ports: - protocol: tcp port: 3306 dnsNameLabel: [DNS名] #インターネットからコンテナーにアクセスするためのDNS名を指定 type: Microsoft.ContainerInstance/containerGroups
デプロイ
デプロイは事前に作成しておいた仮想マシンから、Azure CLIを用いて行います。
まずPowershellを起動し、Azureにログインします。
# マネージドIDを使用したサインイン
az login --identity
現在使用しているサブスクリプションを確認します。
az account show --output table
サブスクリプションを変更する場合は、以下のコマンドで変更します。
az account set --subscription "サブスクリプションID"
作成したYAMLファイルを格納したディレクトリに移動します。
cd .\Documents\demo\
以下のコマンドを実行し、コンテナーをデプロイします。
az container create --resource-group [リソースグループ名] --file [YAMLファイル名]
デプロイが完了すると、jsonが表示されます。
リソースの確認
デプロイが完了したため、実際にAzureポータルで確認してみます。
リソース確認
以下のURLから、Azureポータルにアクセスします。
https://portal.azure.com/
検索欄で「コンテナーインスタンス」と検索します。
リソースが作成されていることを確認できました。
コンテナーログの確認
実行中のコンテナーのログをポータルから確認することができます。
設定の「コンテナー」をクリックし、実行中のコンテナーを表示します。
「ログ」をクリックします。
ポータルからログを確認することができました。
コンテナーでコマンド実行
今回は使用しませんが、実行中のコンテナーでコマンドを実行することができるようです。
接続確認
コンテナーが正常に実行されていることが確認できたため、 実際に接続できるか確認してみます。
今回はMySQL環境をコンテナーで準備したため、 MySQLが公式で用意しているクライアントツール「MySQL Workbench」を使用して、接続確認を行います。
MySQL Workbenchを起動し、データベースの接続情報を入力します。
HostnameにコンテナーインスタンスのFQDNを指定し、「OK」をクリックします。
無事、データベースに接続できることを確認できました! YAMLファイルで指定したdemo_dbも作成されています。
まとめ
今回は専用のYAMLを使用して、MySQL環境を構築してみました。
YAMLファイルの作成には少し勉強が必要でしたが、デプロイはとても簡単でした!
後編では、他のAzureリソースと連携して、コンテナーのデータの永続化を目指したいと思います。