编辑此页面

部署到 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 CLI

为了在本指南中简化用户体验,最好安装并认证 Azure CLI。

请访问Azure CLI 安装页面,了解特定于您操作系统的说明。

安装完成后,请确保您已通过身份验证。

$ az login

创建 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 端口上运行。

部署到 Azure Linux 容器应用服务

此服务为 Web 应用程序提供开箱即用的可伸缩性。如果需要更多实例,它将自动提供负载均衡,以及监控、指标、日志记录等。

要将您的 Quarkus Native 容器镜像部署到此服务,请遵循此教程:

相关内容