2.4. 使用 Topology 视图查看应用程序组成情况

Web 控制台的 Developer 视角中有一个 Topology 视图,它以可视化方式展示项目中的所有应用程序、它们的构建状态,以及关联的组件和服务。

2.4.1. 先决条件

要在 Topology 视图中查看应用程序并与之交互,请确保:

2.4.2. 查看应用程序拓扑

您可以使用 Developer 视角中的左侧导航面板进入 Topology 视图。创建应用程序后,您会自动定向到 Topology 视图,从中可查看应用程序 Pod 状态,快速访问公共 URL 上的应用程序,访问源代码以进行修改,以及查看上一次构建的状态。您可以缩放视图来查看特定应用程序的更多详情。

无服务器应用程序显示有 Knative 符号 ( odc serverless app ) 表示。

注意

无服务器应用程序需要一些时间才能加载并显示在 Topology 视图中。创建无服务器应用程序时,首先会创建一个服务资源,然后创建一个修订。之后,进行部署并将其显示在 Topology 视图中。如果它是唯一的工作负载,可能会重定向到 Add 页面。部署了修订后,无服务器应用程序就会显示在 Topology 视图中。

Pod 的状态或阶段由不同的颜色和工具提示来表示:Running ( odc pod 已运行 )、Not Ready ( odc pod 未就绪 )、Warning( odc pod 警告 )、Failed( odc pod 失败 )、Pending( odc pod 待处理 )、Succeeded( odc pod 已成功 )、Terminating( odc pod 终止中 ) 或 Unknown( odc pod 未知 ) 表示。如需有关 Pod 状态的更多信息,请参阅 Kubernetes 文档

创建应用程序并部署镜像后,其状态会显示为 Pending。构建应用程序后,它会显示为 Running

应用程序拓扑

应用程序资源名称附有代表不同类型资源对象的指示符,如下所示:

  • DC:DeploymentConfigs
  • D:Deployment
  • SS:StatefulSet
  • DS:Daemonset

2.4.3. 与应用程序和组件交互

Web 控制台的 Developer 视角中的 Topology 视图提供了如下可与应用程序和组件交互的选项:

  • 点击 Open URL ( odc 打开 url ),可查看通过公共 URL 上路由公开的应用程序。
  • 点击 Edit Source code 可访问您的源代码并进行修改。

    注意

    只有使用 From GitFrom CatalogFrom Dockerfile 选项创建了应用程序时,此功能才可用。

    如果集群中安装了 Eclipse Che Operator,则会创建 Che 工作区 ( odc che 工作区 ),您也会定向到此工作区来编辑源代码。如果没有安装,您会被定向到 Git 存储库 ( odc git 存储库 ),即源代码的托管位置。

  • 光标悬停在 Pod 左下方图标上,可查看最新构建的名称及其状态。应用程序构建的状态表示为:New ( odc 构建新增 )、Pending ( odc 构建待处理 )、Running ( odc 构建运行中 )、Completed ( odc 构建已完成 )、Failed ( odc 构建已失败 ) 和 Canceled ( odc 构建已取消 ) 表示。
  • 使用屏幕右上角列出的 Shortcuts 菜单来浏览 Topology 视图中的组件。
  • 使用 List View 图标查看所有应用程序的列表,并使用 Topology View 图标切回到 Topology 视图。

2.4.4. 扩展应用程序 Pod 以及检查构建和路由

Topology 视图在 Overview 面板中提供所部署组件的详情。您可以使用 OverviewResources 选项卡来缩放应用程序 Pod,以及检查构建状态、服务和路由等,如下所示:

  • 点击组件节点,以查看右侧的 Overview 面板。使用 Overview 选项卡可以:

    • 使用向上和向下箭头缩放 Pod,手动增加或减少应用程序的实例数。对于无服务器应用程序,Pod 数在空闲时会自动缩减为零,而且能根据频道流量扩展。
    • 检查应用程序的 LabelsAnnotationsStatus
  • 点击 Resources 选项卡可以:

    • 查看所有 Pod 列表,查看其状态,访问日志,还能点击 Pod 来查看 Pod 详情。
    • 查看构建及其状态,访问日志,并在需要时启动新的构建。
    • 查看组件所使用的服务和路由。

    对于无服务器应用程序,Resources 选项卡提供用于该组件的版本、路由和配置的有关信息。

2.4.5. 对应用程序中的多个组件进行分组

您可以使用 Add 页面在项目中添加多个组件或服务,还可使用 Topology 页面对应用程序组中的应用程序和资源进行分组。以下流程将 MongoDB 数据库服务添加到具有 Node.js 组件的现有应用程序中。

先决条件

  • 确保您已使用 Developer 视角在 OpenShift Container Platform 上创建并部署了 Node.js 应用程序。

流程

  1. 在您的项目中创建并部署 MongoDB 服务,如下所示:

    1. Developer 视角中,导航到 Add 视图,再选择 Database 选项来查看 Developer Catalog,其包含的多个选项可作为组件或服务添加到应用程序中。
    2. 点击 MongoDB 选项以查看该服务的详情。
    3. 点击 Instantiate Template 查看使用 MongoDB 服务的详情自动填充的模板,然后点击 Create 来创建服务。
  2. 在左侧导航面板中,点击 Topology 以查看项目中部署的 MongoDB 服务。
  3. 要将 MongoDB 服务添加到现有应用程序组中,请选择 mongodb Pod 并将其拖到应用程序中;MongoDB 服务会添加到现有应用程序组中。
  4. 拖动组件并将其添加到应用程序组中时,会自动将所需的标签添加到组件。点击 MongoDB 服务节点,可看到标签 app.kubernetes.io/part-of=myapp 已添加到 Overview 面板中的 Labels 部分。

    应用程序分组

