本文說明如何安裝 Cluster Services for OpenShift Telemetry 運算子,並設定該運算子,以便連線至在 Compute Engine 執行個體上執行的 OpenShift 叢集。
安裝及設定完成後,這項遙測 operator 會部署主機網路 Daemon,持續監控叢集健康狀態和叢集設定。運算子會將收集到的指標傳送至 Workload Manager。接著,您可以使用 Workload Manager 評估作業,掃描叢集中執行的工作負載,找出與 OpenShift 叢集最佳做法的差異。
事前準備
安裝及設定遙測運算子前,請先確認符合下列必要條件:
- 您使用的是 Red Hat OpenShift Container Platform 4.18 以上版本。
- 您已在一或多個運算執行個體上部署 OpenShift 叢集。
- 管理員已在 Red Hat OpenShift Container Platform 中,將叢集的 ClusterAdmin 角色授予您。
- 您已下載並安裝 Google Cloud CLI。如果您使用 Cloud Shell,可以略過這項必要條件。
- 您已在叢集中安裝 OpenShift CLI (
oc)。如要瞭解如何安裝這個 CLI,請參閱 Red Hat 文件「安裝 OpenShift CLI」。 - 您已安裝 Cloud Credentials Operator (
ccoctl) 公用程式。如要瞭解如何安裝這項公用程式,請參閱 Red Hat 文件「How to obtain theccoctltool for OpenShift 4」。 - 您已查看支援的區域,瞭解可在哪些區域建立 Workload Manager 評估作業。
- 管理員已授予您建立及執行 Workload Manager 評估作業所需的 IAM 角色。
- 您已啟用 Cloud API 的存取權。
啟用 Cloud API 存取權
Compute Engine 建議您將執行個體設為允許所有 Cloud API 的所有存取權範圍,並只使用執行個體服務帳戶的身分與存取權管理權限,控管對Google Cloud 資源的存取權。詳情請參閱「建立採使用者代管服務帳戶的 VM」。
如果限制 Cloud API 的存取權,則 Cluster Services for OpenShift Telemetry 運算子至少需要主機運算執行個體上的下列 Cloud API 存取範圍:
https://www.googleapis.com/auth/cloud-platform
詳情請參閱「範圍最佳做法」。
如果您在沒有外部 IP 位址的運算執行個體上執行 OpenShift 叢集,則需要在執行個體的子網路上啟用Private Google Access,這樣 Cluster Services for OpenShift Telemetry 運算子才能存取 Google API 和服務。如要瞭解如何啟用 Private Google Access,請參閱「設定 Private Google Access」。
驗證 OpenShift 叢集的使用者
如要執行管理員動作,您或使用者必須使用 OpenShift CLI 向 OpenShift 叢集進行驗證。如要驗證 OpenShift 叢集的使用者,可以選擇下列選項:
執行下列指令並按照提示操作:
oc login "https://api.CLUSTER_DOMAIN:6443" -u kubeadmin或者,您也可以取得工作階段驗證權杖,搭配
oc二進位檔使用。如要取得這個權杖,請在網路瀏覽器中開啟下列網址:https://oauth-openshift.apps.CLUSTER_DOMAIN/oauth/token/request
將 CLUSTER_DOMAIN 替換為 OpenShift 叢集的網域。例如:mycluster.google.com。
驗證運算子, Google Cloud
如要讓遙測運算子驗證自身並存取資源,您必須在專案中為其建立服務帳戶。 Google CloudGoogle Cloud
您可以透過下列選項,將遙測運算子驗證為服務帳戶:
使用 Workload Identity 聯盟驗證運算子
如要使用 Workload Identity Federation,將遙測運算子驗證為服務帳戶,請完成下列步驟:
在終端機中,將遙測運算子套件中的
CredentialsRequest資訊清單解壓縮到本機目錄:mkdir -p credrequests oc image extract us-docker.pkg.dev/workload-agent-products/cluster-services-for-openshift-telemetry/bundle:VERSION --path /manifests/:./credrequests --confirm將
VERSION替換為您在 OperatorHub 中訂閱的遙測運算子版本號碼。您可以在 Red Hat 生態系統目錄中查看遙測運算子的認證版本號碼清單。使用
ccoctl公用程式處理擷取的CredentialsRequest資訊清單,並佈建 Google Cloud Identity and Access Management (IAM) 繫結和憑證:ccoctl gcp create-all \ --name=cso-telemetry \ --region=REGION \ --project=PROJECT_ID \ --credentials-requests-dir=./credrequests \ --output-dir=./ccoctl-out更改下列內容:
REGION:OpenShift 叢集執行的 Compute Engine 區域PROJECT_ID:OpenShift 叢集執行的 Google Cloud 專案專案 ID
將產生的 OpenID Connect (OIDC) 提供者、IAM 角色和密碼資訊清單套用至叢集:
oc apply -f ./ccoctl-out/manifests/
上述步驟會在 Google Cloud 專案中建立服務帳戶,並指派下列 IAM 角色:
- 如要從運算執行個體收集指標:Compute 檢視者 (
roles/compute.viewer) - 如要將資料寫入 Workload Manager 資料倉儲:
Workload Manager Insights Writer (
roles/workloadmanager.insightWriter) - 如要將運算子記錄檔傳送至 Cloud Logging,請執行下列操作:
記錄檔寫入者 (
roles/logging.logWriter)
使用服務帳戶金鑰驗證運算子
如果貴機構不支援使用 Workload Identity 聯盟進行驗證,則可使用服務帳戶金鑰驗證遙測運算子。
如要使用服務帳戶金鑰,將遙測運算子驗證為服務帳戶,請完成下列步驟:
在終端機中,將遙測運算子套件中的
CredentialsRequest資訊清單解壓縮到本機目錄:mkdir -p credrequests oc image extract us-docker.pkg.dev/workload-agent-products/cluster-services-for-openshift-telemetry/bundle:VERSION --path /manifests/:./credrequests --confirm在 Google Cloud 專案中,為遙測運算子建立服務帳戶:
gcloud iam service-accounts create cso-telemetry-agent \ --description="Service account for OpenShift Telemetry Operator" \ --display-name="CSO Telemetry Agent" \ --project=PROJECT_ID將
PROJECT_ID替換為 OpenShift 叢集執行的Google Cloud 專案 ID。如要讓服務帳戶存取 Google Cloud 資源,請將
CredentialsRequest資訊清單中定義的 IAM 角色授予服務帳戶。這份資訊清單包含下列最低 IAM 角色組合,是運算子必須具備的角色:- 如要從運算執行個體收集指標:Compute 檢視者 (
roles/compute.viewer) - 如要將資料寫入 Workload Manager 資料倉儲:
Workload Manager Insights Writer (
roles/workloadmanager.insightWriter) - 如要將運算子記錄檔傳送至 Cloud Logging,請執行下列操作:
記錄檔寫入者 (
roles/logging.logWriter)
針對這個資訊清單中定義的每個 IAM 角色,執行下列指令:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:cso-telemetry-agent@PROJECT_ID.iam.gserviceaccount.com" \ --role="IAM_ROLE"將
IAM_ROLE替換為要授予服務帳戶的 IAM 角色。- 如要從運算執行個體收集指標:Compute 檢視者 (
建立並下載服務帳戶的私密金鑰:
gcloud iam service-accounts keys create ./sa_key.json \ --iam-account=cso-telemetry-agent@PROJECT_ID.iam.gserviceaccount.com \ --project=PROJECT_ID在
openshift-operators命名空間中,為您建立的服務帳戶金鑰建立名為telemetry-agent-sa的密鑰:oc create secret generic telemetry-agent-sa \ --from-file=workload_agent_sa_key.json=./sa_key.json \ -n openshift-operators
安裝 Cluster Services for OpenShift Telemetry 運算子
您可以透過 Red Hat OpenShift Container Platform 網頁控制台,或宣告式訂閱 YAML 資訊清單,安裝 Cluster Services for OpenShift Telemetry 運算子。如要瞭解這些選項,請參閱 Red Hat 文件「將運算子新增至叢集」。
OpenShift 網頁控制台
如要使用 OpenShift Container Platform 網頁控制台,在 OpenShift 叢集中安裝遙測運算子,請完成下列步驟:
- 登入 Red Hat OpenShift 網路控制台。
- 確認您處於管理員檢視畫面。
- 在左側導覽中,展開「Operators」區段,然後按一下「OperatorHub」。
在「所有項目」下方的搜尋列中,輸入「Cluster Services for OpenShift Telemetry」。
你也可以輸入「Google」進行搜尋。這會篩選 Google 提供的運算子,包括 Cluster Services for OpenShift Telemetry 運算子。
按一下名為「Cluster Services for OpenShift Telemetry」的資訊卡。
在「Cluster Services for OpenShift Telemetry」窗格中,按一下「Install」。
在「Install Operator」(安裝運算子) 頁面中,完成下列步驟:
- 在「更新管道」欄位中,選取「stable」。
- 在「安裝模式」欄位中,選取「叢集上的特定命名空間」。
- 在「Installed Namespace」(已安裝的命名空間) 欄位中,選取 openshift-operators 專案,或建立自訂監控命名空間。
- 在「核准策略」欄位中,選取「自動」或「手動」。
- 按一下 [安裝]。
如要確認運算子是否已順利安裝,請完成下列步驟:
- 依序前往「Operators」>「Installed Operators」。
- 在運算子清單中,搜尋並確認「Cluster Services for OpenShift Telemetry」運算子是否存在。
- 確認「狀態」欄顯示「成功」或「最新」值。
- (選用) 按一下運算子即可查看詳細資料。
OpenShift CLI
如要使用 OpenShift CLI 和宣告式 Subscription YAML 資訊清單,在 OpenShift 叢集中安裝遙測運算子,請完成下列步驟:
使用下列設定,建立名為
subscription.yaml的Subscription自訂資源資訊清單:apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: google-cloud-cluster-services-for-openshift-telemetry namespace: openshift-operators spec: channel: stable installPlanApproval: Automatic name: google-cloud-cluster-services-for-openshift-telemetry source: certified-operators sourceNamespace: openshift-marketplace將訂閱方案套用至叢集:
oc apply -f subscription.yaml檢查
ClusterServiceVersion的狀態,確認遙測運算子是否已成功安裝:oc get csv -n openshift-operators在輸出內容中,確認
cluster-services-for-openshift-telemetry的PHASE欄值為Succeeded。
啟用指標收集功能
如要讓運算子從 OpenShift 叢集收集指標,您必須套用 TelemetryConfig 自訂資源。這個資源會在叢集節點上部署精靈 Pod,供 Compute Workloads 代理程式使用。
如要讓運算子從 OpenShift 叢集收集指標,請完成下列步驟:
建立名為
TelemetryConfig的自訂資源資訊清單:telemetryconfig.yaml如果您已使用 Workload Identity Federation 為遙測運算子設定驗證,請使用下列最低自訂資源。這項自訂資源會自動擷取儲存在
google-cloud-cluster-services-telemetry-agent-wif-secret密鑰中的憑證。apiVersion: cluster-services-openshift.cloud.google.com/v1alpha1 kind: TelemetryConfig metadata: name: telemetryconfig namespace: openshift-operators spec: enabled: true如果您已使用服務帳戶金鑰為遙測運算子設定驗證,請使用下列自訂資源:
apiVersion: cluster-services-openshift.cloud.google.com/v1alpha1 kind: TelemetryConfig metadata: name: telemetryconfig namespace: openshift-operators spec: enabled: true serviceAccountCredentialsSecretName: telemetry-agent-sa serviceAccountCredentialsPath: SERVICE_ACCOUNT_KEY_PATH將
SERVICE_ACCOUNT_KEY_PATH替換為您掛接服務帳戶金鑰的路徑。掛接的名稱必須與服務帳戶金鑰 JSON 檔案相符。例如:/var/run/secrets/google/workload_agent_sa_key.json。
將自訂資源套用至叢集:
oc apply -f telemetryconfig.yaml確認遙測代理程式 Pod 的狀態為「Running」:
oc get pods -n openshift-operators -l app.kubernetes.io/name=workloadagent-operator您也可以檢查 Pod 的記錄,驗證指標收集作業:
"openshiftmetrics/openshiftmetrics.go:126","msg":"Metric payload after collection","pid":5,"context":"OpenShiftMetricCollection","payload":"version:\"v0.1.0-pre\" agent_version:\"1.3\"
在 Cloud Logging 中查看運算子記錄
根據預設,Cluster Services for OpenShift Telemetry 運算子的記錄檔會傳送至 Cloud Logging。您可以在 Logging 中查看這些記錄。如要在 Logging 中查看運算符記錄,請完成下列步驟:
前往 Google Cloud 控制台的「Logs Explorer」頁面。
在查詢窗格中輸入查詢:
如要篩選 Google Cloud 專案的記錄,請使用下列查詢:
logName="projects/PROJECT_ID/logs/google-cloud-workload-agent"
將
PROJECT_ID替換為 OpenShift 叢集執行的Google Cloud 專案 ID。如果您在 Google Cloud 專案中執行多個叢集,並想篩選特定叢集的記錄,請使用下列查詢:
resource.labels.instance_id=("COMPUTE_INSTANCE_ID_1" OR "COMPUTE_INSTANCE_ID_2" OR "COMPUTE_INSTANCE_ID_3")將
COMPUTE_INSTANCE_ID換成執行 OpenShift 叢集的 Compute Engine 執行個體執行個體 ID。如要瞭解如何找出運算執行個體 ID,請參閱「查看 VM 詳細資料」。
點選「執行查詢」。
設定記錄檔型快訊政策
根據預設,遙測運算子的記錄檔會傳送至 Cloud Logging。建議您根據遙測運算子記錄檔設定快訊政策,這樣一來,當記錄檔中出現特定訊息時,您就會收到通知。這類快訊有助於監控運算子的運作情形,並排解問題。
如要根據遙測運算子產生的記錄設定警告政策,請完成下列步驟:
確認您已符合「設定以記錄為準的警報政策」一文「事前準備」一節所述的必要條件。
前往 Google Cloud 控制台的「Logs Explorer」頁面。
在查詢窗格中輸入所需查詢:
logName="projects/PROJECT_ID/logs/google-cloud-workload-agent" severity=SEVERITY_LEVEL
將
SEVERITY_LEVEL替換為支援的嚴重程度值,包括:DEBUG、INFO、WARNING和ERROR。建議您使用ERROR或更高的記錄層級值。按一下「執行查詢」驗證查詢。
建立記錄快訊。
如要瞭解如何建立這項快訊,請參閱「使用 Logs Explorer 建立記錄式警告政策」一文中的程序步驟三。
選用:啟用特定於正式版的評估
Workload Manager 支援 OpenShift 叢集的最佳做法,其中部分做法僅適用於實際工作環境。Workload Manager 會檢查叢集、部署或 Pod 的 environment 標籤,藉此區分工作負載。如果與這個標籤相關聯的值是 production,Workload Manager 會將該資源視為生產資源。
如要告知 Workload Manager 叢集屬於正式環境,請完成下列步驟:
建立
workloadmanager命名空間:oc create namespace workloadmanager使用下列設定,在
workloadmanager命名空間中建立ConfigMap:apiVersion: v1 kind: ConfigMap metadata: name: wlm-cluster-environment namespace: workloadmanager data: # Options: "production" or "non-production" environment: "production"
如要告知 Workload Manager 部署作業或 Pod 屬於正式環境,請使用下列任一選項,將名為 environment 的標籤新增至資源定義:
手動套用下列設定:
apiVersion: apps/v1 kind: Deployment metadata: name: my-app labels: # Options: "production" or "non-production" environment: "production" spec: ...執行下列指令:
oc label --overwrite deployments DEPLOYMENT_NAME environment=production將
DEPLOYMENT_NAME替換為部署作業的名稱。
如果您在 OpenShift 叢集以及叢集上執行的部署或 Pod 上套用 environment 標籤,Workload Manager 會優先採用部署或 Pod 設定的標籤值,而非叢集設定的標籤值。
選用:觸發指標收集作業
在 OpenShift 叢集中成功設定 Cluster Services for OpenShift Telemetry 運算子後,運算子會每 30 分鐘從叢集收集指標,並傳送至 Workload Manager。
或者,您也可以手動觸發運算子收集指標,並將指標傳送至 Workload Manager,不必等待 30 分鐘讓系統排定收集指標的時間。
如要手動觸發運算子收集指標,請完成下列步驟:
開啟終端機。
找出執行中的 Pod 名稱:
POD_NAME=$(oc get pods -l app.kubernetes.io/name=workloadagent-operator --field-selector=status.phase=Running -o=name)觸發運算子收集及傳送指標:
oc debug -t $POD_NAME -- /openshift-docker-entrypoint.sh