Deploying to Microsoft Azure Cloud

本指南涵盖:

  • Update Quarkus HTTP Port

  • Install the Azure CLI

  • 创建 Azure 注册表服务实例并上传 Docker 映像

  • 将 Docker 映像部署到 Azure 容器实例

  • 将 Docker 映像部署到 Azure Kubernetes 服务

  • 将 Docker 映像部署到适用于 Linux 容器的 Azure 应用服务

Prerequisites

如要完成本指南,您需要:

  • Roughly 15 minutes

  • An IDE

  • 安装了 JDK 17+,已正确配置 JAVA_HOME

  • Apache Maven ${proposed-maven-version}

  • 如果你想使用 Quarkus CLI, 则可以选择使用

  • 如果你想构建一个本机可执行文件(或如果你使用本机容器构建,则使用 Docker),则可以选择安装 Mandrel 或 GraalVM 以及 configured appropriately

本指南将以本机应用程序为输入,这些应用程序开发于 building native image guide中。

确保你备有入门应用程序,或者克隆 Git 存储库: git clone $${quickstarts-base-url}.git,或下载一个 $${quickstarts-base-url}/archive/main.zip[存档]。该解决方案位于 `getting-started`目录中。

Change Quarkus HTTP Port

如果已正确遵循 building native image guide,你应该有一个名为 `quarkus-quickstart/getting-started`的本地容器映像。

Quarkus 虽然默认在 8080 端口上运行,但大多数 Azure 服务都期望 Web 应用程序在 80 端口上运行。在继续阅读前,返回快速入门代码并打开文件 src/main/docker/Dockerfile.native

更改 `Dockerfile.native`文件中的最后两条命令,并使其如下文所示:

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 上运行。

Install the Azure CLI

为了方便你在本指南中的用户体验,最好安装 Azure CLI 并进行身份验证。

请访问 Azure CLI安装页面,以获取特定于你操作系统的信息。

安装后,确保你已通过身份验证:

$ az login

Create an Azure Container Registry instance

可以部署托管在 Docker Hub 上的映像,但这会使映像默认对所有人可访问。为了更好地保护你的容器映像,本指南展示了如何在 Azure 容器注册表服务的私有实例中托管你的映像。

首先,创建一个 Azure 资源组:

$ 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>

Upload Container Image on Azure

如果你已按照生成本机映像指南进行操作,你应会拥有一个名为 `quarkus-quickstart/getting-started`的本地容器映像。

要将此映像上传至你的 ACR,你必须标记该映像并将该映像推送至 ACR 登录服务器下。要查找 Azure 容器注册表的登录服务器,请运行此命令:

$ 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 容器注册表中应该有 Quarkus 容器映像。若要验证,请运行以下命令:

$ az acr repository list -n <registry-name>

Deploy to Azure Container Instances

在云中启动此容器的最简单方法是使用 Azure 容器实例服务。它只在 Azure 基础架构上创建一个容器。

对于使用 ACI 有不同的方法。请查看文档以了解详细信息。使容器启动并运行的最快方法如下。

第一步是查找管理员的用户名和密码,以便 ACI 可以验证 ACR 并提取 Docker 映像:

$ az acr credential show --name <registry-name>

现在,在 ACI 上创建一个指向 ACR 上映像的 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 容器注册表 loginServer 中的 Quarks 应用程序现已托管在 ACR 上的映像名称。

请记住,此服务不提供可扩展性。容器实例是唯一的,不会扩展。

Deploy to Azure Kubernetes Service

你还可以将容器映像作为 Azure 上 Kubernetes 集群中的微服务进行部署。为此,请遵循本教程:

部署后,应用程序将运行在用于公开服务的任何端口上。默认情况下,Quarkus 应用程序在内部运行在端口 8080 上。

Deploy to Azure App Service on Linux Containers

此服务为 Web 应用程序开箱即用地提供可扩展性。如果需要更多实例,它将自动提供负载平衡,外加监控、指标、日志记录等等。

若要将 Quarkus 原生容器映像部署到此服务,请遵循本教程: