第 3 章 创建应用程序
3.1. 使用 Developer 视角创建应用程序
Web 控制台中的 Developer 视角为您提供了以下选项,以便您从 +Add 视图中创建应用程序和相关服务,并将它们部署到 OpenShift Dedicated 中:
入门资源:使用这些资源帮助您开始使用开发人员控制台。您可以选择使用 Options 菜单 来隐藏标头。
- 使用示例创建应用程序:使用现有代码示例开始在 OpenShift Dedicated 上创建应用程序。
- 使用引导式练习文档构建:遵循指导文档构建应用并熟悉关键概念和术语。
- 探索开发人员新功能:探索 Developer 视角中的新功能和资源。
Developer Catalog:浏览 Developer Catalog 以选择所需的应用、服务或源到镜像构建器,然后将它添加到项目中。
- 所有服务:浏览目录以在 OpenShift Dedicated 中发现服务。
- Database:选择所需的数据库服务并将其添加到应用程序中。
- Operator Backed:选择和部署所需的 Operator 管理服务。
- Helm Chart:选择所需的 Helm Chart 来简化应用程序和服务部署。
- Devfile: 从 Devfile registry 中选择一个 devfile 来声明性地定义开发环境。
Event Source:选择一个事件源,从特定系统中注册对一类事件的兴趣。
注意如果安装了 RHOAS Operator,也可使用 Managed services 选项。
- Git 存储库:使用 From Git、From Devfile 或 From Dockerfile 选项分别从您的 Git 存储库中导入一个存在的 codebase、Devfile 或 Dockerfile,以在 OpenShift Dedicated 上构建和部署一个应用程序。
- Container Image:使用镜像流或 registry 中的现有镜像,将其部署到 OpenShift Dedicated 中。
- Pipelines:使用 Tekton 管道为 OpenShift Dedicated 上的软件交付过程创建 CI/CD 管道。
Serverless:探索 Serverless 选项,在 OpenShift Dedicated 中创建、构建和部署无状态和无服务器应用程序。
- Channel:创建一个 Knative 频道以创建一个事件转发,使用内存的持久性层以及可靠的实现
- 示例:探索可用的示例应用程序,以快速创建、构建和部署应用程序。
- 快速入门 :了解快速启动选项,使用详细的说明和任务创建、导入并运行应用程序。
From Local Machine:通过 From Local Machine 标题导入或上传在您的本地机器中的文件用于更方便地构建并部署应用程序。
- 导入 YAML:上传 YAML 文件,以创建并定义用于构建和部署应用程序的资源。
- 上传 JAR 文件:上传 JAR 文件以构建和部署 Java 应用。
- 共享我的项目 :使用此选项向项目添加或删除用户,并提供可访问性选项。
- Helm Chart 仓库 : 使用此选项在命名空间中添加 Helm Chart 仓库。
- 对资源重新排序:使用这些资源重新排序添加到导航窗格中的固定资源。当您将鼠标悬停在导航窗格中时,固定资源左侧会显示拖放图标。拖放的资源只能在它所在的部分中丢弃。
请注意,只有在安装 OpenShift Pipelines Operator 时,Pipelines 选项才会显示。
3.1.1. 先决条件
要使用 Developer 视角创建应用程序,请确认以下几项:
- 已登陆到 web 控制台。
3.1.2. 创建示例应用程序
您可以使用 Developer 视角的 +Add 流中的示例应用程序来快速创建、构建和部署应用程序。
先决条件
- 已登陆到 OpenShift Dedicated 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 Dedicated 上创建、导入和运行应用程序,以及逐步说明和任务。
先决条件
- 已登陆到 OpenShift Dedicated web 控制台,且处于 Developer 视角。
流程
-
在 +Add 视图中,点 Getting Started resources
Build with guided documentation View all quick start 链接来查看 Quick Starts 页面。 - 在 Quick Starts 页面中,点您要使用的快速启动的标题。
- 点 Start 开始快速启动。
- 执行显示的步骤。
3.1.4. 从 Git 导入代码库来创建应用程序
您可以在 Developer 视角中,使用 GitHub 中的现有代码库,在 OpenShift Dedicated 中创建、构建和部署应用程序。
以下流程逐步指导您在 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
、构建器镜像
或Serverless 函数
,以进一步自定义部署。-
如果您的 Git 存储库包含
Devfile
、Dockerfile
、构建器镜像
或func.yaml
,则会自动检测并填充到相应的路径字段中。 -
如果同一存储库中检测到
Devfile
、Dockerfile
或构建器镜像
,则默认选择Devfile
。 -
如果在 Git 存储库中检测到
func.yaml
,Import Strategy 会更改为Serverless Function
。 - 另外,您可以使用 Git 存储库 URL 在 +Add 视图中点 Create Serverless function 来创建无服务器函数。
- 若要编辑文件导入类型并选择不同的策略,请单击 Edit import strategy 选项。
-
如果检测到多个
Devfiles
、Dockerfile
或构建器镜像
,要导入一个特定的实例,请指定相对于上下文目录的对应路径。
-
如果您的 Git 存储库包含
在验证 Git URL 后,会选择建议的构建器镜像并标记为星号。如果构建器镜像没有自动探测到,请选择一个构建器镜像。对于
https://github.com/sclorg/nodejs-ex
Git URL,默认选择了 Node.js 构建器镜像。- 可选: 使用 Builder Image Version 下拉菜单指定版本。
- 可选: 使用 Edit import 策略来选择不同的策略。
- 可选: 对于 Node.js 构建器镜像,请使用 Run command 字段覆盖运行应用程序的命令。
在 General 部分中:
-
在 Application 字段中输入应用程序组别的唯一名称,例如
myapp
。确保应用程序名称在命名空间中具有唯一性。 系统会基于 Git 存储库的 URL 自动填充 Name 字段,以标识为此应用程序创建的资源(如果没有存在的应用程序)。如果已有应用程序,可以选择将组件部署到现有应用程序中,创建一个新应用程序,或保持该组件没有被分配。
注意资源名称必须在命名空间中具有唯一性。如果遇到错误,请修改资源名称。
-
在 Application 字段中输入应用程序组别的唯一名称,例如
在 Resources 部分,选择:
- Deployment,以纯 Kubernetes 风格方式创建应用程序。
- Deployment Config,创建 OpenShift Dedicated 风格的应用程序。
在 Pipelines 部分,选择 Add Pipeline,然后点 Show Pipeline Visualization 来查看应用程序的管道。选择了默认管道,但您可以从应用程序的可用管道列表中选择所需的管道。
注意选中 Add pipeline 复选框,如果满足以下条件,则默认选择 Configure PAC :
- 已安装 Pipeline operator
-
启用了
Pipelines-as-code
-
在 Git 存储库中检测到
.tekton
目录
在您的存储库中添加 webhook。如果选择了 Configure PAC 并且设置了 GitHub 应用程序,您可以看到 Use GitHub App 和 Setup a webhook 选项。如果没有设置 GitHub App,则只能看到 Setup a webhook 选项:
-
进入 Settings
Webhooks 并点 Add webhook。 - 将 Payload URL 设置为 Pipelines as Code 的公共 URL。
- 将内容类型选为 application/json。
-
添加 webhook secret 并在另一个位置记录它。在本地机器上安装
openssl
后,生成一个随机 secret。 - 点 Let me select individual events 并选择这些事件:Commit comments, Issue comments, Pull request, 和 Pushes.
- 点击 Add webhook。
-
进入 Settings
可选: 在 Advanced Options 部分中,默认选择 Target port 和 Create a route to the application,以便您可以使用公开的 URL 访问应用程序。
如果您的应用程序没有在默认公共端口(80)上公开其数据,请清除复选框,并设置您想要公开的目标端口号。
可选:可以使用以下高级选项进一步自定义应用程序:
- 路由
点击 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. 通过部署容器镜像来创建应用程序
您可以使用外部镜像 registry 或内部 registry 中的镜像流标签在集群中部署应用程序。
先决条件
- 已登陆到 OpenShift Dedicated web 控制台,且处于 Developer 视角。
流程
- 在 +Add 视图中,点 Container images 查看 Deploy Images 页面。
在 Image 部分:
- 选择 Image name from external registry 部署来自一个公共或私有 registry 的镜像,或者选择 Image stream tag from internal registry 部署来自内部 registry 的镜像。
- 在 Runtime icon 选项卡中为您的镜像选择一个图标。
在 General 部分中:
- 在 Application name 字段中输入应用程序分组的唯一名称。
- 在 Name 字段中输入唯一名称,以标识为此组件创建的资源。
在 Resource type 部分中,选择要生成的资源类型:
-
选择 Deployment 来为
Pod
和ReplicaSet
对象启用声明性更新。 -
选择 DeploymentConfig 来为
Pod
对象定义模板,并管理部署新镜像和配置源。
-
选择 Deployment 来为
- 点 Create。您可以在 Topology 视图中查看应用程序的构建状态。
3.1.6. 通过上传 JAR 文件来部署 Java 应用程序
您可以使用 Web 控制台 Developer 视角使用以下选项上传 JAR 文件:
- 导航到 Developer 视角 的 +Add 视图,再单击 From Local Machine 标题中的 Upload JAR 文件。浏览并选择 JAR 文件,或者拖动 JAR 文件以部署应用程序。
- 进入到 Topology 视图并使用 Upload JAR 文件 选项,或者拖动 JAR 文件以部署应用程序。
- 使用 Topology 视图中的 in-context 菜单,然后使用 Upload JAR 文件选项上传 JAR 文件以部署应用程序。
先决条件
-
Cluster Samples Operator 必须由具有
dedicated-admin
角色的用户安装。 - 您可以访问 OpenShift Dedicated Web 控制台,且处于 Developer 视角。
流程
- 在 Topology 视图中,右键点任何位置来查看 Add to Project 菜单。
- 将鼠标悬停在 Add to Project 菜单上,以查看菜单选项,然后选择 Upload JAR 文件选项以查看 Upload JAR 文件表单。或者,您可以将 JAR 文件拖到 Topology 视图中。
- 在 JAR 文件字段中,浏览本地计算机上所需的 JAR 文件并上传该文件。或者,您可以将 JAR 文件拖到字段。如果将不兼容的文件类型拖到 Topology 视图中,则右上角会显示一个警报。如果上传表单的字段中丢弃了不兼容的文件类型,则会显示字段错误。
- 默认选择运行时图标和构建器镜像。如果构建器镜像没有自动探测到,请选择一个构建器镜像。如果需要,您可以使用 Builder Image Version 下拉列表来更改版本。
- 可选:在 Application Name 字段中输入应用程序的唯一名称,用于资源标记。
- 在 Name 字段中输入相关资源的唯一组件名称。
- 可选: 使用 Resource type 下拉列表更改资源类型。
- 在 Advanced options 菜单中,点 Create a Route to the Application 配置您部署的应用程序的公共 URL。
- 点 Create 以部署应用。显示有提示通知,以通知您 JAR 文件正在上传。相关通知还包括用于查看构建日志的链接。
如果您在构建运行时尝试关闭浏览器标签页,则会显示 Web 警报。
上传 JAR 文件并部署应用后,您可以在 Topology 视图中查看应用程序。
3.1.7. 使用 Devfile registry 访问 devfile
您可以使用 Developer 视角的 +Add 流中的 devfile 创建应用程序。+Add 流提供与 devfile 社区 registry 的完整集成。devfile 是一个可移植的 YAML 文件,它描述了您的开发环境,而无需从头开始进行配置。使用 Devfile registry,您可以使用预配置的 devfile 创建应用程序。
流程
-
进入 Developer 视角
+Add Developer Catalog All Services。此时会显示 Developer Catalog 中所有可用服务的列表。 - 在 Type 下,点 Devfiles 浏览支持特定语言或框架的 devfile。另外,您可以使用 keyword 过滤器使用其名称、标签或描述搜索特定 devfile。
- 点击您要用来创建应用程序的 devfile。devfile 标题显示 devfile 的详情,包括 devfile 的名称、描述、供应商和 devfile 文档。
- 点 Create 创建一个应用程序,并在 Topology 视图中查看应用程序。
3.1.8. 使用 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.9. 其他资源
- 如需有关 OpenShift Serverless 的 Knative 路由设置的更多信息,请参阅 路由。
- 如需有关 OpenShift Serverless 的域映射设置的更多信息,请参阅为 Knative 服务配置自定义域。
- 如需有关 OpenShift Serverless 的 Knative 自动扩展设置的更多信息,请参阅 自动扩展。
- 有关向项目添加新用户的更多信息,请参阅使用项目。
- 有关创建 Helm Chart 仓库的更多信息,请参阅创建 Helm Chart 仓库。