使用Helm圖表為Kubernetes叢集部署記載代理程式

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

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

完成以下步驟在Kubernetes叢集上部署代理程式:

開始之前

  • 確保您有權存取Kubernetes集群,並有權建立命名空間和部署代理程式。

  • 安裝下列 CLI:

    • 用於登入IBM Cloud並管理IBM Cloud服務(例如建立 API 金鑰)的IBM Cloud CLI。

    • Kubernetes CLI,藉由使用 kubectl 指令來管理叢集。 進一步瞭解

  • 了解 記載代理程式

  • 檢查可用的代理版本。 有關詳細信息,請參閱 檢查可用的代理版本。 請注意,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
    
  2. 使用特定於您的環境的值更新 yaml 檔案中的欄位。

    Helm圖表所需參數
    欄位名稱 說明
    image.version 要部署的代理版本 ,請參閱步驟 1
    clusterName 群集名稱 - 這將在所有日誌行中引入標籤 kubernetes.cluster_name
    env.ingestionHost IBM Cloud Logs 用於接收記錄的公共或私有入口端點
    env.ingestionPort 入口端點連接埠
    公共入口端點 = 443
    私人入口端點(VPE) = 443
    私人入口端點(CSE) = 3443
    env.iamMode TrustedProfileIAMAPIKey 基於 步驟 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),否則不需要。

步驟 3. 安裝 Helm 圖表

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

請完成下列步驟:

  1. 登入群集。 有關更多信息,請參閱 訪問您的集群

  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 Chart 的版本。 Helm圖表版本應與代理映像版本相符。 有關更多信息,請參閱 Helm圖表版本
    • <PATH>logs-values.yaml 檔案所在的目錄路徑。
    • <APIKey-value>與步驟 1 中設定 的ServiceID關聯的 IAM apikey
    • 新增 --hide-secret 以隱藏 API 金鑰,使其在命令運行後不顯示在輸出資料中。

    如果您想在本機檢查 helm 圖表內容,可以使用以下命令將 helm 圖表下載到您的電腦: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. 驗證要建立的資源後,然後執行不含 --dry-run 選項的Helm安裝

    如果您使用 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 Chart 的版本。 Helm圖表版本應與代理映像版本相符。 有關更多信息,請參閱 Helm圖表版本
    • <PATH>logs-values.yaml 檔案所在的目錄路徑。
    • <APIKey-value>與步驟 1 中設定 的ServiceID關聯的 IAM apikey

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

部署代理程式後,檢查是否建立了以下資源:

  • ibm-observe 命名空間。

    執行以下命令列出叢集中的命名空間,並檢查 logger-agent 顯示狀態為活動。

    kubectl get namespace
    
  • 命名 ibm-observe 中的配置映射 logs-agent

    執行以下命令查看代理配置詳細資訊。

    kubectl get configmap logs-agent -n ibm-observe
    

    您也可以使用:

    kubectl describe configmaps logs-agent -n ibm-observe
    
  • 命名空間 ibm-observe 中的守護程式集 logs-agent

    執行下列指令檢視 daemonset。

    kubectl get ds -n ibm-observe
    
  • 驗證代理程式是否已啟動:

    kubectl -n ibm-observe get ds logs-agent
    
  • 使用以下命令檢索代理 pod 列表:

    kubectl 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/1,其中 STATUSRunning。 驗證代理 Pod 是否已為叢集中的每個節點做好準備。

    要檢查叢集中有多少可用的工作線程,您可以執行以下命令:

    kubectl 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 的日誌,請執行 kubectl logs <POD_NAME>> -n ibm-observe

    若要檢查已部署的舵圖,請執行 helm list -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> 來搜尋叢集產生的日誌。