另外,您还可以在应用程序中添加组件,如下所示:

  1. 要将 MongoDB 服务添加到应用程序中,请点击 mongodb Pod 以查看右侧的 Overview 面板。
  2. 点击面板右上角的 Actions 下拉菜单,再选择 Edit Application Grouping
  3. Edit Application Grouping 对话框中,点击 Select an Application 下拉列表,再选择适当的应用程序组。
  4. 点击 Save 以查看添加到应用程序组中的 MongoDB 服务。

要从应用程序组中删除组件,您可以选择组件并使用 Shift+ 拖动操作将组件从应用程序组中拖出。

2.4.6. 在应用程序内和应用程序间连接组件

除了对一个应用程序中的多个组件进行分组外,还可以使用 Topology 视图来相互连接组件。您可以使用绑定连接器或视觉连接器来连接组件。

只有当目标节点是 Operator 支持的服务时,才可以在组件之间建立绑定连接。为了表示这种情况,当您将箭头拖到这样的目标节点上时,会出现 Create a binding connector 工具提示。当应用程序使用绑定连接器连接到服务时,会创建一个 ServiceBindingRequest。然后,Service Binding Operator 控制器会使用一个中间的 Secret 将所需的绑定数据注入应用程序 Deployment 中作为环境变量。请求成功后,会重新部署应用程序以在连接的组件间建立交互。

视觉连接器只在组件之间建立视觉连接,描述连接意图。没有建立组件之间的交互。如果目标节点不是一个 Operator 支持的服务,当您将箭头拖到目标节点上时,将会显示 Create a visual connector 工具提示。

2.4.6.1. 在组件之间创建视觉连接

您可以使用可视连接器来描述连接应用程序组件的意图。

此流程介绍了在 MongoDB 服务与 Node.js 应用程序间创建可视连接的示例。

先决条件

  • 确保您已使用 Developer 视角创建并部署了 Node.js 应用程序。
  • 确保已使用 Developer 视角创建并部署了 MongoDB 服务。

流程

  1. 光标悬停到 MongoDB 服务上,节点上出现悬浮的箭头。

    连接器
  2. 点击箭头并将它拖向 Node.js 组件,使它与 MongoDB 服务连接。
  3. 点击 MongoDB 服务以查看 Overview 面板。在 Annotations 部分,点击编辑图标,即可看到 Key = app.openshift.io/connects-toValue = nodejs-ex 注解已添加到该服务。

    注解

    同样,您可以创建其他应用程序和组件,并在它们之间建立连接。

    连接多个应用程序

2.4.6.2. 在组件之间创建绑定连接

重要

服务绑定只是一个技术预览功能。红帽产品服务等级协议 (SLA) 不支持技术预览功能,且可能无法完成。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的详情,请参阅 https://access.redhat.com/support/offerings/techpreview/

注意

目前,只有几个特定的 Operator(如 etcdPostgresSQL Database)的 Operator 服务实例可以绑定。

您可以与 Operator 支持的组件建立绑定连接。

此流程介绍了在 PostgreSQL 数据库服务和 Node.js 应用程序间创建绑定连接的示例。要创建与 PostgreSQL Database Operator 支持的服务的绑定连接,需要首先使用后端的 OperatorSource 将红帽提供的 PostgreSQL Database Operator 添加到 OperatorHub,然后安装 Operator。

先决条件

  • 确保您已使用 Developer 视角创建并部署了 Node.js 应用程序。
  • 确保已从 OperatorHub 安装 Service Binding Operator

流程

  1. 创建一个后端的 OperatorSource 将红帽提供的 PostgresSQL Operator 添加到 OperatorHub。提供支持的 OperatorSource 会在 secret、ConfigMap、状态和 spec 属性中公开绑定信息。

    1. Add 视图中,点击 YAML 选项查看 Import YAML 屏幕。
    2. 添加以下 YAML 文件以应用 OperatorSource

      apiVersion: operators.coreos.com/v1
      kind: OperatorSource
      metadata:
       name: db-operators
       namespace: openshift-marketplace
      spec:
       type: appregistry
       endpoint: https://quay.io/cnr
       registryNamespace: pmacik
    3. 点击 Create 在集群中创建 OperatorSource
  2. 安装红帽提供的 PostgreSQL Database Operator:

    1. 在控制台的 Administrator 视角中,进入 Operators → OperatorHub
    2. Database 类别中,选择 PostgreSQL Database Operator 并安装它。
  3. 为应用程序创建数据库 (DB) 实例:

    1. 切换到 Developer 视角,并确保您处于适当的项目中。
    2. Add 视图中,点击 YAML 选项查看 Import YAML 屏幕。
    3. 在编辑器中添加服务实例 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 视图中。

  4. Topology 视图中,将鼠标悬停在 Node.js 组件上可看到节点上悬浮的箭头。
  5. 点击箭头并拖向 db-demo-postgresql 服务,以便与 Node.js 应用程序进行绑定连接。一个 ServiceBindingRequest 被创建, Service Binding Operator 控制器会将 DB 连接信息注入应用程序 Deployment 中作为环境变量。请求成功后,会重新部署应用程序并建立连接。

    绑定连接器

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 应用程序的标签和注解指南


为了尽快向用户提供最新的信息,本文档可能会包括由机器自动从英文原文翻译的内容。如需更多信息,请参阅此说明。