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