Minishift 的仪表板包含一组模板,可用于快速构建我们的应用程序。在撰写本文时,还没有 Quarkus 模板。但是,我们可以轻松地将我们的映像构建和部署为一个二进制构建,它传达我们已经测试过的 Dockerfile。
二进制构建是一项允许开发人员从二进制源上传工件而不是从 Git 存储库 URL 拉取源的功能。
为此,我们将使用 oc 客户端工具,这是用于配置 OpenShift 及其对象的瑞士军刀。
The following set of commands is contained in the deploy-openshift.sh file, which is located in the Chapter03 directory of this book's GitHub repository. If you are impatient to see your application in the cloud, simply execute the script and check that the output matches what we've written in this paragraph.
我们需要做的第一件事是为我们的项目创建一个命名空间,它将在我们当前的 OpenShift 命名空间中创建。您可以使用以下命令创建 quarkus-hello-okd 命名空间:
我们需要做的第一件事是使用 oc new-build 命令定义一个二进制构建对象:
前面的命令将生成一个镜像二进制构建,该构建将被推送到 Minishift 的内部注册表中。以下输出描述了为此目的创建的资源:
现在构建配置已经创建,我们可以通过查询 bc 别名(代表构建配置)来检查它的可用性:
您应该看到以下输出:
事实上,二进制构建不包含对我们的 Dockerfile 的任何引用。我们可以使用 oc patch 命令添加此信息,这是一个有用的快捷方式,我们可以使用它来编辑资源。在我们的例子中,我们需要将引用 dockerStrategy 元素的 dockerfilePath 属性设置为我们的 Dockerfile 所在的位置。从 Quarkus 项目的根目录,执行以下命令:
将返回以下输出:
如果您检查二进制构建描述,您将看到 Dockerfile 路径已包含在内:
输出有点冗长;但是,它应包含以下信息:
现在,我们准备开始构建过程,它将以项目的根文件夹 (.) 作为输入,并将 ImageStream 上传到您的 Minishift 环境中。执行以下命令:
输出将通知您映像已构建并推送到 Minishift 注册表:
作为概念证明,让我们使用别名 is 检查默认项目中可用的图像流列表:
您应该看到以下输出:
您的 ImageStream 现在可用。我们所要做的就是创建一个使用 ImageStream quarkus-hello-okd 作为输入的应用程序。这可以使用以下命令完成:
现在,将创建资源。这将由结果输出确认:
现在,我们的应用程序已准备好使用。为了允许外部客户端访问它,我们需要通过一个路由对象来暴露它,如下:
路由将被暴露,并显示以下日志:
我们可以使用以下命令验证路由地址,该命令使用 JSON 模板显示我们的 quarkus-hello-okd 路由的虚拟主机地址:
在我们的例子中,可以通过以下地址访问该路由:
请注意,路由的实际 IP 地址由管理程序根据您的网络配置确定,因此如果它与本示例中公开的地址不同,请不要感到惊讶。
您应该能够从 Web 控制台确认此信息,这表明应用程序已启动并正在运行,并且单个 Pod 已启动:
如果您转到已分配的路由主机/端口(在我们的例子中,http://quarkus-hello-okd-myproject.192.168.42.5.nip.io),您将看到以下欢迎屏幕:
这是一个简单的静态页面,已包含在 src/main/resources/META-INF/resources/index.html 中,以向您显示您的应用程序可用并包含一些有用的信息放置静态资产和配置。另一方面,您的 REST 服务仍可通过 REST URI 获得:
由于应用程序在 quarkus-hello-okd-1-84xwq Pod 上运行,因此预期输出如下:
现在,让我们学习如何通过添加我们应用程序的一些副本来扩展我们的 Quarkus 服务。