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