IBM Cloud Docs
使用 Red Hat OpenShift on IBM Cloud

使用 Red Hat OpenShift on IBM Cloud

本教程可能会发生成本。 使用“成本估算器”根据您的预计使用量生成成本估算。

本教程演示了如何将应用程序部署到 Red Hat OpenShift on IBM Cloud。Red Hat OpenShift on IBM Cloud 为开发者提供了部署软件应用程序的绝佳体验,为系统管理员提供了扩展和观察生产中应用程序的绝佳体验。

目标

  • 部署一个 Red Hat OpenShift on IBM Cloud 集群
  • 部署微服务
  • 扩展微服务
  • 使用操作程序来部署 IBM Cloudant 并绑定到微服务
  • 使用 IBM Cloud Logs
  • 使用 IBM Cloud Monitoring 观察集群

架构*" caption-side="bottom"}{: caption="*

  1. 开发人员使用URL 初始化 Red Hat OpenShift,生成 Builder 、DeploymentConfigService
  2. 构建器 克隆源,创建映像,将其推送到 DeploymentConfig 供应的 Red Hat OpenShift 注册表。
  3. 用户访问前端应用程序。
  4. IBM Cloudant 数据库实例是通过 IBM Cloud Operator Service 供应的。
  5. 后端应用程序通过 IBM Cloud 操作程序绑定连接到数据库。
  6. IBM Cloud Logs 已配置并部署了代理。
  7. Monitoring 已供应并部署代理程序。
  8. 管理员通过 IBM Cloud Logs 和 Monitoring 监控应用程序。

脚本 将执行下面的一些步骤。 在 README.md中进行了描述。 如果迂到问题,并且想要重新开始,只需执行 destroy.sh 脚本,然后按顺序完成与要恢复的步骤相对应的脚本。

准备工作

本教程需要:

  • IBM Cloud CLI,
    • IBM Cloud Kubernetes Service 插件 (kubernetes-service),
  • oc,用于与 OpenShift进行交互。

您将在 教程入门 指南中找到有关为您的操作环境下载和安装这些工具的指示信息。

要避免安装这些工具,可以从 IBM Cloud 控制台使用 Cloud Shell。 使用 oc version 以确保 Red Hat OpenShift on IBM Cloud CLI 的版本与集群版本 (4.12.x) 匹配。如果它们不匹配,请遵循 这些指示信息 来安装匹配的版本。

创建 Red Hat OpenShift on IBM Cloud 集群

通过 Red Hat OpenShift on IBM Cloud,您可以快速安全地在集群中容器化和部署企业工作负载。Red Hat OpenShift 集群基于 Kubernetes 容器编排构建,为开发生命周期操作提供一致性和灵活性。

在此部分中,您将在具有两个 (2) 工作程序节点的一个 (1) 专区中供应 Red Hat OpenShift on IBM Cloud 集群:

  1. IBM Cloud® 目录 创建 Red Hat OpenShift on IBM Cloud 集群。
  2. 编排服务 设置为 Red Hat OpenShift on IBM Cloud 的 4.12.x 版本
  3. 选择 OCP 权利。
  4. 基础架构 下,选择经典或 VPC
    • 对于 VPC 基础架构上的 Red Hat OpenShift,在创建 Red Hat OpenShift on IBM Cloud 群集之前,您需要有一个 VPC 和一个子网。 创建或检查所需的 VPC,请记住以下内容 (请参阅 创建标准 VPC 集群 下提供的指示信息):
      • 一个可用于本教程的子网,请记下子网的区域和名称
      • 公共网关已连接到子网
    • 选择现有 Cloud Object Storage 服务或创建一个服务 (如果需要)
  5. 地点
    • 对于 VPC 基础结构上的 Red Hat OpenShift
      • 选择资源组
      • 取消选中不适用的区域
      • 在期望的区域中验证期望的子网名称,如果不存在,请单击编辑画笔以选择期望的子网名称
    • 对于经典基础架构上的 Red Hat OpenShift,请遵循 创建标准经典集群 指示信息。
      • 选择资源组
      • 选择 地理位置
      • 选择 单个区域 作为 可用性
      • 选择数据中心
  6. 工人游泳池下、
    • 选择 4 vCPUs 16GB 内存 作为类型模板
    • 针对本教程选择 2 每个数据中心的工作程序节点 (仅限经典: 保留 加密本地磁盘)
  7. 集成下,启用并配置 日志记录监视
  8. 资源详细信息下,通过将 <your-initials> 替换为您自己的缩写,将 集群名称 设置为 -myopenshiftcluster
  9. 单击 创建 以供应 Red Hat OpenShift on IBM Cloud 集群。

