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 觀察叢集

架構
教學的架構圖

  1. 開發人員使用儲存庫 URL 來初始化 Red Hat OpenShift 應用程式,並產生 BuilderDeploymentConfigService
  2. 建置器 會複製來源、建立映像檔、將它推送至 Red Hat OpenShift 登錄,以進行 DeploymentConfig 佈建。
  3. 使用者存取前端應用程式。
  4. IBM Cloudant 資料庫實例是透過 IBM Cloud Operator Service 來佈建。
  5. 後端應用程式會使用 IBM Cloud Operator Binding 連接至資料庫。
  6. IBM Cloud Logs 已配置並部署代理程式。
  7. 已佈建 Monitoring 並部署代理程式。
  8. 管理員透過 IBM Cloud Logs 和 Monitoring 監控應用程式。

Script 將執行下列部分步驟。 它在 README.md中有說明。 如果您遇到問題,且想要重新開始,只要執行 destroy.sh Script,然後循序執行對應於回復步驟的 Script。

開始之前

本指導教學需要:

  • 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. 編排服務 設為 4.12.x 版本 Red Hat OpenShift on IBM Cloud
  3. 選取您的 OCP 授權。
  4. 基礎架構 下選擇「標準」或 VPC
    • 對於 VPC 基礎架構上的 Red Hat OpenShift,在建立 Red Hat OpenShift on IBM Cloud 群集之前,您必須擁有一個 VPC 和一個子網路。 請記住下列事項 (請參閱 建立標準 VPC 叢集 下提供的指示):
      • 一個可用於本指導教學的子網路,請記下子網路的區域及名稱
      • 公用閘道已連接至子網路
    • 選取現有的 Cloud Object Storage 服務,或建立一個服務 (必要的話)
  5. 位置下方
    • 若為 VPC 基礎架構上的 Red Hat OpenShift
      • 選取資源群組
      • 取消勾選不適用的區域
      • 在想要的區域中驗證想要的子網路名稱,如果不存在,請按一下編輯鉛筆以選取想要的子網路名稱
    • 對於標準基礎架構上的 Red Hat OpenShift,請遵循 建立標準叢集 指示。
      • 選取資源群組
      • 選取 地理位置
      • 選取 單一區域 作為 可用性
      • 選擇資料中心
  6. 工人池下
    • 選取 4 vCPUs 16GB 記憶體 作為特性
    • 針對本指導教學,選取 2 每個資料中心的工作者節點 (僅限典型: 離開 加密本端磁碟)
  7. 整合下,啟用並配置 記載監視
  8. 資源詳細資料下,將 叢集名稱 設為 -myopenshiftcluster,將 <your-initials> 取代為您自己的首字母。
  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. 管理者 切換至 開發人員 視景。 您的環境定義應該是左側的 開發人員 > + 新增,頂端的 專案: 範例-性能
    專案視圖
    專案視圖
  2. 讓我們透過選取 從 Git 來建置並部署應用程式。
  3. 在 Git Repo URL 欄位中輸入儲存庫 https://github.com/IBM-Cloud/patient-health-frontend.git
    • 請注意綠色勾號 Builder image detected 及 Node.js 16 (UBI 8)。
    • 請注意,建置器映像檔會自動偵測語言 Node.js。如果未偵測到,請從提供的清單中選取 Node.js
    • 建置器映像檔版本 保留預設值。
    • 應用程式名稱 會刪除所有字元,並將它保留空白 (這會預設為 名稱)
    • 名稱: patient-health-frontend。
    • 按一下 資源類型 鏈結,然後選擇 DeploymentConfig
    • 保留其他選項的預設值。
  4. 按一下視窗底端的 建立,以建置並部署應用程式。

檢視應用程式

  1. 您應該會看到剛剛部署的應用程式。 請注意,您位於 開發人員 視景中 example-health 專案的 拓蹼 視圖中。 即會顯示專案中的所有應用程式。

  2. 選取 節點 patient-health-frontend,以啟動 DeploymentConfig 的詳細資料視圖。 請注意 patient-health-frontend 旁的 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. 按一下 Routes 下方的 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中提供的現成記載和監視功能。

在應用程式上模擬載入

建立 Script 以模擬載入。

  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. 執行下列 Script,它會將要求傳送至應用程式,並產生資料流量:
    while sleep 0.2; do curl --max-time 2 -s -L http://$HOST/info >/dev/null; echo -n "."
    done
    
    若要停止 Script,請按鍵盤上的 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 顯示基礎 OS。
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"})
    

    度量圖形
    度量圖形

調整應用程式

在此區段中,前一節中觀察到的度量值可用來調整使用者介面應用程式的大小,以回應載入。

啟用資源限制

必須先建立自動調整最大 CPU 和記憶體資源限制。

