LoginSignup
10
5

More than 3 years have passed since last update.

ただコンテナをクラウド上で動かすだけならAzure Container Instancesが簡単だよ

Posted at

はじめに

今やっているプロジェクトではAzureを使うことが決まっており、画面はJava(Springboot)で開発しコンテナでデプロイしようと思っていました。
AKSやWebApp on LinuxでもコンテナのデプロイはできますがACI(AzureContainerInstances)はもっと楽にデプロイすることができます。

レジストリへのデプロイにはJibを使い、AzureContainerInstancesにデプロイするまでの流れを紹介したいと思います。

ソリューションの紹介

Azure Container Registry

jib-gradle-plugin

  • これまではspotifyのdockerfile-maven-pluginを使って自分で用意したDockerfileをビルドしてECRへのデプロイまでをやっていました。
  • jibはpluginを入れてちょっと設定をすればDockerfileがなくてもコンテナを作成し、Azure Container Registry,Elastic Container Registry,Dockerhub,Google Container Registryにデプロイすることができます。(base imageについては変更などが可能です)

Azure Container Instances

  • AWSでいうFargateみたいなものでコンテナが稼働するインスタンスを用意せずとも割り当てたCPUやメモリの大きさに合わせて稼働した時間だけ課金されるようなサービスです。
  • Fargateほど色々はできないようですが、これからの機能の拡充が期待できますね。
  • 料金についてはFargateと比較すると、今日現在だとほぼ同じでした。

Jibを使ってACRにpushする

pluginを追加します

build.gradle
plugins {
    id 'com.google.cloud.tools.jib' version '1.4.0'
}

ACRのリポジトリを作成しimage名の部分を変更します。ユーザ名とパスワードはgradle.propertiesに記載しておきます。

build.gradle
jib {
    to {
        image = 'xxxxxx.azurecr.io/web'
        auth {
            username = "${USERNAME}"
            password = "${PASSWORD}"
        }
    }
}
gradle.properties
USERNAME=xxxx
PASSWORD=xxxx

あとはコマンドを打てば、コンテナを作ってACRにpushしてくれます。

$ gradlew jib

コンテナだけ作るには以下のコマンドを打ちます。(コンテナができたらdocker runで動作確認しておくのも良いでしょう)

$ gradlew jibDockerBuild

Container Intancesへデプロイ

Azureにログイン後、CloudShellを起動して以下のコマンドを打つだけです。

az container create -g TEST-RG \
   --name poc-web \
   --image xxxxx.azurecr.io/web \
   --ip-address public \
   --registry-username xxxxx \
   --registry-password yyyyyyyyy \
   --ports 80 \
   --dns-name-label zzzzzzz \
   --environment-variables SPRING_PROFILES_ACTIVE=development 

Container Instancesのその他の操作

ログを取得する

az container logs --resource-group TEST-RG --name poc-web

ログにアタッチする(コンテナの標準出力に繋がります)

az container attach --resource-group TEST-RG --name poc-web

Containr Instancesを削除する

az container delete -g TEST-RG --name poc-web 

監視

AzureMonitorを使った監視ができますが、CPU,メモリ、ネットワークのIn/Outくらいで細かい部分は見えないようです。今のところこれ以上のメトリクスを取るにはSideCarを使って監視していく感じになるのかな・・・とと思います。

image.png

まとめ

とにかく簡単にAzureにコンテナをデプロイするにはContainerInstancesですね。

10
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5