使用 Helm 图表为 Kubernetes 集群部署 日志记录代理
您可以使用 Helm 图表来部署 日志记录代理 v1.6.x,以便从 Kubernetes 群集收集基础架构和应用程序日志并将其路由到 IBM Cloud Logs 实例。
您还可以使用 Terraform IBM 模块 (TIM) 在支持的 集群上部署和配置日志代理。日志记录代理 在支持的 Kubernetes 集群上部署和配置日志代理。 该模块通过使用基础架构即代码( IaC )自动化,自动完成基于 Helm 的部署和关键配置设置。
完成以下步骤,在Kubernetes集群上部署代理:
准备工作
步骤 1. 定义代理的身份验证方法
为代理选择身份类型和验证方法。 然后,创建受信任的配置文件或 API 密钥。 向 IBM Cloud Logs 发送日志所需的角色是 Sender。
您可以使用服务 ID 或受信任配置文件作为代理与IBM® Cloud Logs服务进行身份验证时使用的身份。 有关更多信息,请参阅 为摄取授予 IAM 权限。
选择下列其中一个选项:
选项 1:使用受信任的配置文件进行身份验证
创建可信档案。 更多信息,请参阅 生成用于摄取的可信配置文件。
选项 2:使用服务 ID API 密钥进行身份验证
生成用于服务 ID 身份验证的 API 密钥。 有关更多信息,请参阅 生成用于摄取的 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_name引入所有日志行env.ingestionHostIBM Cloud Logs 实例用于接收日志的公共或私有入口端点 env.ingestionPort入口端点端口
公共入口端点 =443
私有入口端点(VPE) =443
私有入口端点(CSE) =3443env.iamModeTrustedProfile或IAMAPIKey基于 步骤 1 中选择的身份验证方法env.trustedProfileID如果 iamMode是TrustedProfile,请提供可信配置文件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 保密密钥中,密钥名称为 IAM_API_KEY。 在运行舵机安装程序时加入 --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>是 Helm 安装程序的名称 (logs-agent)<chart-version>是舵手图的版本。 Helm 图表版本应与代理图像版本一致。 有关详细信息,请参阅 Helm 图表版本。<PATH>是logs-values.yaml文件所在的目录路径。<APIKey-value>是与 ServiceID 步骤 1 中的设置 关联的 IAM 密码- 添加
--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 -
验证要创建的资源后,运行不包含
--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.运行以下命令查看守护进程集。
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>来搜索群集生成的日志。