The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.

Deploying to 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 11+ がインストールされ、 JAVA_HOME が適切に設定されていること

  • Apache Maven 3.8.1+

  • 使用したい場合、 Quarkus CLI

  • Having access to an Azure subscription. Get a free one here

This guide will take as input a native application developed in the building native image guide.

手元に get-started アプリケーションがあることを確認するか、Git リポジトリをクローンします: git clone https://github.com/quarkusio/quarkus-quickstarts.git 、もしくは archive をダウンロードしてください。ソリューションは getting-started ディレクトリーにあります。

Quarkus HTTPポートの変更

If you correctly followed the building native image guide, you should have a local container image named 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

アップロードするには、次のようにします。

$ 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で実行されます。

Linuxコンテナー上のAzure App Serviceへのデプロイ

このサービスは、Webアプリケーションのスケーラビリティを提供します。より多くのインスタンスが必要な場合は、自動的に負荷分散を行い、監視、メトリクス、ロギングなどを提供します。

Quarkus Nativeコンテナーイメージをこのサービスにデプロイするには、このチュートリアルに従います。