记下上面选择的资源组。 此同一资源组将用于此实验室中的所有资源。

初始化 Cloud Shell

Red Hat OpenShift Container Platform CLI 提供用于管理应用程序的命令以及与系统各组件交互的低级工具。 该 CLI 可通过 oc 命令使用。

为避免安装命令行工具,建议的方法是使用 IBM Cloud Shell。

IBM Cloud Shell 是可通过浏览器访问的基于云的 shell 工作空间。 它预先配置了完整的 IBM Cloud CLI 以及可用于管理应用程序,资源和基础结构的许多插件和工具。

在此步骤中,您将使用 IBM Cloud shell 并配置 oc 以指向分配给您的集群。

  1. 集群就绪后,单击右上角的按钮 (您的帐户旁边) 以启动 云 shell确保未关闭此窗口/选项卡

  2. 检查 OpenShift CLI 的版本:

    oc version
    

    版本必须至少为 4.12.x,否则请遵循 这些指示信息 来安装最新版本。

  3. 列出所有集群时,将显示验证集群:

    ibmcloud oc clusters
    
  4. Initialize the oc command environment by replacing the placeholder :

    ibmcloud oc cluster config -c <your-cluster-name> --admin
    
  5. 验证 oc 命令是否正常工作:

    oc get projects
    

部署应用程序

在此部分中,您将部署名为 patient-health-frontend 的 Node.js Express 应用程序,这是患者运行状况记录系统的用户界面,用于演示 Red Hat OpenShift 功能部件。 您可以在以下位置找到样本应用程序 GitHub 存储库: https://github.com/IBM-Cloud/patient-health-frontend

创建项目

项目是由 DevOps 团队管理的资源集合。 管理员将创建项目,开发者可以创建可构建和部署的应用程序。

  1. 通过单击所选 集群中的 OpenShift Web 控制台 按钮,浏览至 Red Hat OpenShift Web 控制台。
  2. 在左侧导航窗格的“管理员”透视图下,选择 主页 > 项目 视图以显示所有项目。
  3. 通过单击 创建项目来创建新项目。 在弹出的 名称 项目 example-health 中,将 显示名称描述 留空,然后单击 创建
  4. 此时将显示新项目的“项目详细信息”页面。 请注意,您的上下文是 管理员 > 主页 > 左侧的 项目 以及顶部的 项目 > 项目详细信息 > 示例-运行状况

构建和部署应用程序

  1. 管理员 切换到 开发者 透视图。 您的上下文应该是左侧的 Developer > + Add 和顶部的 Project: example-health
    项目视图
    项目视图
  2. 让我们通过选择 从 Git导入来构建和部署应用程序。
  3. 在 URL中输入存储库 https://github.com/IBM-Cloud/patient-health-frontend.git
    • 请注意绿色检查 Builder image detected 和 Node.js 16 (UBI 8)。
    • 请注意,构建器映像会自动检测到 Node.js语言。如果未检测到,请从提供的列表中选择 Node.js
    • 构建器映像版本 保留为缺省值。
    • 应用程序名称 删除所有字符并将其留空 (这将缺省为 名称)
    • 名称: patient-health-fron趋向。
    • 单击 资源类型 链接,然后选择 DeploymentConfig
    • 保留其他选择的缺省值。
  4. 单击窗口底部的 创建 以构建和部署应用程序。