先前儀表板顯示負載在 ".002" 至 ".02" 核心之間的任何地方耗用。 這會轉換為 2-20 "millicores"。 為了安全起見,讓我們把高階的地方提高到 30 毫科爾斯。 此外,資料顯示應用程式耗用大約 25-65 MB RAM。 下列步驟將在 deploymentConfig 中設定資源限制

  1. 請確定用來產生資料流量的 Script 正在執行中。

  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
    

    以下是您進行變更之後的 Snippet:

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

  8. 透過導覽至 事件 標籤,驗證抄寫控制器是否已變更:

    資源限制
    資源限制

啟用 Autoscaler

現在已配置資源限制,可以啟用 Pod Autoscaler。

依預設,autoscaler 可讓您根據 CPU 或記憶體進行調整。 Pod 會在您指定的 Pod 數目下限與上限之間平衡。 使用 autoscaler,會自動建立或刪除 Pod,以確保 Pod 的平均 CPU 使用率低於所定義的 CPU 要求目標。 一般而言,當您接近 Pod 的 CPU 使用率 50-90% 時,您可能想要開始擴增。 在我們的案例中,1% 可以與所提供的負載一起使用。

  1. 導航行政人員看法工作負載 > HorizontalPodAutoscalers,然後按一下創造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. 按一下建立

測試 Autoscaler

如果您不是執行 Script 來模擬載入,則 Pod 數目應該維持在 1。

  1. 透過開啟部署配置的 概觀 頁面進行檢查。 按一下 工作量 > DeploymentConfigs,然後按一下 patient-health-frontend,並確定已選取 詳細資料 畫面。

  2. 開始模擬載入 (請參閱前一節,以模擬應用程式上的載入)。

    調整至 4/10 Pod
    調整至 4/10 Pod

    自動調整程式可能需要幾分鐘的時間來進行調整。

就這樣! 您現在具有高可用性且自動調整的前端系統 Node.js 應用程式。Red Hat OpenShift 會自動調整應用程式 Pod 的大小,因為 Pod 的 CPU 使用率已遠遠超出資源限制 30 millicores 的 1%。

從指令行進行自動調整

您也可以使用指令行刪除及建立資源,例如 autoscalars。

  1. 從驗證環境定義是否為您的專案開始:
    oc project example-health
    
  2. 取得先前建立的 autoscaler:
    oc get hpa
    
  3. 刪除先前製作的 Autoscaler:
    oc delete hpa/patient-hpa
    
  4. 建立新的 Autoscaler,最多包含 9 個 Pod:
    oc autoscale deploymentconfig/patient-health-frontend --name patient-hpa --min 1 --max 9 --cpu-percent=1
    
  5. 重新造訪 patient-health-frontend 部署的 工作量> DeploymentConfigs「詳細資料」頁面,並監看其運作。

使用 IBM Cloud 操作器來建立 Cloudant 資料庫

目前,「範例性能 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 服務及連結

按一下以開啟它。 向下捲動至「先決條件」部分。

