2.4. 使用 Topology 视图查看应用程序组成情况
Web 控制台的 Developer 视角中有一个 Topology 视图,它以可视化方式展示项目中的所有应用程序、它们的构建状态,以及关联的组件和服务。
2.4.1. 先决条件
要在 Topology 视图中查看应用程序并与之交互,请确保:
- 已登录 Web 控制台。
- 处于 Developer 视角。
- 在项目中拥有适当的角色和权限,可在 OpenShift Container Platform 中创建应用程序和其他工作负载。
- 您已使用 Developer 视角在 OpenShift Container Platform 上创建并部署了应用程序。。
2.4.2. 查看应用程序拓扑
您可以使用 Developer 视角中的左侧导航面板进入 Topology 视图。创建应用程序后,您会自动定向到 Topology 视图,从中可查看应用程序 pod 状态,快速访问公共 URL 上的应用程序,访问源代码以进行修改,以及查看上一次构建的状态。您可以缩放视图来查看特定应用程序的更多详情。
无服务器应用程序显示有 Knative 符号( )。
无服务器应用程序需要一些时间才能加载并显示在 Topology 视图中。创建无服务器应用程序时,首先会创建一个服务资源,然后创建一个修订。之后,进行部署并将其显示在 Topology 视图中。如果它是唯一的工作负载,可能会重定向到 Add 页面。部署了修订后,无服务器应用程序就会显示在 Topology 视图中。
Pod 的状态或阶段由不同的颜色和工具提示来表示: Running ( ), Not Ready ( ), Warning( ), Failed( ), Pending( ), Succeeded( ), Terminating( ), or Unknown( ).如需有关 Pod 状态的更多信息,请参阅 Kubernetes 文档。
创建应用程序并部署镜像后,其状态会显示为 Pending。构建应用程序后,它会显示为 Running。
图 2.3. 应用程序拓扑
应用程序资源名称附有代表不同类型资源对象的指示符,如下所示:
-
DC:
DeploymentConfig
-
D:
Deployment
-
SS:
StatefulSet
-
DS:
DaemonSet
2.4.3. 与应用程序和组件交互
Web 控制台的 Developer 视角中的 Topology 视图提供了如下可与应用程序和组件交互的选项:
- 点 Open URL( )查看通过公共 URL 上路由公开的应用程序。
点击 Edit Source code 可访问您的源代码并进行修改。
注意只有使用 From Git、From Catalog 和 From Dockerfile 选项创建了应用程序时,此功能才可用。
- 光标悬停在 Pod 左下方图标上,可查看最新构建的名称及其状态。应用程序构建的状态表示为 New ( ), Pending ( ), Running ( ), Completed ( )、Failed ( )和 Canceled ( )。
- 使用屏幕右上角列出的 Shortcuts 菜单来浏览 Topology 视图中的组件。
- 使用 List View 图标查看所有应用程序的列表,并使用 Topology View 图标切回到 Topology 视图。
2.4.4. 扩展应用程序 Pod 以及检查构建和路由
Topology 视图在 Overview 面板中提供所部署组件的详情。您可以使用 Overview 和 Resources 选项卡来缩放应用程序 pod,以及检查构建状态、服务和路由等,如下所示:
点击组件节点,以查看右侧的 Overview 面板。使用 Overview 选项卡可以:
- 使用向上和向下箭头缩放 pod,手动增加或减少应用程序的实例数。对于无服务器应用程序,pod 数在空闲时会自动缩减为零,而且能根据频道流量扩展。
- 检查应用程序的 Labels、Annotations 和 Status。
点击 Resources 选项卡可以:
- 查看所有 pod 列表,查看其状态,访问日志,还能点击 pod 来查看 pod 详情。
- 查看构建及其状态,访问日志,并在需要时启动新的构建。
- 查看组件所使用的服务和路由。
对于无服务器应用程序,Resources 选项卡提供用于该组件的版本、路由和配置的有关信息。
2.4.5. 对应用程序中的多个组件进行分组
您可以使用 Add 页面在项目中添加多个组件或服务,还可使用 Topology 页面对应用程序组中的应用程序和资源进行分组。以下流程将 MongoDB 数据库服务添加到具有 Node.js 组件的现有应用程序中。
先决条件
- 确保您已使用 Developer 视角在 OpenShift Container Platform 上创建并部署了 Node.js 应用程序。
流程
在您的项目中创建并部署 MongoDB 服务,如下所示:
- 在 Developer 视角中,导航到 Add 视图,再选择 Database 选项来查看 Developer Catalog,其包含的多个选项可作为组件或服务添加到应用程序中。
- 点击 MongoDB 选项以查看该服务的详情。
- 点击 Instantiate Template 查看使用 MongoDB 服务的详情自动填充的模板,然后点击 Create 来创建服务。
- 在左侧导航面板中,点击 Topology 以查看项目中部署的 MongoDB 服务。
- 要将 MongoDB 服务添加到现有应用程序组中,请选择 mongodb pod 并将其拖到应用程序中;MongoDB 服务会添加到现有应用程序组中。
拖动组件并将其添加到应用程序组中时,会自动将所需的标签添加到组件。点击 MongoDB 服务节点,可看到标签
app.kubernetes.io/part-of=myapp
已添加到 Overview 面板中的 Labels 部分。图 2.4. 应用程序分组
另外,您还可以在应用程序中添加组件,如下所示:
- 要将 MongoDB 服务添加到应用程序中,请点击 mongodb pod 以查看右侧的 Overview 面板。
- 点击面板右上角的 Actions 下拉菜单,再选择 Edit Application Grouping。
- 在 Edit Application Grouping 对话框中,点击 Select an Application 下拉列表,再选择适当的应用程序组。
- 点击 Save 以查看添加到应用程序组中的 MongoDB 服务。
要从应用程序组中删除组件,您可以选择组件并使用 Shift+ 拖动操作将组件从应用程序组中拖出。
2.4.6. 在应用程序内和应用程序间连接组件
除了对一个应用程序中的多个组件进行分组外,还可以使用 Topology 视图来相互连接组件。您可以使用绑定连接器或视觉连接器来连接组件。
只有当目标节点是 Operator 支持的服务时,才可以在组件之间建立绑定连接。为了表示这种情况,当您将箭头拖到这样的目标节点上时,会出现 Create a binding connector 工具提示。当应用程序使用绑定连接器连接到服务时,会创建服务绑定请求。然后,Service Binding Operator 控制器使用一个中间的 secret 将所需的绑定数据注入应用程序部署中作为环境变量。请求成功后,会重新部署应用程序以在连接的组件间建立交互。
视觉连接器只在组件之间建立视觉连接,描述连接意图。没有建立组件之间的交互。如果目标节点不是一个 Operator 支持的服务,当您将箭头拖到目标节点上时,将会显示 Create a visual connector 工具提示。
2.4.6.1. 在组件之间创建视觉连接
您可以使用可视连接器来描述连接应用程序组件的意图。
此流程介绍了在 MongoDB 服务与 Node.js 应用程序间创建可视连接的示例。
先决条件
- 确保您已使用 Developer 视角创建并部署了 Node.js 应用程序。
- 确保已使用 Developer 视角创建并部署了 MongoDB 服务。
流程
光标悬停到 MongoDB 服务上,节点上出现悬浮的箭头。
图 2.5. 连接器
- 点击箭头并将它拖向 Node.js 组件,使它与 MongoDB 服务连接。
点击 MongoDB 服务以查看 Overview 面板。在 Annotations 部分,点击编辑图标,即可看到 Key =
app.openshift.io/connects-to
和 Value =nodejs-ex
注解已添加到该服务。同样,您可以创建其他应用程序和组件,并在它们之间建立连接。
图 2.6. 连接多个应用程序
2.4.6.2. 在组件之间创建绑定连接
服务绑定只是一个技术预览功能。红帽产品服务等级协议 (SLA) 不支持技术预览功能,且可能无法完成。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的详情,请参阅 https://access.redhat.com/support/offerings/techpreview/。
目前,只有几个特定的 Operator(如 etcd 和 PostgresSQL Database)的 Operator 服务实例可以绑定。
您可以与 Operator 支持的组件建立绑定连接。
此流程介绍了在 PostgreSQL 数据库服务和 Node.js 应用程序间创建绑定连接的示例。要创建与 PostgreSQL Database Operator 支持的服务的绑定连接,您必须首先使用后备 Operator 源将红帽提供的 PostgreSQL Database Operator 添加到 OperatorHub,然后安装 Operator。
前提条件
- 确保您已使用 Developer 视角创建并部署了 Node.js 应用程序。
- 确保您已从 OperatorHub 安装了 Service Binding Operator。
流程
创建一个后端的 Operator 源,将红帽提供的 PostgresSQL Operator 添加到 OperatorHub。支持的 Operator 源会公开 secret、配置映射、状态和 spec 属性中的绑定信息。
- 在 Add 视图中,点击 YAML 选项查看 Import YAML 屏幕。
添加以下 YAML 文件以应用 Operator 源:
apiVersion: operators.coreos.com/v1 kind: OperatorSource metadata: name: db-operators namespace: openshift-marketplace spec: type: appregistry endpoint: https://quay.io/cnr registryNamespace: pmacik
- 点 Create 在集群中创建 Operator 源。
安装红帽提供的 PostgreSQL Database Operator:
-
在控制台的 Administrator 视角中,进入 Operators
OperatorHub。 - 在 Database 类别中,选择 PostgreSQL Database Operator 并安装它。
-
在控制台的 Administrator 视角中,进入 Operators
为应用程序创建数据库 (DB) 实例:
- 切换到 Developer 视角,并确保您处于适当的项目中。
- 在 Add 视图中,点击 YAML 选项查看 Import YAML 屏幕。
在编辑器中添加服务实例 YAML,并点击 Create 部署该服务。服务 YAML 将如以下示例所示:
apiVersion: postgresql.baiju.dev/v1alpha1 kind: Database metadata: name: db-demo namespace: test-project spec: image: docker.io/postgres imageName: postgres dbName: db-demo
DB 实例现在部署在 Topology 视图中。
- 在 Topology 视图中,将鼠标悬停在 Node.js 组件上可看到节点上悬浮的箭头。
点击箭头并拖向 db-demo-postgresql 服务,以便与 Node.js 应用程序进行绑定连接。服务绑定请求被创建,Service Binding Operator 控制器会将 DB 连接信息作为环境变量注入应用程序部署中。请求成功后,会重新部署应用程序并建立连接。
图 2.7. 绑定连接器
2.4.7. 用于 Topology 视图的标签和注解
Topology 使用下列标签和注解:
- 节点中显示的图标
-
节点中的图标是通过使用
app.openshift.io/runtime
标签(随后是app.kubernetes.io/name
标签)查找匹配图标来定义的。这种匹配是通过预定义的图标集合来完成的。 - 到源代码编辑器或源的链接
-
app.openshift.io/vcs-uri
注解用于创建源代码编辑器的链接。 - 节点连接器
-
app.openshift.io/connects-to
注解用于连接节点。 - 应用程序分组
-
app.kubernetes.io/part-of=<appname>
标签用于对应用程序、服务和组件进行分组。
如需了解 OpenShift Container Platform 应用程序必须使用的标签和注解,请参阅 OpenShift 应用程序的标签和注解指南。