查看应用程序

  1. 您应该会看到刚刚部署的应用程序。 请注意,您位于“开发者”透视图的 example-health 项目的“拓扑”视图中。 将显示项目中的所有应用程序。

  2. 选择 节点 患者-健康-前端 以显示 DeploymentConfig 的详细信息视图。 请注意 patient-health-fron趋向旁边的 DC。 "pod",“构建”,“服务”和“路由”可见。

    应用程序详细信息
    应用程序详细信息

    • Pod: Node.js 应用程序容器
    • 构建: 自动生成的构建,用于从 Node.js 源代码创建 Docker 映像,将其部署到 Red Hat OpenShift 容器注册表,并启动部署配置
    • 服务: 通知 Red Hat OpenShift 如何通过将 Pod 分组为服务并定义要侦听的端口来访问 Pod
    • 路由: 使用 IBM Cloud 网络提供的 LoadBalancer 向外部世界公开服务
  3. 单击已完成的构建旁边的 查看日志。 这将显示 Red Hat OpenShift 为安装 Node.js 应用程序的依赖项以及构建/推送 Docker 映像所执行的过程。 最后一个条目应该如下所示:

    Successfully pushed image-registry.openshift-image-registry.svc:5000/example-health/patient-health-frontend@sha256:f9385e010144f36353a74d16b6af10a028c12d005ab4fc0b1437137f6bd9e20a
    Push successful
    
  4. 单击返回到 拓扑,然后再次选择应用程序。

  5. 点击 “路线” 下的 URL,访问您的申请。 输入用户名和密码的任何字符串,例如 test:test,因为应用程序正在以演示方式运行。

Node.js 应用程序已部署到 Red Hat OpenShift Container Platform。 要重新映射:

  • “示例运行状况”Node.js 应用程序已直接从 GitHub 部署到集群中。
  • 已在 Red Hat OpenShift on IBM Cloud 控制台中检查应用程序。
  • 已创建 构建配置-可以通过单击应用程序详细信息的“构建”部分中的 启动构建 来构建和部署新落实。

日志记录和监视

在本部分中,您将探索 Red Hat OpenShift on IBM Cloud中提供的现成日志记录和监视功能。

在应用程序上模拟负载

创建脚本以模拟装入。

  1. 确保您已连接到在其中部署应用程序的项目。
    oc project example-health
    
  2. 检索用于访问应用程序的公共路径:
    oc get routes
    
    输出类似于以下内容,请记下主机的值:
    NAME         HOST/PORT                                                                                                 PATH      SERVICES     PORT       TERMINATION   WILDCARD
    patient-health-frontend   patient-health-frontend-example-health.roks07-872b77d77f69503584da5a379a38af9c-0000.eu-de.containers.appdomain.cloud             patient-health-frontend   8080-tcp                 None
    
  3. 使用主机定义变量:
    HOST=$(oc get routes -o json | jq -r '.items[0].spec.host')
    
  4. 验证应用程序的访问权限。 它输出患者信息:
    curl -s -L http://$HOST/info
    
    输出应该类似于:
    $ curl -s -L http://$HOST/info
    {"personal":{"name":"Ralph DAlmeida","age":38,"gender":"male","street":"34 Main Street","city":"Toronto","zipcode":"M5H 1T1"},"medications":["Metoprolol","ACE inhibitors","Vitamin D"],"appointments":["2018-01-15 1:00 - Dentist","2018-02-14 4:00 - Internal Medicine","2018-09-30 8:00 - Pediatry"]}
    
  5. 运行以下脚本,该脚本将无休止地向应用程序发送请求并生成流量:
    while sleep 0.2; do curl --max-time 2 -s -L http://$HOST/info >/dev/null; echo -n "."
    done
    
    要停止脚本,请在键盘上单击 CTRL + c

Red Hat OpenShift on IBM Cloud 日志记录

由于只有一个 pod,因此将直接查看应用程序日志。

  1. 确保您位于“开发者”透视图的 拓扑 视图中。

  2. 通过选择应用程序来浏览到 Pod。

  3. 单击 Pod 下 Pod 名称旁边的 查看日志 以查看来自正在运行的应用程序的流式日志。 如果您仍在生成流量,那么应该会看到每个请求的日志消息。

    pod 日志
    pod 日志

Red Hat OpenShift on IBM Cloud 终端

Kubernetes 的一个重要功能是能够使用 SSH 终端快速调试应用程序 pod。 这对于开发很有好处,但在生产环境中一般不建议这样做。Red Hat OpenShift 通过允许您直接在仪表板中启动终端,使其更加容易。

  1. 日志 选项卡切换到 终端 选项卡。
  2. 运行以下 shell 命令:
要运行的 Shell 命令示例
命令 描述
ls 列出项目文件。
ps aux 列出正在运行的进程。
cat /etc/redhat-release 显示底层操作系统。
curl localhost:8080/info 来自节点 app.js 进程的输出

Red Hat OpenShift on IBM Cloud 监视

