為 OpenShift 集群部署 記載代理程式 v1.6.x

您可以使用 Helm 圖表部署 記載代理程式 v1.6.x,從 OpenShift 群集收集基礎結構和應用程式日誌,並將其路由至 IBM Cloud Logs 實例。

您也可以使用 Terraform IBM 模組 (TIM) 在支援的 集群上部署和配置日誌代理。記載代理程式 在支援的 OpenShift 集群上部署和設定日誌代理。 本模組透過使用 Infrastructure as Code ( IaC ) 自動化功能,自動執行基於 Helm 的部署和關鍵組態設定。

完成下列步驟,即可在 OpenShift 集群上部署代理:

開始之前

  • 確保您可以存取 Red Hat OpenShift on IBM Cloud ( OpenShift ) 叢集,並具有建立命名空間和部署代理程式的權限。

  • 安裝下列 CLI:

    • IBM Cloud CLI 來登入 IBM Cloud 並管理 IBM Cloud 服務,例如建立 API 金鑰。

    • Openshift CLI 可從命令列管理群集。 進一步瞭解

    • 最新發行的第 3 版 Helm CLI

  • 閱讀 記載代理程式。

  • 檢查可用的代理版本。 如需詳細資訊,請參閱 檢查可用的代理版本。 請注意,Helm 圖表的版本將與代理程式的版本相符 - 例如,如果您使用的是版本 1.3.0 的代理程式,則該版本附有版本 1.3.0 的 Helm 圖表。

步驟 1. 定義代理的驗證方法

選擇代理的身分類型和驗證方法。 然後,建立受信任的設定檔或 API 金鑰。 將日誌傳送至 IBM Cloud Logs 所需的角色是 Sender

您可以使用服務 ID 或受信任的設定檔作為代理用來與 IBM® Cloud Logs 服務驗證的身分。 如需詳細資訊,請參閱 授予攝取的 IAM 權限

選擇下列其中一個選項:

選項 1:使用受信任的設定檔進行驗證

建立受信任的設定檔。 如需更多資訊,請參閱 產生可信任的設定檔以供擷取

選項 2:使用服務 ID API 金鑰驗證

產生 API 金鑰用於服務 ID 驗證。 如需詳細資訊,請參閱 產生 API 金鑰以進行擷取

步驟 2. 設定 Helm 圖表值檔案為 記載代理程式

