内置CRD模板工具

更新时间:
复制 MD 格式

内置CRD(custom resource definition)模板工具内置了一系列采集能力,通过此工具,可以快速集成标准化采集能力并通过CRD管理采集配置的生命周期,避免控制台配置繁琐步骤。

前提条件

采集Kubernetes集群内Logs、Metrics、Trace数据,需要先安装Logtail组件。Logtail组件安装方式请参见:

安装CRD 模板工具

操作方式

描述

集群外安装

集群外部安装要求登录账户存在~/.kube/config配置文件(可以使用kubectl命令),且配置文件具有目标集群操作权限。

集群内安装

容器内安装基于已安装组件alibaba-log-controller权限操作CRD 创建,适用于无~/.kube/config配置文件或网络问题无法连接时进行操作

集群外安装

  1. 登录集群,下载模板工具。

    • 中国地区

      curl https://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubernetes/crd-tool.tar.gz -o /tmp/crd-tool.tar.gz
    • 海外地区

      curl https://logtail-release-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/kubernetes/crd-tool.tar.gz -o /tmp/crd-tool.tar.gz
  2. 安装模板工具,安装成功后会在当前文件夹生成sls-crd-tool工具。

    tar -xvf /tmp/crd-tool.tar.gz -C /tmp &&chmod 755 /tmp/crd-tool/install.sh  && sh -x  /tmp/crd-tool/install.sh
  3. 执行./sls-crd-tool list命令验证工具是否安装成功,当存在返回值时,说明工具安装成功。

容器内安装

  1. 登录集群,进入alibaba-log-controller容器。

    kubectl get pods -n kube-system -o wide |grep alibaba-log-controller | awk -F ' ' '{print $1}'
    kubectl exec -it {pod} -n kube-system bash
    cd ~
  2. 下载模板工具。

    • 如集群内可以下载公网资源,操作方法如下:

      • 中国地区

        curl https://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubernetes/crd-tool.tar.gz -o /tmp/crd-tool.tar.gz
      • 海外地区

        curl https://logtail-release-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/kubernetes/crd-tool.tar.gz -o /tmp/crd-tool.tar.gz
    • 如集群内无法下载公网资源,可以集群外下载,使用kubectl cp <source> <destination>或者ACK上传等功能将模板工具传输至上述容器。

  3. 安装模板工具,安装成功后会在当前文件夹生成sls-crd-tool工具。

    tar -xvf /tmp/crd-tool.tar.gz -C /tmp &&chmod 755 /tmp/crd-tool/install.sh  && sh -x  /tmp/crd-tool/install.sh
  4. 执行./sls-crd-tool list命令验证工具是否安装成功,当存在返回值时,说明工具安装成功。

使用模板工具创建采集配置

指令构成

./sls-crd-tool <全局参数> <操作指令> <指令参数>

全局参数

参数

功能

--version或-v

查看工具版本。

--help或-h

查看工具帮助文档。

--kubepath path或-k path

指定kube config地址,仅集群外操作生效,默认参数为 ~/.kube/config

--inner或-i

集群内操作为在组件alibaba-log-controlle的容器内操作(此容器具有操作aliyunlogconfigs CRD的权限)。如果无机器存在kube config操作权限,推荐容器内安装并操作。默认参数为false。

--language language或-l language

支持zh(中文) 或en(英文) 参数,默认参数为zh。