在部署新应用程序,进行配置更改或简单地检查集群的状态时,项目作用域仪表板会向开发者提供清晰的洞察。

  1. 通过单击左侧菜单上的 观察 来访问“开发者”透视图中的仪表板。
  2. 您还可以通过单击 事件 选项卡深入了解。 事件 对于确定事件的时间线和查找潜在的错误消息很有用。 当跟踪新推出的状态,管理现有资产,甚至是简单的内容 (例如公开路径) 时,“事件”视图对于确定活动时间线至关重要。 当考虑多个操作程序可能针对单个集群工作时,这将变得更加有用。

Red Hat OpenShift 中的几乎所有操作都会导致在此视图中触发事件。 随着实时更新,这是跟踪状态更改的好方法。

度量和仪表板

在本部分中,将探索 Red Hat OpenShift中包含的监视和度量仪表板。

仪表板

Red Hat OpenShift 随附用于监视项目的预定义仪表板。

  1. 首先从“开发者”透视图切换到“管理员”透视图:
  2. 浏览至左侧栏中的 观察> 仪表板
  3. 从下拉列表和名称空间中选择 Kubernetes /计算资源/名称空间 (Pod)example-health
  4. 请注意应用程序的 CPU 和内存使用情况。 在生产环境中,这有助于确定应用程序使用的平均 CPU 或内存量,尤其是因为它会在一天内波动。 自动缩放是处理波动的一种方法,稍后将进行演示。

度量值

Red Hat OpenShift 提供了一个 Web 界面,用于运行查询和检查在图中可视化的度量值。 此功能提供集群状态的全面概述,并使您能够对问题进行故障诊断。

  1. 浏览至 观察> 度量

  2. 输入以下表达式,然后单击 运行查询。 您应该会看到与查询关联的值和图形。

    sum(container_cpu_usage_seconds_total{container="patient-health-frontend"})
    

    度量图形
    度量图形

缩放应用程序

在此部分中,可以使用先前部分中观察到的度量值来缩放 UI 应用程序以响应装入。

启用资源限制

必须先建立自动缩放最大 CPU 和内存资源限制。

先前的仪表板显示,负载在 ".002" 到 ".02" 个核心之间的任何位置使用。 这将转换为 2-20 "millicores"。 为了安全起见,让我们将更高端的产品撞到 30 毫升。 此外,数据显示应用程序使用了大约 25-65 MB 的 RAM。 以下步骤将在 deploymentConfig 中设置资源限制

  1. 确保用于生成流量的脚本正在运行。

  2. 切换到管理员视角。

  3. 导航至工作量 > DeploymentConfigs

  4. 选择示例健康项目。

  5. patient-health-frontend操作 菜单 (三个垂直点) 中,选择 编辑 DeploymentConfig

    部署
    部署

  6. YAML 视图下,找到 spec> template> spec> containers 部分,将以下资源限制添加到空资源中。 更换 resources {},并确保间距正确 -- YAML 使用严格缩进。

              resources:
                limits:
                  cpu: 30m
                  memory: 100Mi
                requests:
                  cpu: 3m
                  memory: 40Mi
    

    以下是您进行更改后的片段:

           ports:
             - containerPort: 8080
               protocol: TCP
           resources:
             limits:
               cpu: 30m
               memory: 100Mi
             requests:
               cpu: 3m
               memory: 40Mi
           terminationMessagePath: /dev/termination-log
    
  7. 保存以应用更改。

  8. 通过浏览至 事件 选项卡来验证复制控制器是否已更改:

    资源限制
    资源限制

启用自动缩放器

现在已配置资源限制,可以启用 pod 自动缩放器。

缺省情况下,自动缩放器允许您根据 CPU 或内存进行缩放。 Pod 在您指定的最小和最大 pod 数之间均衡。 使用自动缩放器时,将自动创建或删除 pod,以确保 pod 的平均 CPU 使用率低于定义的 CPU 请求目标。 通常,您可能希望在接近 pod 的 CPU 使用率的 50-90% 时开始向上扩展。 在本例中,1% 可以与所提供的负载一起使用。

  1. 导航至 Administrator 透视图 Workloads > HorizontalPodAutoscalers,然后单击 Create HorizontalPodAutoscaler

    HPA
    HPA

    将编辑器的内容替换为以下 yaml:

    apiVersion: autoscaling/v2
    kind: HorizontalPodAutoscaler
    metadata:
      name: patient-hpa
      namespace: example-health
    spec:
      scaleTargetRef:
        apiVersion: apps.openshift.io/v1
        kind: DeploymentConfig
        name: patient-health-frontend
      minReplicas: 1
      maxReplicas: 10
      metrics:
        - type: Resource
          resource:
            name: cpu
            target:
              averageUtilization: 1
              type: Utilization
    
  2. 单击创建

