部署到 Microsoft Azure Cloud
本指南涵盖
-
更新 Quarkus HTTP 端口
-
安装 Azure CLI
-
创建 Azure 注册表服务实例并上传 Docker 镜像
-
将 Docker 镜像部署到 Azure 容器实例
-
将 Docker 镜像部署到 Azure Kubernetes 服务
-
将 Docker 镜像部署到 Azure Linux 容器应用服务
先决条件
要完成本指南,您需要
-
大约 2 小时(所有模式)
-
一个 IDE
-
已安装 JDK 17+ 并正确配置了
JAVA_HOME
-
Apache Maven 3.9.9
-
如果您想使用它,可以选择 Quarkus CLI
-
拥有 Azure 订阅的访问权限。在此处获取免费订阅
本指南将以《构建原生镜像指南》中开发的本地应用程序作为输入。
请确保您有入门应用程序,或者克隆 Git 仓库:git clone https://github.com/quarkusio/quarkus-quickstarts.git
,或者下载一个存档。解决方案位于 getting-started
目录。
更改 Quarkus HTTP 端口
如果您正确地遵循了《构建原生镜像指南》,您应该有一个名为 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 端口上运行。
创建 Azure 容器注册表实例
可以将 Docker Hub 上托管的镜像部署到 Azure,但默认情况下,此位置允许任何人访问镜像。为了更好地保护您的容器镜像,本指南将介绍如何将您的镜像托管在 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>
将容器镜像上传到 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
此时,您的 Quarkus 容器镜像应该已经在您的 Azure 容器注册表中。要验证,请运行以下命令:
$ az acr repository list -n <registry-name>
部署到 Azure 容器实例
在云中启动此容器的最简单方法是使用 Azure 容器实例服务。它只需在 Azure 基础结构上创建容器。
使用 ACI 有多种方法。请参阅文档了解详细信息。最快的启动并运行容器的方法如下。
第一步是找到管理员的用户名和密码,以便 ACI 可以向 ACR 进行身份验证并拉取 Docker 镜像。
$ az acr credential show --name <registry-name>
现在,在 ACI 上创建 Docker 实例,指向 ACR 上的镜像。
$ 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
以及现在托管在 ACR 上的 Quarkus 应用程序的镜像名称。
请记住,此服务不提供可伸缩性。容器实例是唯一的,无法伸缩。
部署到 Azure Kubernetes 服务
您还可以将容器镜像作为微服务部署到 Azure 上的 Kubernetes 集群中。要执行此操作,请遵循此教程:
部署后,应用程序将在用于公开服务的任何端口上运行。默认情况下,Quarkus 应用程序在内部的 8080 端口上运行。