为 OpenShift 集群部署 日志记录代理 v1.6.x
您可以使用 Helm 图表来部署 日志记录代理 v1.6.x,以便从 OpenShift 群集收集基础架构和应用程序日志并将其路由到 IBM Cloud Logs 实例。
您还可以使用 Terraform IBM 模块 (TIM) 在支持的 集群上部署和配置日志代理。日志记录代理 在支持的 OpenShift 集群上部署和配置日志代理。 该模块通过使用基础架构即代码( IaC )自动化,自动完成基于 Helm 的部署和关键配置设置。
请完成以下步骤,在 OpenShift 集群上部署代理:
准备工作
步骤 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 scc: # true here enables creation of Security Context Constraints in Openshift create: true -
使用特定于您环境的值更新yaml文件中的字段。
Helm 图表 所需参数 字段名称 描述 image.version部署的代理版本 请参阅步骤1 clusterName集群的名称——这将把标签 kubernetes.cluster_name引入所有日志行env.ingestionHostIBM Cloud Logs 实例用于接收日志的公共或私有入口端点 env.ingestionPort入口端点端口
公共入口端点 =443
私有入口端点(VPE) =443
私有入口端点(CSE) =3443env.iamModeTrustedProfile或,具体取决于您在IAMAPIKey第一步中 选择的认证方法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),否则无需提供。scc.create请将 true添加到 Openshift 中,以创建安全约束
步骤 3. 安装 Helm 图表
如果您使用 iamMode 作为 IAMAPIKey,那么 apikey 需要存在于名为 logs-agent 的 Kubernetes 保密密钥中,密钥名称为 IAM_API_KEY。 在运行舵机安装程序时加入 --set secret.iamAPIKey=<your iamAPIKey> 选项,即可使用 Helm 图表创建秘密。 如果密码是手动创建的,或者您使用的是
iamMode=TrustedProfile,请不要选择此项。
完成以下步骤:
-
登录集群。
Red Hat OpenShift on IBM Cloud 与 (IAM)集成。IBM Cloud Identity and Access Management 通过 IAM,您可以使用其 IAM 身份对用户和服务进行认证,并通过访问角色和策略来授权操作。 当你通过 Red Hat OpenShift 控制台进行用户身份验证时,你的 IAM 身份会被用来生成 Red Hat OpenShift 登录令牌,你可以用它登录到命令行。 通过创建 IAM API 密钥或服务标识以用于
oc login命令,可以自动登录到集群。 更多信息,请参阅 访问 Red Hat OpenShift 集群。例如,完成 使用服务 ID 登录集群 中的步骤来登录您的集群。
-
执行一次 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>是与 步骤 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 -
在确认要创建的资源后,运行不带
--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命名空间。要列出集群中的命名空间,请运行以下命令:
oc get namespace您也可以运行以下命令来搜索
ibm-observe命名空间:oc get namespace | grep ibm-observe -
配置文件
logs-agent位于命名空间ibm-observe中。运行以下命令查看代理配置详情。
oc get configmap logs-agent -n ibm-observe您也可以使用以下命令:
oc describe configmaps logs-agent -n ibm-observe -
一个名为
logs-agent的守护进程位于ibm-observe命名空间中。运行以下命令查看守护进程集:
oc get ds -n ibm-observe -
使用以下命令检索代理商列表:
oc 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列显示所有豆荚的1/1,以及Running的STATUS。 请确认集群中的每个节点都准备好代理程序。要查看集群中可用的工作数量,可以运行以下命令:
oc 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 的日志,请运行
oc logs <POD_NAME>> -n ibm-observe
步骤 5. 验证日志是否已发送至目标目的地
完成以下步骤:
-
当您的代理配置正确后,您可以通过默认仪表板视图查看日志。 日志记录代理 标签使用包含集群名称的kubernetes对象记录日志。
kubernetes.cluster_name:<CLUSTER_NAME>您可以在您的 IBM Cloud Logs 实例中运行查询
kubernetes.cluster_name:<YOUR_CLUSTER_NAME>,以搜索集群生成的日志。