测试自动缩放器

如果您未运行脚本来模拟装入,那么 pod 数应保持为 1。

  1. 通过打开部署配置的“概述”页面进行检查。 单击 工作负载 > DeploymentConfigs,然后单击 耐心-运行状况-前端,并确保选择 详细信息 面板。

  2. 开始模拟装入 (请参阅上一节以模拟应用程序上的装入)。

    缩放到 4/10 Pod
    缩放到 4/10 Pod

    自动缩放器可能需要几分钟才能进行调整。

好了! 现在,您有一个高度可用且自动缩放的前端 Node.js 应用程序。Red Hat OpenShift 正在自动缩放应用程序 pod,因为这些 pod 的 CPU 使用率远远超过资源限制 30 millicores 的 1%。

从命令行自动缩放

您还可以使用命令行来删除和创建诸如自动标量之类的资源。

  1. 首先验证上下文是您的项目:
    oc project example-health
    
  2. 获取先前创建的自动缩放器:
    oc get hpa
    
  3. 删除先前创建的自动缩放器:
    oc delete hpa/patient-hpa
    
  4. 创建具有最多 9 个 pod 的新自动缩放器:
    oc autoscale deploymentconfig/patient-health-frontend --name patient-hpa --min 1 --max 9 --cpu-percent=1
    
  5. 重新访问 工作负载> DeploymentConfigs patient-health-frontend 部署的“详细信息”页面,并观察其工作情况。

使用 IBM Cloud Operator 创建 Cloudant DB

目前,Example Health patient-health-frontend 应用程序正在使用虚拟内存中患者。 在本练习中,您将在 IBM Cloud 中创建 Cloudant 服务,并使用患者数据填充该服务。 Cloudant 是基于 CouchDB的 NoSQL 数据库即服务。

启用 IBM Cloud 操作程序

让我们了解操作员的工作方式。 在第一个练习中,您使用构建器通过 DeploymentConfig Red Hat OpenShift随附的缺省资源类型来部署简单应用程序。 定制资源定义允许您创建未预安装 Red Hat OpenShift on IBM Cloud 此类 IBM Cloud 服务的资源类型。 操作程序管理资源的生命周期并创建定制资源描述符 (CRD),从而允许您以本机 "Kubernetes" 方式管理定制资源。

  1. 在“管理员”透视图中,单击 操作程序> OperatorHub
  2. 找到 IBM Cloud Operator,然后单击 安装
  3. 保留默认选项并点击安装
  4. 应在几秒钟后显示 installed operator - ready for use

使用 CRD 创建 Cloudant 服务和绑定

单击以将其打开。 向下滚动到“先决条件”部分。

此部分中需要具有相应许可权的 API 密钥来创建 IBM Cloudant 数据库。 API 密钥将存储在 Kubernetes 密钥资源中。 这将需要使用 shell 创建。 在已安装的操作程序的 先决条件 部分中有指示信息。 步骤:

  1. 使用与集群关联的同一资源组和区域。

    ibmcloud target -g <resource_group> -r <region>
    

    要查看帐户中的资源组,请运行 ibmcloud resource groups 命令

  2. 验证资源组和区域是否与集群匹配。 以下命令应返回集群。

    ibmcloud oc cluster ls
    

输出如下所示:

