Microsoft Azure Cloudへのデプロイ
このガイドでは以下をカバーしています:
-
Quarkus HTTPポートの更新
-
Azure CLIのインストール
-
Azure Registry Serviceインスタンスを作成し、Dockerイメージをアップロード
-
DockerイメージをAzureコンテナーインスタンスにデプロイ
-
DockerイメージをAzure Kubernetes Serviceにデプロイ
-
DockerイメージをAzure App Service for Linux Containersにデプロイ
前提条件
このガイドを完成させるには、以下が必要です:
-
ざっと 2 hours for all modalities
-
IDE
-
JDK 17+がインストールされ、
JAVA_HOME
が適切に設定されていること -
Apache Maven 3.9.9
-
使用したい場合は、 Quarkus CLI
-
Azureのサブスクリプションにアクセスできること。 無料のものはこちら
このガイドでは、 ネイティブイメージのビルドガイド で開発したネイティブアプリケーションをインプットとします。
手元に get-started アプリケーションがあることを確認するか、Git リポジトリをクローンします: git clone https://github.com/quarkusio/quarkus-quickstarts.git
、もしくは archive をダウンロードしてください。ソリューションは getting-started
ディレクトリーにあります。
Quarkus HTTPポートの変更
ネイティブイメージのビルドガイド に従っていれば、 quarkus-quickstart/getting-started
という名前のローカルコンテナーイメージがあるはずです。
Quarkusはデフォルトではポート 8080 で動作しますが、ほとんどのAzureサービスでは、ウェブアプリケーションがポート 80 で動作することを想定しています。続ける前に、クイックスタートコードに戻り、 src/main/docker/Dockerfile.native
を開いてください。
Dockerfile.native
ファイルの最後の 2 つのコマンドを変更して、以下のように読み込み可能にします。
EXPOSE 80
CMD ["./application", "-Dquarkus.http.host=0.0.0.0", "-Dquarkus.http.port=80"]
これでdockerイメージをリビルドすることができます。
$ docker build -f src/main/docker/Dockerfile.native -t quarkus-quickstart/getting-started .
テストのときは、自分のホストでポート80を8080に公開して実行します。
$ docker run -i --rm -p 8080:80 quarkus-quickstart/getting-started
これで、コンテナーイメージをAzure上で実行する準備が整いました。Quarkusアプリケーションは、ポート80で実行するようにマッピングされていることを覚えておいてください。
Azure CLIのインストール
このガイド全体を通してユーザー体験を容易にするために、Azure CLI をインストールして認証した方が良いでしょう。
お使いのオペレーティングシステムに固有の手順については、 Azure CLI のインストールページを参照してください。
インストールしたら、認証されていることを確認してください。
$ az login
Azure Container Registry インスタンスの作成
Docker Hub上にホストされたイメージをデプロイすることは可能ですが、この場所はデフォルトでは誰でもイメージにアクセスできる状態になっています。コンテナーイメージをよりよく保護するために、このガイドでは、Azure Container Registry サービスのプライベートインスタンス上でイメージをホストする方法を示します。
まず、Azure Resource Groupを作成します。
$ az group create --name <resource-group-name> --location eastus
そうすれば、ACRを作成することができます。
$ az acr create --resource-group <resource-group-name> --name <registry-name> --sku Basic --admin-enabled true
最後に、このコンテナーレジストリーを実行して、ローカルのDockerインストールを認証します。
$ az acr login --name <registry-name>
Azureへのコンテナーイメージのアップロード
ビルドネイティブイメージガイドに従っていれば、 quarkus-quickstart/getting-started
という名前のローカルコンテナーイメージがあるはずです。
このイメージをACRにアップロードするには、ACRログインサーバーの下にタグを付けてイメージをプッシュする必要があります。Azure Container Registryのログインサーバーを見つけるには、次のコマンドを実行します。
$ az acr show -n <registry-name> --query loginServer -o tsv
アップロードするには、次のようにします。
$ docker tag quarkus-quickstart/getting-started <acr-login-server>/quarkus-quickstart/getting-started
$ docker push <acr-login-server>/quarkus-quickstart/getting-started
この時点で、Azure Container Registry上にQuarkusコンテナーイメージがあるはずです。確認するには、次のコマンドを実行します。
$ az acr repository list -n <registry-name>
Azureコンテナーインスタンスへのデプロイ
このコンテナーをクラウド上で起動する最もシンプルな方法は、Azure Container Instancesサービスです。これは、Azureインフラストラクチャ上にコンテナーを作成するだけです。
ACIを使用するためには、さまざまなアプローチがあります。詳細はドキュメントを確認してください。コンテナーを起動して稼働させるための最も手っ取り早い方法は以下の通りです。
最初のステップは、ACIがACRに認証してDockerイメージをプルできるように、管理者のユーザー名とパスワードを見つけることです。
$ az acr credential show --name <registry-name>
ACR上のイメージを指すACI上にDockerインスタンスを作成します。
$ az container create \
--name quarkus-hello \
--resource-group <resource-group> \
--image <acr-login-server>/quarkus-quickstart/getting-started \
--registry-login-server <acr-login-server> \
--registry-username <acr-username> \
--registry-password <acr-password> \
--dns-name-label quarkus-hello-<random-number> \
--query ipAddress.fqdn
上記のコマンドの実行が成功すると、クラウド上のコンテナーのアドレスが表示されます。出力として表示されるアドレスでQuarkusアプリケーションにアクセスします。
ACR認証とサービスプリンシパルの使用の詳細と詳細については、以下のガイドに従ってください。Azure Container Registry loginServer
と、現在ACRでホストされているQuarkusアプリケーションのイメージ名を覚えておいてください。
このサービスはスケーラビリティを提供しないことを覚えておいてください。コンテナーインスタンスは単一であり、スケーラビリティを提供しません。
Azure Kubernetesサービスへのデプロイ
また、コンテナーイメージをマイクロサービスとしてAzure上のKubernetesクラスターにデプロイすることもできます。そのためには、このチュートリアルに従ってください。
デプロイされると、アプリケーションは、サービスを公開するために使用されるポートであれば何でも実行されます。デフォルトでは、Quarkusアプリケーションは内部的にポート8080で実行されます。