为 OpenShift 集群部署 日志记录代理 v1.6.x

您可以使用 Helm 图表来部署 日志记录代理 v1.6.x,以便从 OpenShift 群集收集基础架构和应用程序日志并将其路由到 IBM Cloud Logs 实例。

您还可以使用 Terraform IBM 模块 (TIM) 在支持的 集群上部署和配置日志代理。日志记录代理 在支持的 OpenShift 集群上部署和配置日志代理。 该模块通过使用基础架构即代码( 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 版本的代理,则 Helm 图表的版本为 1.3.0。

步骤 1. 定义代理商的身份验证方法

选择代理的身份类型和认证方法。 然后,创建一个可信的个人资料或一个API密钥。 发送日志至 IBM Cloud Logs 所需的邮箱地址是 Sender

您可以使用服务 ID 或可信配置文件作为身份,供代理用于 IBM® Cloud Logs 服务身份验证。 更多信息,请参阅 授予IAM权限以进行数据提取

选择下列其中一个选项:

选项1:使用可信配置文件进行身份验证

创建可信的个人资料。 更多信息,请参阅 生成用于提取的可信配置文件

选项2:使用服务ID API密钥进行认证

生成用于服务 ID 身份验证的 API 密钥。 更多信息,请参阅 生成用于提取的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 第一步中 选择的认证方法
    env.trustedProfileID 如果 iamModeTrustedProfile,请提供可信配置文件ID,否则无需提供(例如:Profile-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx )。
    env.iamEnvironment 指定正确的IAM认证终端。 有效值是 ProductionPrivateProductionCustom。 如果省略,默认值为 Production
    env.iamHost 如果 iamEnvironmentCustom,请提供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,请不要选择此项。

完成以下步骤:

  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 密钥或服务标识以用于 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> 是 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
    
  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> 是 Helm 安装程序的名称 (logs-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
    
  • 配置文件 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 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 列显示所有豆荚的 1/1,以及 RunningSTATUS。 请确认集群中的每个节点都准备好代理程序。

    要查看集群中可用的工作数量,可以运行以下命令:

    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 实例的网络用户界面

  2. 当您的代理配置正确后,您可以通过默认仪表板视图查看日志。 日志记录代理 标签使用包含集群名称的kubernetes对象记录日志。

    kubernetes.cluster_name:<CLUSTER_NAME>
    

    您可以在您的 IBM Cloud Logs 实例中运行查询 kubernetes.cluster_name:<YOUR_CLUSTER_NAME>,以搜索集群生成的日志。