$ ibmcloud oc cluster ls
OK
Name      ID                     State    Created        Workers   Location   Version                  Resource Group Name   Provider
osmicro   ck68svdd0vvcfs6ad9ag   normal   18 hours ago   2         Dallas     4.12.26_1562_openshift   default               vpc-gen2
  1. 使用 IBM 提供的帮助程序脚本来创建以下资源:

    • IBM Cloud 表示您和您使用 IBM Cloud 的许可权的 API 密钥
    • default 名称空间中名为 secret-ibm-cloud-operator 的 Kubernetes 私钥。 此私钥具有密钥 api-keyregion。 操作员将使用此数据来创建 cloudant 服务实例。
    • Kubernetes ConfigMap 资源,名称 config-ibm-cloud-operator 位于 default 名称空间中,用于保存区域和资源组

    使用提供的 curl 命令:

    curl -sL https://raw.githubusercontent.com/IBM/cloud-operators/master/hack/configure-operator.sh | bash
    
  2. 返回到 Red Hat OpenShift Web 控制台中,单击 IBM Cloud Operator 页面的 已安装操作程序 上的 服务 选项卡下的 创建服务,然后选择 YAML 视图 以启动 yaml 编辑器。

  3. 进行建议的替换,其中 serviceClass 为 cloudantnosqldb 并且套餐可以是 litestandard (每个帐户只允许一个 Lite 套餐)。 替换 <your-initials>:

    apiVersion: ibmcloud.ibm.com/v1
    kind: Service
    metadata:
      annotations:
       ibmcloud.ibm.com/self-healing: enabled
      name: <your-initials>-cloudant-service
      namespace: example-health
    spec:
      serviceClass: cloudantnosqldb
      plan: standard
    
  4. 单击创建,创建 IBM Cloudant 数据库实例。 您的上下文应该是“ 管理员”透视图中的 操作程序 > 已安装的操作程序 > IBM Cloud 操作程序 以及“服务”面板中的“项目: 示例-运行状况”。

  5. 单击刚刚创建的服务,-cloudant-service 以及随着时间的推移,状态 字段将从 供应 更改为 在线,这意味着可以执行此操作。

  6. 为刚创建的 Cloudant 服务资源创建绑定资源和私钥资源。 返回到 操作程序 > 已安装的操作程序 > IBM Cloud 操作程序 > 绑定 选项卡。 打开 绑定 选项卡,单击 创建绑定,然后选择 YAML 视图。 创建与 serviceName <your-initials>-cloudant-service 关联的 cloudant-binding (这是为先前创建的 服务 提供的名称)。

    apiVersion: ibmcloud.ibm.com/v1
    kind: Binding
    metadata:
      name: cloudant-binding
      namespace: example-health
    spec:
      serviceName: <your-initials>-cloudant-service
    
  7. (可选) 深入挖掘以了解 Red Hat OpenShift 资源之间的关系: Service,service Binding,binding Secret 和 IBM Cloud 资源: Service,service Instance 和实例的 Service credentials。 使用云 shell:

    ibmcloud resource service-instances --service-name cloudantnosqldb
    
    YOURINITIALS=<your-initials>
    
    ibmcloud resource service-instance $YOURINITIALS-cloudant-service
    
    ibmcloud resource service-keys --instance-name $YOURINITIALS-cloudant-service --output json
    

    输出如下所示:

    youyou@cloudshell:~$ ibmcloud resource service-instances --service-name cloudantnosqldb
    Retrieving instances with type service_instance in all resource groups in all locations under ..
    OK
    Name                           Location   State    Type
    <your-initials>-cloudant-service               us-south   active   service_instance
    youyou@cloudshell:~$ ibmcloud resource service-instance <your-initials>-cloudant-service
    Retrieving service instance <your-initials>-cloudant-service in all resource groups under ...
    OK
    
    Name:                  <your-initials>-cloudant-service
    ID:                    crn:v1:bluemix:public:cloudantnosqldb:us-south:a/0123456789507a53135fe6793c37cc74:SECRET
    GUID:                  SECRET
    Location:              us-south
    Service Name:          cloudantnosqldb
    Service Plan Name:     standard
    Resource Group Name:   Default
    State:                 active
    Type:                  service_instance
    Sub Type:
    Created at:            2020-05-06T22:39:25Z
    Created by:            youyou@us.ibm.com
    Updated at:            2020-05-06T22:40:03Z
    Last Operation:
                        Status       create succeeded
                        Message      Provisioning is complete
                        Updated At   2020-05-06 22:40:03.04469305 +0000 UTC
    
    youyou@cloudshell:~$ ibmcloud resource service-keys --instance-name $YOURINITIALS-cloudant-service --output json
    [
        {
            "guid": "01234560-902d-4078-9a7f-20446a639aeb",
            "id": "crn:v1:bluemix:public:cloudantnosqldb:us-south:a/0123456789507a53135fe6793c37cc74:SECRET",
            "url": "/v2/resource_keys/01234560-902d-4078-9a7f-20446a639aeb",
            "created_at": "2020-05-06T23:03:43.484872077Z",
            "updated_at": "2020-05-06T23:03:43.484872077Z",
            "deleted_at": null,
            "name": "cloudant-binding",
            "account_id": "0123456789507a53135fe6793c37cc74",
            "resource_group_id": "01234567836d49029966ab5be7fe50b5",
            "source_crn": "crn:v1:bluemix:public:cloudantnosqldb:us-south:a/0123456789507a53135fe6793c37cc74:SECRET",
            "state": "active",
            "credentials": {
                "apikey": "SECRET",
                "host": "SECRET",
                "iam_apikey_description": "Auto-generated for key SECRET",
                "iam_apikey_name": "cloudant-binding",
                "iam_role_crn": "SECRET",
                "iam_serviceid_crn": "SECRET",
                "password": "SECRET",
                "port": 443,
                "url": "https://01234SECRET",
                "username": "01234567-SECRET"
            },
            "iam_compatible": true,
            "resource_instance_url": "/v2/resource_instances/SECRET",
            "crn": "crn:v1:bluemix:public:cloudantnosqldb:us-south:a/0123456789507a53135fe6793c37cc74:SECRET"
        }
    ]
    

