教程
OpenShift Container Platform 入门
摘要
第 1 章 教程概述 复制链接链接已复制到粘贴板!
您可以使用 OpenShift CLI (oc
)或 Web 控制台在 OpenShift Container Platform 上部署应用程序的端到端示例。
1.1. 其他学习资源 复制链接链接已复制到粘贴板!
要发现 OpenShift Container Platform 的其他教程和实践学习资源,请参阅 其他实践学习。
第 2 章 教程:使用 Web 控制台部署应用程序 复制链接链接已复制到粘贴板!
本教程介绍了部署服务以备份在 OpenShift Container Platform 上名为 national-parks-app
的应用程序,该应用程序显示了全球的国家公园地图。您将使用 OpenShift Container Platform Web 控制台完成本教程。
要完成本教程,您将执行以下步骤:
完成这些步骤后,您可以在 Web 浏览器 中查看国家公园应用程序。
2.1. 先决条件 复制链接链接已复制到粘贴板!
在开始本教程前,请确保您有以下先决条件:
您可以访问测试的 OpenShift Container Platform 集群。
如果您的机构没有要测试的集群,您可以请求访问 Developer Sandbox 来获取 OpenShift Container Platform 的试用。
您有适当的权限,如
cluster-admin
集群角色,在其中创建一个项目和应用程序。如果您没有所需的权限,请联络您的集群管理员。您需要
self-provisioner
角色来创建项目和项目的admin
角色,以修改该项目中的资源。如果使用 Developer Sandbox,则会为您创建一个具有所需权限的项目。
- 已登陆到 OpenShift Container Platform Web 控制台。
2.2. 创建一个项目 复制链接链接已复制到粘贴板!
通过项目,一个社区用户可以在隔离时组织和管理其内容。项目是 OpenShift Container Platform 对 Kubernetes 命名空间的扩展。项目具有额外的功能,使用户自助配置。每个项目都有自己的一组对象、策略、约束和服务帐户的集合。
集群管理员可以允许开发人员创建自己的项目。在大多数情况下,您可以自动获得对自己的项目的访问权限。管理员可以根据需要授予其他项目的访问权限。
此流程创建一个名为 user-get-started 的新项目
。在本教程的其余部分中,您将使用此项目。
如果您使用 Developer Sandbox 完成本教程,请跳过这个过程。已为您创建一个项目。
先决条件
- 已登陆到 OpenShift Container Platform Web 控制台。
流程
- 浏览至 Home → Project。
- 点击 Create Project。
-
在 Name 字段中输入
user-getting-started
。 - 点 Create。
2.3. 授予查看权限 复制链接链接已复制到粘贴板!
OpenShift Container Platform 会在每个项目中自动创建多个服务帐户。默认服务帐户
负责运行 pod。OpenShift Container Platform 使用并将此服务帐户注入到启动的每个 pod 中。
默认情况下
,默认服务帐户具有与 OpenShift API 交互的有限权限。
根据应用的要求,您必须将 view
角色分配给 default
服务帐户,以允许它与 OpenShift API 通信,以了解项目中的 pod、服务和资源。
先决条件
-
有
cluster-admin
或项目级别的admin
权限。
流程
- 导航到 User Management → RoleBindings。
- 点 Create binding。
-
在 Name 字段中,输入
sa-user-account
。 在 Namespace 字段中,搜索并选择
user-getting-started
。重要如果您使用其他项目,请选择项目的名称。
-
在 Role name 字段中,搜索并选择
view
。 -
在 Subject 下,选择
ServiceAccount
。 在 Subject namespace 字段中,搜索并选择
user-getting-started
。重要如果您使用其他项目,请选择项目的名称。
-
在 Subject name 字段中,输入
default
。 - 点 Create。
2.4. 部署前端应用程序 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 中部署应用程序的最简单方法是运行提供的容器镜像。
以下流程部署 parksmap
,这是 national-parks-app
应用的前端组件。Web 应用显示全球国家公园位置的交互式地图。
流程
-
在右上角的 Quick create (
)菜单中点击 Container images。
-
从外部 registry 选择 Image name 并输入
quay.io/openshiftroadshow/parksmap:latest
。 - 滚动到 General 部分。
-
在 Application name 字段中,输入
national-parks-app
。 -
在 Name 字段中,确保值是
parksmap
。 - 滚动到 Deploy 部分。
- 在 Resource type 字段中,确保选择了 Deployment。
在 Advanced options 部分中,确保选择了 Create a route。
默认情况下,在 OpenShift Container Platform 上运行的服务无法从外部访问。您必须选择这个选项来创建路由,以便外部客户端可以访问您的服务。
点 Labels 超链接。
应用程序代码需要设置某些标签。
在文本区中添加以下标签,并在每个键/值对后按 Enter 键:
-
app=national-parks-app
-
component=parksmap
-
role=frontend
-
- 点 Create。
您会被重定向到 Topology 页面,您可以在其中查看 national-parks-app
应用程序中的 parksmap
部署。
2.4.1. 查看 pod 详情 复制链接链接已复制到粘贴板!
OpenShift Container Platform 使用 Kubernetes 的 pod 概念,它是共同部署在同一主机上的一个或多个容器,也是可被定义、部署和管理的最小计算单元。对容器而言,Pod 大致相当于一个机器实例(物理或虚拟)。
通过 Overview 面板,您可以访问 parksmap
部署的许多功能。Details 和 Resources 选项卡允许您扩展应用程序 pod,并检查构建、服务和路由的状态。
先决条件
-
您已部署了
parksmap
前端应用程序。
流程
- 导航到 Workloads → Topology。
单击
national-parks-app
应用中的parksmap
部署。图 2.1. Parksmap 部署
这会打开一个概述面板,其中包含以下标签页:
- 详情 :查看部署的详细信息,编辑某些设置并扩展您的部署。
- 资源 :查看与部署关联的 pod、服务和路由的详情。
- 观察 :查看部署的指标和事件。
-
要查看 pod 的日志,请选择 Resources 选项卡,再点
parksmap
pod 旁边的 View logs。
2.4.2. 扩展应用程序 复制链接链接已复制到粘贴板!
在 Kubernetes 中,Deployment
对象定义了应用的部署方式。在大多数情况下,当部署应用程序时,OpenShift Container Platform 会为您创建 Pod
、Service
、ReplicaSet
和 Deployment
资源。
当您部署 parksmap
镜像时,会创建一个部署资源。在本例中,只部署了一个 pod。您可能需要扩展应用程序,以便满足用户需求或确保应用程序始终运行,即使一个 pod 停机也是如此。
以下流程将 parksmap
部署扩展到使用两个实例。
先决条件
-
您已部署了
parksmap
前端应用程序。
流程
-
进入到 Workloads → Topology,然后点
parksmap
部署。 - 选择 Details 选项卡。
使用向上箭头将容器集扩展到两个实例。
图 2.2. 扩展应用程序
您可以使用向下箭头将部署缩减为一个 pod 实例。
2.5. 部署后端应用程序 复制链接链接已复制到粘贴板!
以下流程部署 nationalparks
,这是 national-parks-app
应用的后端组件。Python 应用程序针对 MongoDB 数据库执行 2D geo-spatial 查询,以定位和返回世界上的所有国家公园的信息。
先决条件
-
您已部署了
parksmap
前端应用程序。
流程
-
在右上角的 Quick create (
)菜单中点击 Import from Git。
在 Git Repo URL 字段中,输入
https://github.com/openshift-roadshow/nationalparks-py.git
。构建器镜像会被自动检测到,但导入策略默认为 Dockerfile,而不是 Python。
更改导入策略:
- 单击 Edit Import Strategy。
- 选择 Builder Image。
- 选择 Python。
- 滚动到 General 部分。
-
在 Application 字段中,确保值为
national-parks-app
。 -
在 Name 字段中输入
nationalparks
。 - 滚动到 Deploy 部分。
- 在 Resource type 字段中,确保选择了 Deployment。
在 Advanced options 部分中,确保选择了 Create a route。
默认情况下,在 OpenShift Container Platform 上运行的服务无法从外部访问。您必须选择这个选项来创建路由,以便外部客户端可以访问您的服务。
点 Labels 超链接。
应用程序代码需要设置某些标签。
在文本区中添加以下标签,并在每个键/值对后按 Enter 键:
-
app=national-parks-app
-
component=nationalparks
-
role=backend
-
type=parksmap-backend
-
- 点 Create。
您将被重定向到 Topology 页面,您可以在其中看到 national-parks-app
应用中的 nationalparks
部署。
验证
- 导航到 Workloads → Topology。
-
单击
national-parks-app
应用中的nationalparks
部署。 单击 Resources 选项卡。
等待构建成功完成。
2.6. 部署数据库应用程序 复制链接链接已复制到粘贴板!
以下流程部署 mongodb-nationalparks
,它是一个 MongoDB 数据库,它将保存国家 park 位置信息。
先决条件
-
您已部署了
parksmap
前端应用程序。 -
您已部署了
nationalparks
后端应用程序。
流程
-
在右上角的 Quick create (
)菜单中点击 Container images。
-
从外部 registry 选择 Image name 并输入
registry.redhat.io/rhmap47/mongodb
。 -
在 Runtime 图标 字段中,搜索并选择
mongodb
。 - 滚动到 General 部分。
-
在 Application name 字段中,输入
national-parks-app
。 -
在 Name 字段中输入
mongodb-nationalparks
。 - 滚动到 Deploy 部分。
- 在 Resource type 字段中,确保选择了 Deployment。
- 单击 Show advanced Deployment 选项。
在环境变量(仅限运行时) 下,添加以下名称和值:
Expand 表 2.1. 环境变量名称和值 Name value MONGODB_USER
mongodb
MONGODB_PASSWORD
mongodb
MONGODB_DATABASE
mongodb
MONGODB_ADMIN_PASSWORD
mongodb
提示点 Add value 来添加每个额外的环境变量。
在 Advanced options 部分中,清除 Create a route。
数据库应用不需要从外部访问,因此不需要路由。
- 点 Create。
您将被重定向到 Topology 页面,您可以在其中查看 national-parks-app
应用程序中的 mongodb-nationalparks
部署。
2.6.1. 通过创建 secret 提供对数据库的访问 复制链接链接已复制到粘贴板!
nationalparks
应用程序需要信息,如数据库名称、用户名和密码来访问 MongoDB 数据库。但是,由于此信息敏感,因此不应将这些信息直接存储在 pod 中。
您可以使用 secret 存储敏感信息,并与工作负载共享该 secret。
Secret
对象提供了一种机制来保存敏感信息,如密码、OpenShift Container Platform 客户端配置文件和私有源存储库凭证。secret 将敏感内容与 Pod 分离。您可以使用卷插件或作为环境变量传递 secret 来将 secret 挂载到容器中。然后,系统可以使用 secret 为 pod 提供敏感信息。
以下流程创建 nationalparks-mongodb-parameters
secret,并将其挂载到 nationalparks
工作负载。
先决条件
-
您已部署了
nationalparks
后端应用程序。 -
您已部署了
mongodb-nationalparks
数据库应用程序。
流程
- 导航到 Workloads → Secrets。
- 点 Create → Key/value secret。
-
在 Secret name 字段中,输入
nationalparks-mongodb-parameters
。 输入 Key 和 Value 的以下值:
Expand 表 2.2. Secret 键和值 键 value DATABASE_SERVICE_NAME
mongodb-nationalparks
MONGODB_USER
mongodb
MONGODB_PASSWORD
mongodb
MONGODB_DATABASE
mongodb
MONGODB_ADMIN_PASSWORD
mongodb
提示点 Add key/value 来添加每个额外的键/值对。
- 点 Create。
- 点 Add Secret to workload。
-
从 Add this secret to workload 列表中,选择
nationalparks
。 - 点击 Save。
这个配置的更改会触发一个新的 nationalparks
部署推出部署,并正确注入环境变量。
2.6.2. 将数据加载到数据库中 复制链接链接已复制到粘贴板!
部署 mongodb-nationalparks
数据库后,您可以将国家 park 位置信息加载到数据库中。
先决条件
-
您已部署了
nationalparks
后端应用程序。 -
您已部署了
mongodb-nationalparks
数据库应用程序。
流程
- 导航到 Workloads → Topology。
-
单击
nationalparks
部署,再选择 Resources 选项卡。 - 从您的路由复制 Location URL。
将 URL 粘贴到您的网页浏览器中,并在 URL 的末尾添加以下内容:
/ws/data/load
/ws/data/load
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
https://nationalparks-user-getting-started.apps.cluster.example.com/ws/data/load
https://nationalparks-user-getting-started.apps.cluster.example.com/ws/data/load
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Items inserted in database: 2893
Items inserted in database: 2893
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7. 在网页浏览器中查看应用程序 复制链接链接已复制到粘贴板!
在部署了必要的应用程序并将数据加载到数据库后,您现在可以通过浏览器查看国家公园应用程序。
您可以通过打开前端应用程序的 URL 来访问应用程序。
先决条件
-
您已部署了
parksmap
前端应用程序。 -
您已部署了
nationalparks
后端应用程序。 -
您已部署了
mongodb-nationalparks
数据库应用程序。 -
您已将数据加载到
mongodb-nationalparks
数据库中。
流程
- 导航到 Workloads → Topology。
单击
parksmap
部署中的 Open URL 链接。图 2.3. 跨世界的国家公园
验证您的 Web 浏览器是否显示了全球国家公园地图。
图 2.4. 跨世界的国家公园
如果您允许应用程序访问您的位置,则映射将位于您的位置。
第 3 章 教程:使用 CLI 部署应用程序 复制链接链接已复制到粘贴板!
本教程介绍了部署服务以备份在 OpenShift Container Platform 上名为 national-parks-app
的应用程序,该应用程序显示了全球的国家公园地图。您将使用 OpenShift CLI (oc
)完成本教程。
要完成本教程,您将执行以下步骤:
完成这些步骤后,您可以在 Web 浏览器 中查看国家公园应用程序。
3.1. 先决条件 复制链接链接已复制到粘贴板!
在开始本教程前,请确保您有以下先决条件:
-
已安装 OpenShift CLI (
oc
)。 您可以访问测试的 OpenShift Container Platform 集群。
如果您的机构没有要测试的集群,您可以请求访问 Developer Sandbox 来获取 OpenShift Container Platform 的试用。
您有适当的权限,如
cluster-admin
集群角色,在其中创建一个项目和应用程序。如果您没有所需的权限,请联络您的集群管理员。您需要
self-provisioner
角色来创建项目和项目的admin
角色,以修改该项目中的资源。如果使用 Developer Sandbox,则会为您创建一个具有所需权限的项目。
-
已使用 OpenShift CLI (
oc
)登录集群。
3.2. 创建一个项目 复制链接链接已复制到粘贴板!
通过项目,一个社区用户可以在隔离时组织和管理其内容。项目是 OpenShift Container Platform 对 Kubernetes 命名空间的扩展。项目具有额外的功能,使用户自助配置。每个项目都有自己的一组对象、策略、约束和服务帐户的集合。
集群管理员可以允许开发人员创建自己的项目。在大多数情况下,您可以自动获得对自己的项目的访问权限。管理员可以根据需要授予其他项目的访问权限。
此流程创建一个名为 user-get-started 的新项目
。在本教程的其余部分中,您将使用此项目。
如果您使用 Developer Sandbox 完成本教程,请跳过这个过程。已为您创建一个项目。
先决条件
-
已登陆到 OpenShift CLI (
oc
)。
流程
运行以下命令来创建项目:
oc new-project user-getting-started
$ oc new-project user-getting-started
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Now using project "user-getting-started" on server "https://openshift.example.com:6443". ...
Now using project "user-getting-started" on server "https://openshift.example.com:6443". ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3. 授予查看权限 复制链接链接已复制到粘贴板!
OpenShift Container Platform 会在每个项目中自动创建多个服务帐户。默认服务帐户
负责运行 pod。OpenShift Container Platform 使用并将此服务帐户注入到启动的每个 pod 中。
默认情况下
,默认服务帐户具有与 OpenShift API 交互的有限权限。
根据应用的要求,您必须将 view
角色分配给 default
服务帐户,以允许它与 OpenShift API 通信,以了解项目中的 pod、服务和资源。
先决条件
- 有访问 OpenShift Container Platform 集群的权限。
-
已安装 OpenShift CLI(
oc
)。 -
有
cluster-admin
或项目级别的admin
权限。
流程
运行以下命令,将
view
角色添加到user-get-started
项目中的default
服务帐户:oc adm policy add-role-to-user view -z default -n user-getting-started
$ oc adm policy add-role-to-user view -z default -n user-getting-started
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要如果您使用其他项目,请将
user-getting-started
替换为项目的名称。
3.4. 部署前端应用程序 复制链接链接已复制到粘贴板!
在 OpenShift Container Platform 中部署应用程序的最简单方法是运行提供的容器镜像。
以下流程部署 parksmap
,这是 national-parks-app
应用的前端组件。Web 应用显示全球国家公园位置的交互式地图。
先决条件
- 有访问 OpenShift Container Platform 集群的权限。
-
已安装 OpenShift CLI(
oc
)。
流程
运行以下命令部署
parksmap
应用程序:oc new-app quay.io/openshiftroadshow/parksmap:latest --name=parksmap -l 'app=national-parks-app,component=parksmap,role=frontend,app.kubernetes.io/part-of=national-parks-app'
$ oc new-app quay.io/openshiftroadshow/parksmap:latest --name=parksmap -l 'app=national-parks-app,component=parksmap,role=frontend,app.kubernetes.io/part-of=national-parks-app'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.1. 公开前端服务 复制链接链接已复制到粘贴板!
默认情况下,在 OpenShift Container Platform 上运行的服务无法从外部访问。
要公开您的服务,以便外部客户端可以访问该服务,您可以创建一个 路由。Route
对象是类似于 Kubernetes Ingress
对象的 OpenShift Container Platform 网络资源。默认的 OpenShift Container Platform 路由器(HAProxy)使用传入请求的 HTTP 标头来确定连接的位置。
另外,您可以为路由定义安全性,如 TLS。
先决条件
-
您已部署了
parksmap
前端应用程序。 -
有
cluster-admin
或项目级别的admin
权限。
流程
运行以下命令,创建一个路由来公开
parksmap
前端应用程序:oc create route edge parksmap --service=parksmap
$ oc create route edge parksmap --service=parksmap
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令验证应用程序路由是否已成功创建:
oc get route parksmap
$ oc get route parksmap
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD parksmap parksmap-user-getting-started.apps.cluster.example.com parksmap 8080-tcp edge None
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD parksmap parksmap-user-getting-started.apps.cluster.example.com parksmap 8080-tcp edge None
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.2. 查看 pod 详情 复制链接链接已复制到粘贴板!
OpenShift Container Platform 使用 Kubernetes 的 pod 概念,它是共同部署在同一主机上的一个或多个容器,也是可被定义、部署和管理的最小计算单元。对容器而言,Pod 大致相当于一个机器实例(物理或虚拟)。
您可以查看集群中的 pod,并确定这些 pod 和整个集群的健康状态。
先决条件
-
您已部署了
parksmap
前端应用程序。
流程
运行以下命令,列出当前项目中的所有 pod:
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE parksmap-5f9579955-6sng8 1/1 Running 0 77s
NAME READY STATUS RESTARTS AGE parksmap-5f9579955-6sng8 1/1 Running 0 77s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令显示 pod 的详情:
oc describe pod parksmap-5f9579955-6sng8
$ oc describe pod parksmap-5f9579955-6sng8
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,查看 pod 的日志:
oc logs parksmap-5f9579955-6sng8
$ oc logs parksmap-5f9579955-6sng8
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
... 2025-03-26 18:03:24.774 INFO 1 --- [ main] o.s.m.s.b.SimpleBrokerMessageHandler : Started. 2025-03-26 18:03:24.798 INFO 1 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) 2025-03-26 18:03:24.801 INFO 1 --- [ main] c.o.evg.roadshow.ParksMapApplication : Started ParksMapApplication in 4.053 seconds (JVM running for 4.46)
... 2025-03-26 18:03:24.774 INFO 1 --- [ main] o.s.m.s.b.SimpleBrokerMessageHandler : Started. 2025-03-26 18:03:24.798 INFO 1 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) 2025-03-26 18:03:24.801 INFO 1 --- [ main] c.o.evg.roadshow.ParksMapApplication : Started ParksMapApplication in 4.053 seconds (JVM running for 4.46)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.3. 扩展部署 复制链接链接已复制到粘贴板!
在 Kubernetes 中,Deployment
对象定义了应用的部署方式。在大多数情况下,当部署应用程序时,OpenShift Container Platform 会为您创建 Pod
、Service
、ReplicaSet
和 Deployment
资源。
当您部署 parksmap
镜像时,会创建一个部署资源。在本例中,只部署了一个 pod。您可能需要扩展应用程序,以便满足用户需求或确保应用程序始终运行,即使一个 pod 停机也是如此。
以下流程将 parksmap
部署扩展到使用两个实例。
先决条件
-
您已部署了
parksmap
前端应用程序。
流程
运行以下命令,将部署从一个 pod 实例扩展到两个 pod 实例:
oc scale --replicas=2 deployment/parksmap
$ oc scale --replicas=2 deployment/parksmap
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
deployment.apps/parksmap scaled
deployment.apps/parksmap scaled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令验证您的部署是否已正确扩展:
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE parksmap-5f9579955-6sng8 1/1 Running 0 7m39s parksmap-5f9579955-8tgft 1/1 Running 0 24s
NAME READY STATUS RESTARTS AGE parksmap-5f9579955-6sng8 1/1 Running 0 7m39s parksmap-5f9579955-8tgft 1/1 Running 0 24s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证是否列出了两个
parksmap
pod。
要将部署缩减为一个 pod 实例,请将 1
传递给 副本
选项:
oc scale --replicas=1 deployment/parksmap
$ oc scale --replicas=1 deployment/parksmap
3.5. 部署后端应用程序 复制链接链接已复制到粘贴板!
以下流程部署 nationalparks
,这是 national-parks-app
应用的后端组件。Python 应用程序针对 MongoDB 数据库执行 2D geo-spatial 查询,以定位和返回世界上的所有国家公园的信息。
先决条件
-
您已部署了
parksmap
前端应用程序。
流程
运行以下命令来创建
nationalparks
后端应用程序:oc new-app python~https://github.com/openshift-roadshow/nationalparks-py.git --name nationalparks -l 'app=national-parks-app,component=nationalparks,role=backend,app.kubernetes.io/part-of=national-parks-app,app.kubernetes.io/name=python' --allow-missing-images=true
$ oc new-app python~https://github.com/openshift-roadshow/nationalparks-py.git --name nationalparks -l 'app=national-parks-app,component=nationalparks,role=backend,app.kubernetes.io/part-of=national-parks-app,app.kubernetes.io/name=python' --allow-missing-images=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.1. 公开后端服务 复制链接链接已复制到粘贴板!
与为外部客户端公开前端服务的方式类似,现在您必须通过创建路由来公开后端服务。
先决条件
-
您已部署了
nationalparks
后端应用程序。 -
有
cluster-admin
或项目级别的admin
权限。
流程
运行以下命令,创建一个路由来公开
nationalparks
后端应用程序:oc create route edge nationalparks --service=nationalparks
$ oc create route edge nationalparks --service=nationalparks
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令标记
nationalparks
路由:oc label route nationalparks type=parksmap-backend
$ oc label route nationalparks type=parksmap-backend
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用程序代码预期
nationalparks
路由使用type=parksmap-backend
进行标记。
3.6. 部署数据库应用程序 复制链接链接已复制到粘贴板!
以下流程部署 mongodb-nationalparks
,它是一个 MongoDB 数据库,它将保存国家 park 位置信息。
先决条件
-
您已部署了
parksmap
前端应用程序。 -
您已部署了
nationalparks
后端应用程序。
流程
运行以下命令部署
mongodb-nationalparks
数据库应用程序:oc new-app registry.redhat.io/rhmap47/mongodb --name mongodb-nationalparks -e MONGODB_USER=mongodb -e MONGODB_PASSWORD=mongodb -e MONGODB_DATABASE=mongodb -e MONGODB_ADMIN_PASSWORD=mongodb -l 'app.kubernetes.io/part-of=national-parks-app,app.kubernetes.io/name=mongodb'
$ oc new-app registry.redhat.io/rhmap47/mongodb --name mongodb-nationalparks -e MONGODB_USER=mongodb -e MONGODB_PASSWORD=mongodb -e MONGODB_DATABASE=mongodb -e MONGODB_ADMIN_PASSWORD=mongodb -l 'app.kubernetes.io/part-of=national-parks-app,app.kubernetes.io/name=mongodb'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6.1. 通过创建 secret 提供对数据库的访问 复制链接链接已复制到粘贴板!
nationalparks
应用程序需要信息,如数据库名称、用户名和密码来访问 MongoDB 数据库。但是,由于此信息敏感,因此不应将这些信息直接存储在 pod 中。
您可以使用 secret 存储敏感信息,并与工作负载共享该 secret。
Secret
对象提供了一种机制来保存敏感信息,如密码、OpenShift Container Platform 客户端配置文件和私有源存储库凭证。secret 将敏感内容与 Pod 分离。您可以使用卷插件或作为环境变量传递 secret 来将 secret 挂载到容器中。然后,系统可以使用 secret 为 pod 提供敏感信息。
以下流程创建 nationalparks-mongodb-parameters
secret,并将其挂载到 nationalparks
工作负载。
先决条件
-
您已部署了
nationalparks
后端应用程序。 -
您已部署了
mongodb-nationalparks
数据库应用程序。
流程
运行以下命令,使用所需的数据库访问信息创建 secret:
oc create secret generic nationalparks-mongodb-parameters --from-literal=DATABASE_SERVICE_NAME=mongodb-nationalparks --from-literal=MONGODB_USER=mongodb --from-literal=MONGODB_PASSWORD=mongodb --from-literal=MONGODB_DATABASE=mongodb --from-literal=MONGODB_ADMIN_PASSWORD=mongodb
$ oc create secret generic nationalparks-mongodb-parameters --from-literal=DATABASE_SERVICE_NAME=mongodb-nationalparks --from-literal=MONGODB_USER=mongodb --from-literal=MONGODB_PASSWORD=mongodb --from-literal=MONGODB_DATABASE=mongodb --from-literal=MONGODB_ADMIN_PASSWORD=mongodb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将环境从 secret 导入到
nationalparks
工作负载:oc set env --from=secret/nationalparks-mongodb-parameters deploy/nationalparks
$ oc set env --from=secret/nationalparks-mongodb-parameters deploy/nationalparks
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 等待
nationalparks
部署推出带有此环境信息的新修订版本。运行以下命令,检查nationalparks
部署的状态:oc rollout status deployment nationalparks
$ oc rollout status deployment nationalparks
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
deployment "nationalparks" successfully rolled out
deployment "nationalparks" successfully rolled out
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6.2. 将数据加载到数据库中 复制链接链接已复制到粘贴板!
部署 mongodb-nationalparks
数据库后,您可以将国家 park 位置信息加载到数据库中。
先决条件
-
您已部署了
nationalparks
后端应用程序。 -
您已部署了
mongodb-nationalparks
数据库应用程序。
流程
运行以下命令载入国家公园数据:
oc exec $(oc get pods -l component=nationalparks | tail -n 1 | awk '{print $1;}') -- curl -s http://localhost:8080/ws/data/load
$ oc exec $(oc get pods -l component=nationalparks | tail -n 1 | awk '{print $1;}') -- curl -s http://localhost:8080/ws/data/load
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
"Items inserted in database: 2893"
"Items inserted in database: 2893"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令验证映射数据是否已正确载入:
oc exec $(oc get pods -l component=nationalparks | tail -n 1 | awk '{print $1;}') -- curl -s http://localhost:8080/ws/data/all
$ oc exec $(oc get pods -l component=nationalparks | tail -n 1 | awk '{print $1;}') -- curl -s http://localhost:8080/ws/data/all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例(修剪)
... , {"id": "Great Zimbabwe", "latitude": "-20.2674635", "longitude": "30.9337986", "name": "Great Zimbabwe"}]
... , {"id": "Great Zimbabwe", "latitude": "-20.2674635", "longitude": "30.9337986", "name": "Great Zimbabwe"}]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.7. 在网页浏览器中查看应用程序 复制链接链接已复制到粘贴板!
在部署了必要的应用程序并将数据加载到数据库后,您现在可以通过浏览器查看国家公园应用程序。
您可以通过检索前端应用的路由信息来获取应用的 URL。
先决条件
-
您已部署了
parksmap
前端应用程序。 -
您已部署了
nationalparks
后端应用程序。 -
您已部署了
mongodb-nationalparks
数据库应用程序。 -
您已将数据加载到
mongodb-nationalparks
数据库中。
流程
运行以下命令,获取您的路由信息以检索您的映射应用程序 URL:
oc get route parksmap
$ oc get route parksmap
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD parksmap parksmap-user-getting-started.apps.cluster.example.com parksmap 8080-tcp edge None
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD parksmap parksmap-user-getting-started.apps.cluster.example.com parksmap 8080-tcp edge None
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
从上面的输出中,复制
HOST/PORT
列中的值。 在复制的值前面添加
https://
以获取应用程序 URL。这是必要的,因为路由是一个安全路由。应用程序 URL 示例
https://parksmap-user-getting-started.apps.cluster.example.com
https://parksmap-user-getting-started.apps.cluster.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将此应用程序 URL 粘贴到您的网页浏览器中。您的浏览器应当显示全球的国家公园地图。
图 3.1. 跨世界的国家公园
如果您允许应用程序访问您的位置,则映射将位于您的位置。
第 4 章 其他实践操作 复制链接链接已复制到粘贴板!
红帽为管理员和开发人员提供了许多其他学习资源,以便获得 OpenShift Container Platform 的实践经验。
4.1. 红帽开发人员学习路径 复制链接链接已复制到粘贴板!
Red Hat Developer 程序为开发人员提供了几个学习路径,以便开始使用 OpenShift Container Platform。
下表列出了 OpenShift Container Platform 的几个推荐学习路径:
学习路径 | 描述 |
---|---|
本学习路径涵盖了基本的 Red Hat OpenShift 概念以及如何通过各种方法创建和部署应用程序。 | |
本学习路径涵盖了管理集群访问、数据库操作和资源管理。 | |
本学习路径涵盖了从源代码和镜像部署应用程序,并使用 Node.js 进行开发。 | |
本学习路径涵盖了如何在 OpenShift Container Platform 集群中部署全堆栈 JavaScript 应用程序。 | |
本学习路径涵盖了如何在 OpenShift Container Platform 中为持久性存储创建和使用持久性卷声明(PVC)。 |
有关 OpenShift Container Platform 可用的红帽开发人员学习路径的完整列表,请参阅 OpenShift 和 Kubernetes 学习。
4.2. Red Hat 培训课程 复制链接链接已复制到粘贴板!
Red Hat 培训提供各种在线课程,包括免费和付费课程,以帮助您学习红帽 OpenShift 及相关技术。
下表列出了针对开发人员和管理员的 OpenShift Container Platform 的一些推荐培训课程:
course | 描述 |
---|---|
此课程帮助开发人员在 OpenShift 容器平台中部署、扩展应用程序并进行故障排除。 | |
此课程帮助开发人员使用 Podman 和 OpenShift 容器平台构建、运行和管理容器。 | |
此课程可帮助开发人员在 OpenShift Container Platform 集群中设计、构建和部署容器化软件应用程序。 |
course | 描述 |
---|---|
DO180: Red Hat OpenShift Administration I: Operating a Production Cluster | 此课程帮助集群管理员了解如何管理 OpenShift Container Platform 集群,并与开发人员合作支持应用程序工作负载。 |
此课程帮助集群管理员了解如何配置安全功能、管理 Operator 并执行集群更新。 | |
此课程帮助集群管理员在各种环境中学习如何安装 OpenShift Container Platform 集群。 |
有关可用课程的完整列表,请参阅 Red Hat 培训和认证。您还可以参与 评估,获得针对从何处开始学习的建议。
4.3. Red Hat cheat sheets 复制链接链接已复制到粘贴板!
红帽提供了几个 cheat 表格,它提供常见 OpenShift CLI (oc
)命令的快速参考来使用 OpenShift Container Platform。
下表列出了 OpenShift Container Platform 几个推荐的 cheat sheets:
cheat sheet | 描述 |
---|---|
此备忘单提供了许多 OpenShift CLI ( | |
此备忘单提供了几个基本的 OpenShift CLI ( |
有关可用 cheat 表格的完整列表,请参阅 Red Hat Developer cheat sheets。
Legal Notice
复制链接链接已复制到粘贴板!
Copyright © 2025 Red Hat
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.