操作指令

  • list

    • 功能:查看内置模板列表

    • 指令:

      ./sls-crd-tool list
    • 样例:

      ./sls-crd-tool -l en list
      $./sls-crd-tool -l en list
      +---------------------+------------------------+---------------------------------------------------------------------------------+
      |        Name         | Generated CRD Number |                                  Description                                    |
      +---------------------+------------------------+---------------------------------------------------------------------------------+
      |    autometrics      |           1            |          auto collect pod metrics with `prometheus.io.scrape:true` flag          |
      |    nodemetrics      |           2            |    auto collect node metrics (kubemetrics already includes this feature)          |
      |    kubemetrics      |           5            | auto collect kubernetes metrics, including node, kubelet, apiserver and other metrics. |
      | skywalking-v2-trace |           1            |    supports receiving skywalking v2 data. The default port is 21800.              |
      | skywalking-v3-trace |           1            |    supports receiving skywalking v3 data. The default port is 21800.              |
      +---------------------+------------------------+---------------------------------------------------------------------------------+
  • get

    • 功能:下载模板配置, 模板配置文件将保存为template-<NAME.yaml>文件。

    • 指令:

      ./sls-crd-tool get

    • 指令参数:

      • --help或-h:查看当前指令文档。

      • --gen或-g:生成模板文件,默认参数为true。

      • --output value或-o value输出文件格式,支持JSONyaml,默认参数为yaml。

    • 样例:

      • 下载模板配置文件

        ./sls-crd-tool -l en get autometrics
        $./sls-crd-tool -l en get autometrics
        name: autometrics
        parameter:
            # Auto bind installed MachineGroup, don't edit it.
            MachineGroup: auto
            InstanceID: <REQUIRED>
            # Auto means use default namespace.
            NameSpace: auto
            # Auto means use default project.
            Project: auto
            # Auto means use default cluster id.
            ClusterID: auto
        Modify the content of the template file template-autometrics.yaml and fill in the required parameters. For example, if the parameter is auto, you can use `< command> apply -f template-autometrics.yaml --create=false` to preview the default parameter output
      • 查看模板配置文件

        cat template-autometrics.yaml
        $cat template-autometrics.yaml
        name: autometrics
        parameter:
            # Auto bind installed MachineGroup, don't edit it.
            MachineGroup: auto
            InstanceID: <REQUIRED>
            # Auto means use default namespace.
            NameSpace: auto
            # Auto means use default project.
            Project: auto
            # Auto means use default cluster id.
            ClusterID: auto
      • 修改模板配置文件,请参考下表:

        可修改的模板参数分为2种,如下所述,REQUIRED字段为必填字段,auto字段可以按实际需求修改。

        参数类型

        说明

        auto

        支持自动填充,具体填充参数为安装指令时设置,目前支持自动填充的值:ClusterID、MachineGroup、NameSpace、Project。

        重要

        MachineGroup请保持auto 参数,模板会自动根据工作模型自动选择正确机器组,避免因错误机器组导致的采集重复等问题。

        REQUIRED

        REQUIRED 参数为当前CRD 模板必须填写的参数,请配置为使用场景参数值。

  • apply

    • 功能: 应用模板配置,创建真实aliyunlogconfigs CRD 资源。

    • 指令:

      ./sls-crd-tool apply -f <FILE>
    • 指令参数:

      • --file value或-f value : get指令生成的模板文件路径。

      • --create或-c :创建真实aliyunlogconfigs CRD资源,默认参数为true。

      • --namespace value或-n value:选择组件空间,当集群安装多个Logtail组件时生效,默认参数为空。

      • --help或-h : 查看当前指令文档。

    • 样例:

      • 验证参数合法性

        说明

        当前模板配置文件中含有REQUIRED参数未填充。

        ./sls-crd-tool apply -f template-autometrics.yaml --caeate=false -n alibabacloud-sls-new
        ./sls-crd-tool apply -f template-autometrics.yaml --create=false -n alibabacloud-sls-new
        name: autometrics
        parameter:
            ClusterID: custom-cluster-ljp
            InstanceID: <REQUIRED>
            MachineGroup: k8s-group-custom-cluster-ljp
            NameSpace: alibabacloud-sls-new
            Project: k8s-log-c4551a67027d248bfb049765de783e647
      • 创建真实aliyunlogconfigsCRD资源

        ./sls-crd-tool apply -f template-autometrics.yaml -n alibabacloud-sls-new
        ~ ./sls-crd-tool  apply -f template-autometrics.yaml  -n alibabacloud-sls-new
        name: autometrics
        parameter:
            ClusterID: custom-cluster-ljp
            InstanceID: sls-mall
            MachineGroup: k8s-group-custom-cluster-ljp
            NameSpace: alibabacloud-sls-new
            Project: k8s-log-c4551a67027d248bfb049765de783e647
        Success
        kubectl get aliyunlogconfigs.log.alibabacloud.com -n alibabacloud-sls-new

        执行成功后,可在返回结果中看到新创建的 sls-mall-k8s-auto-metrics 资源。

        NAME                                  AGE
        sls-mall-k8s-auto-metrics             47s
        sls-mall-skywalking-v2-receiver       111m
        taiye-instance-id-k8s-auto-metrics    155m