Skip to content

Install Datakit Operator


Concepts

Field Description
namespaces, selectors enabled_namespaces and enabled_labelselectors are exclusive to ddtrace. They are arrays of objects that require specifying namespace and language. The relationship between arrays is "OR". Currently, only java is supported for language.
If a Pod satisfies both the enabled_namespaces rule and the enabled_labelselectors rule, the enabled_labelselectors configuration takes precedence.

Enable DDTrace Collector

Modify the datakit.yaml file, and append DDTrace to the default enabled collector configuration.

 - name: ENV_DEFAULT_ENABLED_INPUTS
   value: cpu,disk,diskio,mem,swap,system,hostobject,net,host_processes,container,ddtrace

Restart the application:

kubectl apply -f datakit.yaml

Install DataKit Operator

Datakit Operator can automate the deployment of applications and services, automatically inject the DDTrace SDK, and instrument them upon startup.

Click to download the latest datakit-operator.yaml file:

$ kubectl create namespace datakit
$ wget https://static.truewatch.com/datakit-operator/datakit-operator.yaml

Update Configuration File

The Datakit Operator configuration is in JSON format, stored separately as a ConfigMap in Kubernetes, and loaded into the container via environment variables.

{
    "server_listen": "0.0.0.0:9543",
    "log_level":     "info",
    "admission_inject": {
        "ddtrace": { 
           "enabled_namespaces":     [],
           "enabled_labelselectors": [],
           "images": {
                "java_agent_image":   "pubrepo.truewatch.com/datakit-operator/dd-lib-java-init:latest"
            },
            "envs": {
              "DD_JMXFETCH_STATSD_HOST": "datakit-service.datakit.svc",
              "DD_JMXFETCH_STATSD_PORT": "8125",
              "POD_NAME": "{fieldRef:metadata.name}",
              "POD_NAMESPACE": "{fieldRef:metadata.namespace}",
              "NODE_NAME": "{fieldRef:spec.nodeName}",
              "DD_SERVICE": "{fieldRef:metadata.labels['service']}",
              "DD_AGENT_HOST": "datakit-service.datakit.svc",
              "DD_TRACE_AGENT_PORT": "9529",
              "DD_TAGS": "pod_name:$(POD_NAME),pod_namespace:$(POD_NAMESPACE),host:$(NODE_NAME)"
            }
        },
        "logfwd": {
            "options": {
                "reuse_exist_volume": "false"
            },
            "images": {
                "logfwd_image": "pubrepo.truewatch.com/datakit/logfwd:1.28.1"
            }
        }
    }
}

Parameter configuration:

  1. service: Service name;
  2. env: Application service environment information;
  3. Custom DataKit listening address. If not set, it follows the default address;
  4. Collect Profiling data: Enabling this allows viewing more runtime information of the application;
  5. Configure namespaces;
  6. Configure selectors.

Execute Installation Command

kubectl apply -f datakit-operator.yaml

Restart Application

After installation is complete, restart the application Pod.