部署 Node.js 患者后端数据库应用程序

现在,您将创建 Node.js 应用程序,该应用程序将使用患者数据填充 Cloudant DB。 它还将向先前部署的前端应用程序提供数据。

  1. 确保您的上下文是项目 example-health:
    oc project example-health
    
  2. 以下新应用程序命令将进行构建配置和部署配置。 以下演示了添加应用程序的 CLI 调用 (请记住使用前端的 GUI 控制台):
    oc new-app --name=patient-health-backend --as-deployment-config registry.access.redhat.com/ubi9/nodejs-20-minimal:latest~https://github.com/IBM-Cloud/patient-health-backend
    
  3. 返回到控制台,并在“开发者”透视图的 拓扑 视图中,打开 patient-health-backend 应用程序并等待构建完成。 请注意,Pod 无法启动。 单击 Pod 日志以查看:
    > node app.js
    
    /opt/app-root/src/app.js:23
             throw("Cannot find Cloudant credentials, set CLOUDANT_URL.")
             ^
    Cannot find Cloudant credentials, set CLOUDANT_URL.
    
  4. 让我们通过将 DeploymentConfig 的环境变量设置为先前在操作程序绑定部分中创建的 cloudant-binding 私钥来解决此问题。 通过单击 patient-health-backend 应用程序,然后选择 DC 旁边的名称,浏览至该应用程序的部署配置:
    部署配置
    部署配置
  5. 转至 环境 选项卡,单击 从 ConfigMap 或私钥添加,并创建名为 CLOUDANT_URL 的新环境变量。 选择 cloudant-binding 私钥,然后选择密钥的 url。 单击保存
    来自私钥的环境
    来自私钥的环境
  6. 返回到 拓扑 选项卡,然后单击 patient-health-backend。 查看 Pod 部分,该部分应指示 正在运行。 单击正在运行的 pod 旁边的 查看日志,并注意到已创建的数据库。

配置患者健康前端应用程序以使用患者健康后端应用程序

patient-health-frontend 应用程序具有后端微服务 URL 的环境变量。

  1. 在前端 DeploymentConfig 中将 API_URL 环境变量设置为 default。 通过单击 拓扑 视图中的前端应用程序,然后选择 DC 旁边的名称,浏览到 patient-health-frontend 应用程序的部署配置:

  2. 转至 环境 选项卡,并在 单个值 (env) 部分中添加名称 API_URL 和值 default。 单击 保存,然后单击 重新装入。 这将导致与 http://patient-health-backend:8080/ 的连接,您可以通过查看 pod 日志来验证该连接。 您可以通过扫描此命令的 Pod Template / Containers / Port 输出来验证这是正确的端口:

    oc describe dc/patient-health-backend
    

您的应用程序现在由 Cloudant DB 中的模拟患者数据提供支持! 现在,您可以使用 Cloudant DB 中的任何用户标识/密码登录,使用 "opall: opall"。

  1. 在现实应用程序中,这些密码 不应 存储为纯文本。 要查看 Cloudant DB 中的患者 (和备用登录),请浏览至 IBM Cloud 资源列表 中的 services。 单击 -cloudant-service
  2. 通过单击 启动仪表板 按钮,然后单击 patients 数据库来启动 Cloudant 仪表板。
  3. 单击您可以登录的不同患者。