本節需要具有適當許可權來建立 IBM Cloudant 資料庫的 API 金鑰。 API 金鑰將儲存在 Kubernetes Secret 資源中。 這將需要使用 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 提供的 Helper Script 來建立下列資源:

    • IBM Cloud API 金鑰代表您和您使用 IBM Cloud 的許可權
    • default 名稱空間中名為 secret-ibm-cloud-operator 的 Kubernetes 密鑰。 此密鑰具有金鑰 api-keyregion。 操作器將使用此資料來建立 cloudant 服務實例。
    • default 名稱空間中具有名稱 config-ibm-cloud-operator 的 Kubernetes ConfigMap 資源,用於保留地區及資源群組

    使用提供的 curl 指令:

    curl -sL https://raw.githubusercontent.com/IBM/cloud-operators/master/hack/configure-operator.sh | bash
    
  2. 回到 Red Hat OpenShift Web 主控台,按一下 IBM Cloud 操作員 頁面之 已安裝的操作器服務 標籤下的 建立服務,然後選取 YAML 視圖 以啟動 yaml 編輯器。

  3. 進行建議替代,其中 serviceClass 是 cloudantnosqldb,而方案可以是 lite標準 (每個帳戶只容許一個 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 資源之間的關係: 服務、服務 連結、連結 密碼 及 IBM Cloud 資源: 服務、服務 實例 及實例的 服務認證。 使用雲端 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 Patient Backend Database 應用程式

現在,您將建立 Node.js 應用程式,以將病患資料移入 Cloudant DB。 它還將為先前部署的前端應用程式提供資料。

  1. 請確定您的環境定義是專案 example-health:
    oc project example-health
    
  2. 下列 new-app 指令將建立建置配置和部署配置。 下列示範新增應用程式的 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 或 Secret 新增,然後建立名為 CLOUDANT_URL 的新環境變數。 選擇 cloudant-binding 密碼,然後選擇 url 作為「金鑰」。 按一下儲存
    密鑰中的環境
    密鑰中的環境
  6. 回到 拓蹼 標籤,然後按一下 patient-health-backend。 請查看 Pod 區段,它應該會很快指出 執行中。 按一下執行中 Pod 旁邊的 檢視日誌,並注意所建立的資料庫。

配置 Patient Health Frontend 應用程式以使用 Patient Health Backend 應用程式

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 中使用任何使用者 ID/ 密碼登入,使用 "opall: opall"。

  1. 在實際應用程式中,這些密碼 不應 儲存為純文字。 若要檢閱 Cloudant DB 中的病患 (及替代登入),請導覽至 IBM Cloud 資源清單 中的 services。 按一下 -cloudant-service
  2. 按一下 啟動儀表板 按鈕來啟動 Cloudant 儀表板,然後按一下 patients 資料庫。
  3. 按一下您可以登入的不同病患。

將Red Hat OpenShift on IBM Cloud日誌和監控轉送到IBM服務

叢集日誌可以轉送到IBM Cloud®日誌服務,並整合到雲端的完整日誌分析和儲存環境 - 請 參閱叢集日誌。 叢集指標可與雲端監控系統整合 -監控叢集健康狀況

日誌記錄和指標資料流經分析系統可能需要幾分鐘的時間,因此最好此時連接兩者以供日後使用。

監視叢集

IBM Cloud Monitoring 是雲端原生及儲存器智慧管理系統,可併入作為 IBM Cloud 架構的一部分。 您可以使用它,在作業期間看見應用程式、服務及平台的效能及性能。 它提供管理員、DevOps 團隊和開發人員全堆疊遙測功能,以及監控和疑難排解效能問題、定義警示和設計自訂儀表板的進階功能。 進一步瞭解

在接下來的步驟中,您將學習如何使用儀表板及度量值來監視應用程式的性能。

檢視預先定義的監視視圖和儀表板

使用檢視和儀表板來監控您的基礎架構、應用程式和服務。 您可以使用預先定義的儀表板。 也可以透過 Web 使用者介面或以程式設計方式,建立自訂儀表板。 您可以使用 Python Script 來備份及還原儀表板。

下表列出不同類型的預先定義儀表板:

現有預先定義儀表板的子集
類型 說明
工作量狀態及效能 可用來監視 Pod 的儀表板。
Node 狀態與效能 您可以用來在主機及容器中監視資源使用率及系統活動的儀表板。
網路 您可以用來監視網路連線及活動的儀表板。

檢視 Monitoring 面板

  1. 導覽至 Red Hat OpenShift on IBM Cloud 叢集,並注意 Red Hat OpenShift 叢集
  2. 按一下叢集並驗證已選取左側的 概觀 標籤
  3. 監視旁的 整合 區段中,按一下 啟動 按鈕。

在新建立的 監視 實例上可能無法使用起始資料。

  • 幾分鐘之後,將會顯示原始資料
  • 在大約一小時之後,檢索將提供繼續進行本指導教學所需的詳細資料
  1. 儀表板 區段下,選取 Kubernetes > Pod 狀態與效能,以檢視叢集上執行之所有工作量的原始度量值。
  2. namespace 過濾器設為 example-health,以聚焦於應用程式的 Pod。
  3. 在左窗格的 儀表板 下,展開 儀表板範本中的 應用程式。 然後選擇 HTTP,以取得群集 HTTP 負載的全局檢視。

探索叢集和節點容量

  1. 選取 儀表板,移出兩個儀表板範本:

    • 儲存器> 儲存器資源用量
    • 主機基礎架構> 主機資源用量
  2. 選取 Kubernetes > Pod 正確調整大小及工作量容量最佳化 範本。 此儀表板可協助您透過確保 Pod 大小正確,來最佳化基礎架構並更好地控制叢集花費。 瞭解您是否可以透過減少記憶體及/或 CPU 要求來釋放資源。

探索應用程式

  1. 選取 儀表板 及範本 Kubernetes > 工作量狀態與效能

    顯示叢集中所有 Pod 的詳細儀表板。

  2. 建立自訂儀表板,然後將它設定為特定名稱空間。

    • 在右上方按一下 複製到我的儀表板,並將它命名為 Workload Status & Performanceapp example-health
    • 按一下 建立並開啟,以建立您自己的儀表板。
    • 編輯儀表板範圍。
    • 設定 kube_namespace_nameisexample-health 的過濾器。
    • 按一下儲存

    儀表板現在會顯示聚焦於 example-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 天)。 您可以透過永久刪除資源或在保留期間內還原資源來收回資源。 請參閱本文件,以瞭解如何 使用資源收回

相關內容