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=parksmapCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令验证应用程序路由是否已成功创建:
oc get route parksmap
$ oc get route parksmapCopy 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 NoneCopy 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 podsCopy 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 77sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令显示 pod 的详情:
oc describe pod parksmap-5f9579955-6sng8
$ oc describe pod parksmap-5f9579955-6sng8Copy 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-6sng8Copy 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/parksmapCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
deployment.apps/parksmap scaled
deployment.apps/parksmap scaledCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令验证您的部署是否已正确扩展:
oc get pods
$ oc get podsCopy 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 24sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证是否列出了两个
parksmappod。
要将部署缩减为一个 pod 实例,请将 1 传递给 副本 选项:
oc scale --replicas=1 deployment/parksmap
$ oc scale --replicas=1 deployment/parksmap