将Red Hat OpenShift on IBM Cloud日志和监控转发至IBM服务

集群日志可转发至IBM Cloud®日志服务,并集成到云的完整日志分析和存储环境中,请参阅 集群 日志。 集群指标可与云监控系统集成 -监控集群健康状况

日志和度量数据通过分析系统可能需要几分钟的时间,因此最好在此时连接这两个系统,以便稍后使用。

监视集群

IBM Cloud Monitoring 是一个云本机和容器智能管理系统,您可以将其包含在 IBM Cloud 体系结构中。 使用此系统可了解应用程序、服务和平台的性能和运行状况。 它为管理员、DevOps 团队和开发人员提供具有高级功能的全栈遥测功能,用于监控和排除性能问题、定义警报和设计自定义仪表板。 了解更多信息

在接下来的步骤中,您将学习如何使用仪表板和度量值来监视应用程序的运行状况。

查看预定义的监视视图和仪表板

使用视图和仪表板监控基础架构、应用程序和服务。 您可以使用预定义仪表板。 还可以通过 Web UI 或以编程方式创建定制仪表板。 可以使用 Python 脚本来备份和复原仪表板。

下表列出了不同类型的预定义仪表板:

现有预定义仪表板的子集
类型 描述
工作负载状态和性能 可用于监视 pod 的仪表板。
Node 现状和绩效 可用于监视主机和容器中的资源利用率和系统活动的仪表板。
网络 可用于监视网络连接和活动的仪表板。

查看 Monitoring 仪表板

  1. 浏览至 Red Hat OpenShift on IBM Cloud 集群,并注意到 Red Hat OpenShift 集群
  2. 单击集群并验证是否选择了左侧的 概述 选项卡
  3. 监视旁边的 集成 部分中,单击 启动 按钮。

初始数据在新创建的 Monitoring 实例上可能不可用。

  • 几分钟后,将显示原始数据
  • 大约一个小时后,建立索引将提供继续本教程所需的详细信息
  1. 在“仪表板”部分下,选择 Kubernetes > Pod 状态和性能 以查看集群上运行的所有工作负载的原始度量。
  2. namespace 过滤器设置为 example-health 以聚焦于应用程序的 pod。
  3. 在左侧窗格的 仪表板 下,展开 仪表板模板中的 应用程序。 然后选择 HTTP,以全局视角查看集群HTTP 负载。

浏览集群和节点容量

  1. 选择 仪表板,查看两个仪表板模板:

    • 容器> 容器资源使用情况
    • 主机基础结构> 主机资源使用情况
  2. 选择 Kubernetes > Pod Right浆料和工作负载容量优化 模板。 此仪表板通过确保正确调整 pod 大小,帮助您优化基础架构并更好地控制集群开销。 了解是否可以通过减少内存和/或 CPU 请求来释放资源。

浏览应用程序

  1. 选择 仪表板 和模板 Kubernetes > 工作负载状态和性能

    显示集群中所有 pod 的详细仪表板。

  2. 创建定制仪表板,然后将其作用域限定为特定名称空间。

    • 在右上方单击 复制到我的仪表板 并将其命名为 Workload Status & Performanceapp example-health
    • 单击 创建并打开 以创建您自己的仪表板。
    • 编辑仪表板作用域。
    • 设置 kube_namespace_nameisexample-health 的过滤器。
    • 单击保存

    仪表板现在显示有关示例运行状况名称空间的信息。

    向下滚动查看 HTTP、延迟、错误等TimeCharts,了解应用程序的性能。

    定制网络流量和带宽
    定制网络流量和带宽

IBM Cloud 文档 中查找有关 IBM Cloud Monitoring 的更多信息。

除去资源

资源列表 中,找到并删除要除去的资源:

  • 删除 Red Hat OpenShift on IBM Cloud 集群
  • 要在不删除集群的情况下删除 Red Hat OpenShift 资源,请运行以下命令:
    oc delete all --all --namespace example-health
    oc delete project/example-health
    
  • 删除 IBM Cloud Logs 实例
  • 删除 IBM Cloud Monitoring
  • 删除 IBM Cloudant 并绑定到微服务
  • IBM Cloudant 服务

根据资源的不同,可能不会立即将其删除,但会保留 (缺省情况下为 7 天)。 您可以通过永久删除该资源或在保留期内将其复原来回收该资源。 请参阅本文档,以了解如何 使用资源回收

相关内容