請完成下列步驟:

  1. 建立一個名為 logs-values.yaml 的檔案,內容如下:

    此檔案包含特定於您部署的組態。

    metadata:
      name: "logs-agent"
    image:
      version: "1.6.1"  # required
    
    clusterName: "ENTER_CLUSTER_NAME"     # Enter the name of your cluster. This information is used to improve the metadata and help with your filtering.
    
    env:
      # ingestionHost is a required field. For example:
      # ingestionHost: "<logs instance>.ingress.us-east.logs.cloud.ibm.com"
      ingestionHost: "" # required
    
      # If you are using private CSE proxy, then use port number "3443"
      # If you are using private VPE Gateway, then use port number "443"
      # If you are using the public endpoint, then use port number "443"
      ingestionPort: "" # required
    
      iamMode: "TrustedProfile"
      # trustedProfileID - trusted profile id - required for iam trusted profile mode
      trustedProfileID: "Profile-yyyyyyyy-xxxx-xxxx-yyyy-zzzzzzzzzzzz" # required if iamMode is set to TrustedProfile
    
    scc:
      # true here enables creation of Security Context Constraints in Openshift
      create: true
    
  2. 使用特定於您環境的值更新 yaml 檔案中的欄位。

    Helm 圖表所需參數
    欄位名稱 說明
    image.version 要部署的代理版本 ,請參閱步驟 1
    clusterName 群集名稱 - 這將在所有日誌行中引入標籤 kubernetes.cluster_name
    env.ingestionHost IBM Cloud Logs 用於接收記錄的公共或私有入口端點
    env.ingestionPort 入口端點連接埠
    公共入口端點 = 443
    私人入口端點(VPE) = 443
    私人入口端點(CSE) = 3443
    env.iamMode TrustedProfile 或 (基於 IAMAPIKey 步驟 1 中選擇的驗證方法
    env.trustedProfileID 如果 iamModeTrustedProfile,則提供 Trusted Profile ID,否則不需要(例如:Profile-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx )。
    env.iamEnvironment 指定正確的 IAM 驗證端點。 有效值為 Production, PrivateProduction,或 Custom。 如果省略,預設值為 Production
    env.iamHost 如果 iamEnvironmentCustom,則提供 IAM 主機 (例如:private.eu-de.iam.cloud.ibm.com),否則不需要。
    scc.create 設定為 true 以便在 Openshift 中建立安全限制

步驟 3. 安裝 Helm 圖表

如果您使用 iamMode 作為 IAMAPIKey,那麼 apikey 需要出現在名為 logs-agent 的 Kubernetes secret 中,其金鑰名稱為 IAM_API_KEY。 在執行 helm 安裝時,可加入 --set secret.iamAPIKey=<your iamAPIKey> 選項,使用 Helm 圖表建立秘密。 如果秘密是手動建立的,或者如果您使用 iamMode=TrustedProfile,則請勿包含此選項。

請完成下列步驟:

  1. 登入群集。

    Red Hat OpenShift on IBM Cloud 與 (IAM) 整合。IBM Cloud Identity and Access Management 使用 IAM,您可以使用其 IAM 身分對使用者和服務進行鑑別,並透過存取角色和原則來授權動作。 當您透過 Red Hat OpenShift 主控台驗證使用者身份時,您的 IAM 身份會用來產生 Red Hat OpenShift 登入標記,您可以使用該標記登入命令列。 藉由建立 IAM API 金鑰或服務 ID 以用於 oc login 指令,可以自動登入到叢集。 如需詳細資訊,請參閱 存取 Red Hat OpenShift 叢集

    例如,完成「使用服務 ID 登入群集」中的步驟,即可登入群集。

  2. 執行 Helm 試運行,以查看 Helm 圖將會建立的資源。

    如果您使用 iamMode = TrustedProfile,那麼完整的指令為:

    helm install <install-name> --dry-run oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace
    

    如果您使用 iamMode = IAMAPIKey,那麼完整的指令為:

    helm install <install-name> --dry-run oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace --set secret.iamAPIKey=<APIKey-value> --hide-secret
    

    其中:

    • <install-name> 是 安裝的名稱 ( ) Helmlogs-agent
    • <chart-version> 是舵圖的版本。 Helm 圖表版本應與代理映像版本相符。 如需詳細資訊,請參閱 Helm 圖表版本
    • <PATH> 是 檔案所在的目錄路徑。logs-values.yaml
    • <APIKey-value> 是與 步驟 1 中的ServiceID 設定關聯的 IAM apikey
    • 新增 --hide-secret 以隱藏 API 金鑰,避免命令執行後在輸出資料中顯示。

    如果您想在本機檢視舵圖內容,您可以使用指令將舵圖下載到您的電腦:helm pull oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version>. 下載的 tgz 檔案包含圖表內容。

    例如,您可以從 logs-values.yaml 檔案所在的目錄執行下列指令:

    helm install logs-agent --dry-run oci://icr.io/ibm-observe/logs-agent-helm --version 1.6.0 --values ./logs-values.yaml -n ibm-observe --create-namespace --set secret.iamAPIKey=<secret> --hide-secret
    
  3. 待建立的資源經過驗證後,執行 Helm 安裝,但不包含 --dry-run 選項

    如果您使用 iamMode = TrustedProfile,那麼完整的指令為:

    helm install <install-name>  oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace
    

    如果您使用 iamMode = IAMAPIKey,那麼完整的指令為:

    helm install <install-name> oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace --set secret.iamAPIKey=<APIKey-value>
    

    其中:

    • <install-name> 是 安裝的名稱 ( ) Helmlogs-agent
    • <chart-version> 是舵圖的版本。 Helm 圖表版本應與代理映像版本相符。 如需詳細資訊,請參閱 Helm 圖表版本
    • <PATH> 是 檔案所在的目錄路徑。logs-values.yaml
    • <APIKey-value> 是與 步驟 1 中的ServiceID 設定關聯的 IAM apikey

步驟 4. 驗證代理程式已成功部署

部署代理程式時,請檢查是否已建立下列資源:

  • ibm-observe 命名空間。

    若要列出群集中的命名空間,請執行下列指令:

    oc get namespace
    

    您也可以執行下列指令搜尋 ibm-observe 命名空間:

    oc get namespace | grep ibm-observe
    
  • 命名空間 ibm-observe 中的配置映射 logs-agent

    執行下列指令檢視代理配置詳細資訊。

    oc get configmap logs-agent -n ibm-observe
    

    您也可以使用下列指令:

    oc describe configmaps logs-agent -n ibm-observe
    
  • 命名空間 ibm-observe 中的 daemonset logs-agent

    執行下列指令檢視 daemonset:

    oc get ds -n ibm-observe
    
  • 使用下列指令擷取代理 pod 清單:

    oc get pods -n ibm-observe -o wide
    
    NAME                  READY   STATUS    RESTARTS   AGE    IP              NODE           NOMINATED NODE   READINESS GATES
    logs-agent-4lwvt      1/1     Running   0          2d5h   172.17.61.181   192.168.16.4   <none>           <none>
    logs-agent-g7z87      1/1     Running   0          2d5h   172.17.0.48     192.168.32.4   <none>           <none>
    logs-agent-nw56s      1/1     Running   0          2d5h   172.17.32.232   192.168.0.10   <none>           <none>
    

    READY 欄顯示所有 pod 的 1/1STATUSRunning。 確認群集中的每個節點都已準備好代理 pod。

    若要檢查群集中有多少工作人員可用,您可以執行下列指令:

    oc get nodes
    
    NAME           STATUS   ROLES           AGE   VERSION
    192.168.0.10   Ready    master,worker   8d    v1.20.0+558d959
    192.168.32.4   Ready    master,worker   8d    v1.20.0+558d959
    192.168.16.4   Ready    master,worker   8d    v1.20.0+558d959
    

    這兩個清單中每個項目的數量都需要相同,您可以將節點名稱中的 IP 位址與 Pod 清單 NODE 列中的值相匹配。

    如果您的節點不是以 IP 命名,您可以附加 -o wide 選項,然後比較 INTERNAL-IP 列中的值。

    若要檢視 Pod 的日誌,請執行 oc logs <POD_NAME>> -n ibm-observe

步驟 5. 驗證日誌是否傳送到您的目標目的地

請完成下列步驟:

  1. 前往 IBM Cloud Logs 實例的 Web UI...

  2. 當您的代理程式設定正確時,您可以透過預設的儀表板檢視查看記錄。 記載代理程式 使用包含群集名稱的 kubernetes 物件標記日誌記錄。

    kubernetes.cluster_name:<CLUSTER_NAME>
    

    您可以在 IBM Cloud Logs 範例中執行查詢 kubernetes.cluster_name:<YOUR_CLUSTER_NAME>,搜尋叢集產生的日誌。