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'输出示例
--> Found container image 0c2f55f (4 years old) from quay.io for "quay.io/openshiftroadshow/parksmap:latest" * An image stream tag will be created as "parksmap:latest" that will track this image --> Creating resources with label app=national-parks-app,app.kubernetes.io/part-of=national-parks-app,component=parksmap,role=frontend ... imagestream.image.openshift.io "parksmap" created deployment.apps "parksmap" created service "parksmap" created --> Success Application is not exposed. You can expose services to the outside world by executing one or more of the commands below: 'oc expose service/parksmap' Run 'oc status' to view your app.
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 get route parksmap输出示例
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD parksmap parksmap-user-getting-started.apps.cluster.example.com parksmap 8080-tcp edge None
3.4.2. 查看 pod 详情 复制链接链接已复制到粘贴板!
OpenShift Container Platform 使用 Kubernetes 的 pod 概念,它是共同部署在同一主机上的一个或多个容器,也是可被定义、部署和管理的最小计算单元。对容器而言,Pod 大致相当于一个机器实例(物理或虚拟)。
您可以查看集群中的 pod,并确定这些 pod 和整个集群的健康状态。
先决条件
-
您已部署了
parksmap前端应用程序。
流程
运行以下命令,列出当前项目中的所有 pod:
$ oc get pods输出示例
NAME READY STATUS RESTARTS AGE parksmap-5f9579955-6sng8 1/1 Running 0 77s运行以下命令显示 pod 的详情:
$ oc describe pod parksmap-5f9579955-6sng8输出示例
Name: parksmap-5f9579955-6sng8 Namespace: user-getting-started Priority: 0 Service Account: default Node: ci-ln-fr1rt92-72292-4fzf9-worker-a-g9g7c/10.0.128.4 Start Time: Wed, 26 Mar 2025 14:03:19 -0400 Labels: app=national-parks-app app.kubernetes.io/part-of=national-parks-app component=parksmap deployment=parksmap pod-template-hash=848bd4954b role=frontend ...运行以下命令,查看 pod 的日志:
$ oc logs parksmap-5f9579955-6sng8输出示例
... 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)
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输出示例
deployment.apps/parksmap scaled
验证
运行以下命令验证您的部署是否已正确扩展:
$ oc get pods输出示例
NAME READY STATUS RESTARTS AGE parksmap-5f9579955-6sng8 1/1 Running 0 7m39s parksmap-5f9579955-8tgft 1/1 Running 0 24s验证是否列出了两个
parksmappod。
要将部署缩减为一个 pod 实例,请将 1 传递给 --replicas 选项:
$ oc scale --replicas=1 deployment/parksmap