第 3 章 创建应用程序
3.1. 使用 Developer 视角创建应用程序
Web 控制台中的 Developer 视角为您提供了下列选项,以便您从 +Add 视图中创建应用程序和相关服务,并将它们部署到 OpenShift Container Platform:
入门资源 :使用这些资源帮助您开始使用开发人员控制台。您可以选择使用 Options 菜单 来隐藏标头。
- 使用示例创建应用程序 :使用现有代码示例在 OpenShift Container Platform 上创建应用程序。
- 使用指导文档构建 :遵循指导文档构建应用并熟悉关键概念和术语。
- 探索开发人员新功能 :在 Developer 视角中探索新功能和资源。
开发人员目录 :浏览 Developer Catalog 以选择所需的应用、服务或源到镜像构建器,然后将它添加到项目中。
- 所有服务 :浏览目录以在 OpenShift Container Platform 中发现服务。
- 数据库 :选择所需的数据库服务并将其添加到应用程序中。
- Operator Backed:选择并部署所需的 Operator 管理的服务。
- Helm chart :选择所需的 Helm Chart 来简化应用程序和服务部署。
事件源 :选择事件源,从特定系统中注册对一类事件的兴趣。
注意如果安装了 RHOAS Operator,也可使用 Managed services 选项。
- Git 存储库 :使用 From Git、From Devfile 或 From Dockerfile 选项分别从您的 Git 存储库中导入一个存在的 codebase、Devfile 或 Dockerfile,以在 OpenShift Container Platform 上构建和部署一个应用程序。
- 容器镜像 :使用镜像流或 registry 中的现有镜像,将其部署到 OpenShift Container Platform 中。
- 管道 :使用 Tekton 管道为 OpenShift Container Platform 上的软件交付过程创建 CI/CD 管道。
Serverless :探索 Serverless 选项,在 OpenShift Container Platform 上创建、构建和部署无状态和无服务器应用程序。
- 频道 :创建一个 Knative 频道以创建一个事件转发,使用内存的持久性层以及可靠的实现
- 示例 :探索可用的示例应用程序,以快速创建、构建和部署应用程序。
- 快速入门 :探索快速开始选项,以使用逐步说明和任务创建、导入和运行应用程序。
从本地机器中 :通过 From Local Machine 标题导入或上传在您的本地机器中的文件用于更方便地构建并部署应用程序。
- 导入 YAML :上传 YAML 文件,以创建并定义用于构建和部署应用程序的资源。
- 上传 JAR 文件 :上传 JAR 文件以构建和部署 Java 应用。
请注意,特定的选项,如 Pipelines、Event Source 和 Import Virtual Machines 只在 OpenShift Pipelines Operator、OpenShift Serverless Operator 和 OpenShift Virtualization Operator 被安装时才会显示。
3.1.1. 先决条件
要使用 Developer 视角创建应用程序,请确认以下几项:
- 已登陆到 web 控制台。
- 您已创建了一个项目,或者具有适当的角色和权限访问项目,以便在 OpenShift Container Platform 中创建应用程序和其他工作负载。
除以上所要求外,要创建无服务器应用程序,请确保:
3.1.2. 创建抽样应用程序
您可以使用 Developer 视角的 +Add 流中的示例应用程序来快速创建、构建和部署应用程序。
先决条件
- 已登陆到 OpenShift Container Platform web 控制台,且处于 Developer 视角。
流程
- 在 +Add 视图中,点 Samples 标题查看 Samples 页面。
- 在 Samples 页面中,选择一个可用的示例应用程序来查看 Create Sample Application 表单。
在 Create Sample Application Form 中:
- 在 Name 字段中,部署名称会被默认显示。您可以根据需要修改此名称。
- 在 Builder Image Version 中,会默认选择一个构建器镜像。您可以使用 Builder Image Version 下拉列表修改此镜像版本。
- 默认添加 Git 存储库 URL 示例。
- 点 Create 创建示例应用程序。示例应用程序的构建状态显示在 Topology 视图中。创建示例应用程序后,您可以看到添加到应用程序的部署。
3.1.3. 使用快速入门创建应用程序
Quick Starts 页面演示了如何在 OpenShift Container Platform 上创建、导入和运行应用程序,以及逐步说明和任务。
先决条件
- 已登陆到 OpenShift Container Platform web 控制台,且处于 Developer 视角。
流程
- 在 +Add 视图中,点 View all quick starts 链接来查看 Quick Starts 页面。
- 在 Quick Starts 页面中,点您要使用的快速启动的标题。
- 点 Start 开始快速启动。
3.1.4. 从 Git 导入代码库来创建应用程序
您可以在 Developer 视角中,使用 GitHub 中的现有代码库,在 OpenShift Container Platform 中创建、构建和部署应用程序。
以下流程逐步指导您在 Developer 视角中使用 Import from Git 选项来创建应用程序。
流程
- 在 +Add 视图中,点 Git Repository 标题中的 From Git 来查看 Import from git 表单。
-
在 Git 部分中,输入您要用来创建应用程序的代码库的 Git 存储库 URL。例如,输入此示例 Node.js 应用程序的 URL
https://github.com/sclorg/nodejs-ex
。这个 URL 随后会被验证。 可选:您可以点 Show Advanced Git Options 来添加详情,例如:
- git Reference,指向特定的分支、标签或提交中的代码,以用于构建应用程序。
- Context Dir,指定要用来构建应用程序的应用程序源代码的子目录。
- Source Secret,创建一个具有用来从私有存储库拉取源代码的凭证的 Secret Name。
可选:现在,您可以通过 Git 存储库导入 devfile、Dockerfile 或构建器镜像来进一步自定义部署。
- 如果您的 Git 存储库包含 devfile、Dockerfile 或构建器镜像,它会被自动检测并填充到相应的路径字段中。如果同一存储库中检测到 devfile、Dockerfile 和构建器镜像,则默认选择 devfile。
- 若要编辑文件导入类型并选择不同的策略,请单击 Edit import strategy 选项。
- 如果检测到多个 devfile、Dockerfile 或构建器镜像,以导入特定的 devfile、Dockerfile 或构建器镜像,请指定与上下文目录相关的相应路径。
在验证 Git URL 后,会选择建议的构建器镜像并标记为星号。如果构建器镜像没有自动探测到,请选择一个构建器镜像。对于
https://github.com/sclorg/nodejs-ex
Git URL,默认选择了 Node.js 构建器镜像。- 可选:使用 Builder Image Version 下拉菜单指定版本。
- 可选:使用 Edit import 策略来选择不同的策略。
在 General 部分中:
-
在 Application 字段中输入应用程序组别的唯一名称,例如
myapp
。确保应用程序名称在命名空间中具有唯一性。 系统会基于 Git 存储库的 URL 自动填充 Name 字段,以标识为此应用程序创建的资源(如果没有存在的应用程序)。如果已有应用程序,可以选择将组件部署到现有应用程序中,创建一个新应用程序,或保持该组件没有被分配。
注意资源名称必须在命名空间中具有唯一性。如果遇到错误,请修改资源名称。
-
在 Application 字段中输入应用程序组别的唯一名称,例如
在 Resources 部分,选择:
- Deployment,以纯 Kubernetes 风格方式创建应用程序。
- Deployment Config,创建 OpenShift Container Platform 风格的应用程序。
- Knative Service,创建微服务。
注意只有集群中安装了 Serverless Operator 时,Import from git 表单中才会显示 Knative Service 部分。如需进一步了解详细信息,请参阅有关安装 OpenShift Serverless 的文档。
- 在 Pipelines 部分,选择 Add Pipeline,然后点 Show Pipeline Visualization 来查看应用程序的管道。
- Advanced Options 部分中默认选中 Create a route to the application,以便您可以使用公开的 URL 访问应用程序。如果不想通过公共路由公开您的应用程序,可以清除此复选框。
- 可选:可以使用以下高级选项进一步自定义应用程序:
- 路由
点击 Routing 链接,您可以执行以下操作:
- 自定义路由的主机名。
- 指定路由器监控的路径。
- 从下拉列表中选择流量的目标端口。
选中 Secure Route 复选框来保护您的路由。从相应的下拉列表中,选择所需的 TLS 终止类型,并设置非安全流量的策略。
注意对于无服务器应用程序,Knative 服务管理上述所有路由选项。但在需要时,您可以自定义流量的目标端口。如果不指定目标端口,则使用默认端口
8080
。
- 健康检查
点击 Health Checks 链接为您的应用程序添加就绪(Readiness)、存活(Liveness)和启动(Startup)探测。所有探测都预先填充默认数据; 您可以使用默认数据添加探测或根据需要进行自定义。
自定义健康探测:
- 点 Add Readiness Probe,在需要的情况下修改参数来检查容器是否准备好处理请求,然后选择要添加的探测。
- 点 Add Liveness Probe,在需要的情况下修改参数来检查容器是否仍在运行,选择要添加的探测。
点 Add Startup Probe,在需要的情况下修改参数来检查容器内的应用程序是否已启动,选择要添加的探测。
对于每个探测,您可以从下拉列表中指定请求类型 - HTTP GET、Container Command 或 TCP Socket。表单会根据所选请求类型进行更改。然后您可以修改其它参数的默认值,如探测成功和失败的阈值、在容器启动后执行第一个探测前的秒数、探测的频率以及超时值。
- 构建配置和部署
点 Build Configuration 和 Deployment Configuration 链接来查看对应的配置选项。一些选项会被默认选中;您可以通过添加必要的触发器和环境变量来进一步自定义。
对于无服务器应用程序,Deployment 选项不会显示,因为 Knative 配置资源为您的部署维护所需的状态,而不是由
DeploymentConfig
资源来维护。
- 扩展
点击 Scaling 链接,以定义您要初始部署的应用程序的 pod 数或实例数。
如果要创建无服务器部署,也可以配置以下设置:
-
最小 Pod 决定 Knative 服务在任意给定时间运行的 pod 数量较低限制。这也被称为
minScale
设置。 -
最大 Pod 决定了 Knative 服务可在任意给定时间运行的 pod 数量上限。这也被称为
maxScale
设置。 - 并发目标 决定了给定时间每个应用程序实例所需的并发请求数。
- 并发限制 决定了给定时间允许每个应用程序的并发请求数的限值。
- 并发利用率 决定了在 Knative 扩展额外 pod 前必须满足并发请求限制的百分比,以处理额外的流量。
-
自动扩展窗口定义了平均时间窗口,以便在自动扩展器不处于 panic 模式时提供缩放决策的输入。如果在此窗口中没有收到任何请求,服务将缩减为零。autoscale 窗口的默认持续时间为
60s
。这也被称为 stable 窗口。
-
最小 Pod 决定 Knative 服务在任意给定时间运行的 pod 数量较低限制。这也被称为
- 资源限值
- 点击 Resource Limit 链接,设置容器在运行时保证或允许使用的 CPU 和 Memory 资源的数量。
- 标签
点击 Labels 链接,为您的应用程序添加自定义标签。
- 点击 Create,以创建应用程序并在 Topology 视图中查看其构建状态。
3.1.5. 上传 JAR 文件以轻松部署 Java 应用程序
您可以使用 Developer 视角的 Topology 视图中的 JAR 文件来部署 Java 应用程序。您可以使用以下选项上传 JAR 文件:
- 导航到 Developer 视角 的 +Add 视图,再单击 From Local Machine 标题中的 Upload JAR 文件。浏览并选择您的 JAR 文件,或者拖放 JAR 文件以部署您的应用。
- 进入 Topology 视图并使用 Upload JAR 文件 选项,或者拖放 JAR 文件来部署应用程序。
- 使用 Topology 视图中的 in-context 菜单,然后使用 Upload JAR 文件选项上传 JAR 文件以部署应用程序。
使用以下说明在 Topology 视图中上传 JAR 文件来部署 Java 应用程序:
流程
- 在 Topology 视图中,右键单击 Topology 视图中的任意位置,以查看 Add to Project 菜单。
- 将鼠标悬停在 Add to Project 菜单上,以查看菜单选项,然后选择 Upload JAR 文件选项以查看 Upload JAR 文件表单。或者,您可以在 Topology 视图中拖放 JAR 文件。
- 在 JAR 文件字段中,浏览本地计算机上所需的 JAR 文件并上传该文件。或者,您可以将 JAR 文件拖放到字段。如果将不兼容的文件类型拖放到 Topology 视图中,则右上角会显示一个警报。如果上传表单的字段中丢弃了不兼容的文件类型,则会显示字段错误。
- 您可以进一步指定可选的 Java 命令来自定义部署的应用程序。默认选择 Runtime Icon 和 Builder Image。如果没有自动探测到构建器镜像,请选择一个构建器镜像。如果需要,您可以使用 Builder Image Version 下拉列表来更改版本。
- 在可选的 Application Name 字段中输入应用程序的唯一名称作为资源标记。
- 在 Name 字段中输入唯一组件名称来命名关联的资源。
- 在 Resources 字段中,为您的应用程序选择资源类型。
- 在 Advanced options 中,点 Create a Route to the Application 配置您部署的应用程序的公共 URL。
单击 Create 以部署应用。用户会看到一个切换通知,通知 JAR 文件正在上传,这个过程会花费一段时间。相关通知还包括用于查看构建日志的链接。
注意如果用户尝试在构建运行时关闭浏览器标签页,系统会显示一个 Web 警报,询问用户是否真正想离开页面。
上传 JAR 文件并部署应用后,您可以在 Topology 视图中看到部署。
3.1.6. 使用 Developer Catalog 将服务或组件添加到应用程序中
您可以使用 Developer Catalog 根据 Operator 支持的服务(如数据库、构建器镜像和 Helm Charts)部署应用程序和服务。Developer Catalog 包含您可以添加到项目的应用程序组件、服务、事件源或 Source-to-image 构建器的集合。集群管理员可以自定义目录中提供的内容。
流程
- 在 Developer 视角中,导航到 +Add 视图,从 Developer Catalog 标题中点击 All Services 来查看 Developer Catalog 中的所有可用服务。
- 在 All Services 下,选择服务类型或您需要添加到项目的组件。在本例中,选择 Databases 以列出所有数据库服务,然后点击 MariaDB 查看该服务的详情。
点 Instantiate Template 查看带有 MariaDB 服务详情的自动填充的模板,然后点 Create 在 Topology 视图中创建并查看 MariaDB 服务的信息。
图 3.1. Topology 中的 MariaDB
3.1.7. 其他资源
- 如需有关 OpenShift Serverless 的 Knative 路由设置的更多信息,请参阅 路由。
- 如需有关 OpenShift Serverless 的域映射设置的更多信息,请参阅为 Knative 服务配置自定义域。
- 如需有关 OpenShift Serverless 的 Knative 自动扩展设置的更多信息,请参阅 自动扩展。