【前編】Azure Container Instancesを試してみる

はじめに

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ファイルを用意したいと思います。

learn.microsoft.com

今回は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リソースと連携して、コンテナーのデータの永続化を目指したいと思います。

執筆担当者プロフィール
近藤 結梨香

近藤 結梨香(日本ビジネスシステムズ株式会社)

業務では主にAzureに携わっています。映画好きで良く映画館に籠っています。

担当記事一覧