使用Helm圖表為Kubernetes叢集部署記載代理程式
您可以使用 Helm 圖表部署 記載代理程式 v1.6.x,從 Kubernetes 群集收集基礎結構和應用程式日誌,並將其路由至 IBM Cloud Logs 實例。
您也可以使用 Terraform IBM 模組 (TIM) 在支援的 集群上部署和配置日誌代理。記載代理程式 在支援的 Kubernetes 集群上部署和設定日誌代理。 本模組透過使用 Infrastructure as Code ( IaC ) 自動化功能,自動執行基於 Helm 的部署和關鍵組態設定。
完成以下步驟在Kubernetes叢集上部署代理程式:
開始之前
步驟 1. 定義代理程式的身份驗證方法
選擇代理程式的身份類型和身份驗證方法。 然後,建立可信任設定檔或 API 金鑰。 將日誌傳送到IBM Cloud Logs所需的角色是 Sender。
您可以使用服務 ID 或受信任的設定檔作為代理程式用於透過IBM® Cloud Logs服務進行驗證的身份。 有關更多信息,請參閱 授予 IAM 攝取權限。
選擇下列其中一個選項:
選項 1:使用可信任設定檔進行身份驗證
建立受信任的設定檔。 有關更多信息,請參閱 生成用於攝取的可信配置文件。
選項 2:使用服務 ID API 金鑰進行驗證
產生 API 金鑰用於服務 ID 驗證。 有關更多信息,請參閱 生成用於攝取的 API 金鑰。
步驟 2. 為記載代理程式配置Helm圖表值文件
請完成下列步驟:
-
建立一個名為
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 -
使用特定於您的環境的值更新 yaml 檔案中的欄位。
Helm圖表所需參數 欄位名稱 說明 image.version要部署的代理版本 ,請參閱步驟 1 clusterName群集名稱 - 這將在所有日誌行中引入標籤 kubernetes.cluster_nameenv.ingestionHostIBM Cloud Logs 用於接收記錄的公共或私有入口端點 env.ingestionPort入口端點連接埠
公共入口端點 =443
私人入口端點(VPE) =443
私人入口端點(CSE) =3443env.iamModeTrustedProfile或IAMAPIKey基於 步驟 1 中選擇的身份驗證方法env.trustedProfileID如果 iamMode是TrustedProfile,則提供 Trusted Profile ID,否則不需要(例如:Profile-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。env.iamEnvironment指定正確的 IAM 驗證端點。 有效值為 Production,PrivateProduction,或Custom。 如果省略,預設值為Production。env.iamHost如果 iamEnvironment是Custom,則提供 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,則不要包含此選項。
請完成下列步驟:
-
登入群集。 有關更多信息,請參閱 訪問您的集群。
-
執行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 -
驗證要建立的資源後,然後執行不含
--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>其中:
步驟 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 wideNAME 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,其中STATUS為Running。 驗證代理 Pod 是否已為叢集中的每個節點做好準備。要檢查叢集中有多少可用的工作線程,您可以執行以下命令:
kubectl get nodesNAME 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. 驗證日誌是否已傳送到您的目標目的地
請完成下列步驟:
-
正確配置代理程式後,您可以透過預設儀表板視圖查看日誌。 記載代理程式使用包含叢集名稱的 kubernetes 物件來標記日誌記錄。
kubernetes.cluster_name:<CLUSTER_NAME>您可以在IBM Cloud Logs實例中執行查詢
kubernetes.cluster_name:<YOUR_CLUSTER_NAME>來搜尋叢集產生的日誌。