AWS Distro for OpenTelemetry

EKS add-ons Advanced Configuration for ADOT (<v0.88.0-eksbuild.1)

EKS add-ons Advanced Configuration for ADOT (<v0.88.0-eksbuild.1)

IMPORTANT: The following documentation is for ADOT EKS add-on versions less than v0.88.0-eksbuild.1. If you are using a version greater than or equal to v0.88.0-eksbuild.1, then please refer to this updated Add-on Advanced Configuration documentation. Utilize the v0.88.0 Advanced configuration migration guide if you are upgrading from a pre v0.88.0 version.

EKS add-ons provides the ability to configure the installation of ADOT, during installation time. During add-on creation, or add-on updates, configurable values can be used to modify the add-on to your liking. Some examples include modifying resource requests or limits or adding tolerations to the deployed pod.

These configuration values are passed in as a JSON string to a --configuration-values option when creating or updating ADOT using EKS add-ons. you can either pass in a JSON string directly, or you can pass a file path to a JSON file as a parameter, see these docs for more information. For example, to set the cpu resource limit to 200m during add-on creation, the command would look like

aws eks create-addon \
--cluster-name <YOUR-EKS-CLUSTER-NAME> \
--addon-name adot \
--configuration-values "{\"manager\":{\"resources\":{\"limits\":{\"cpu\":\"200m\"}}}}" \
--resolve-conflicts=OVERWRITE

Note that, when passing in JSON directly, you must escape special characters, such as double quotes. This is reflected in the example above. Alternatively, you can pass in a file path as an argument to --configuration-values, reducing the need for special formatting. For example, the same command above using a file named configuration-values.json as a file path would look like

aws eks create-addon \
--cluster-name <YOUR-EKS-CLUSTER-NAME> \
--addon-name adot \
--configuration-values file://configuration-values.json \
--resolve-conflicts=OVERWRITE
// configuration-values.json
{
"manager": {
"resource": {
"limits": {
"cpu": "200m"
}
}
}
}

Each EKS add-on version of ADOT will have it’s own definition of what values are configurable. They are very similar, if not identical, between most add-on versions. To see what configurable values are available for an add-on version, use the command

aws eks describe-addon-configuration --addon-name adot --addon-version <DESIRED-ADDON-VERSION>

An example list of all configurable values, along with descriptions and examples, for the add-on version v0.66.0-eksbuild.1 can be found below. Additionally, with the addition of configurable values for ADOT using EKS add-ons, it is possible to pass in configuration values to allow an ADOT Collector to be deployed during add-on creation or add-on updates. This will be discussed in an upcoming section.

ValueDescriptionExample
replicaCountNumber of replicated pods to create."{"replicaCount": 1}"
manager.resources.limits.cpuModifies the cpu resource limit for the ADOT Operator pod.*"{"manager":{"resource":{"limits":{"cpu":"100m"}}}}"
manager.resources.limits.memoryModifies the memory resource limit for the ADOT Operator pod.*"{"manager":{"resource":{"limits":{"memory":"128Mi"}}}}"
manager.resources.requests.cpuModifies the cpu resource request for the ADOT Operator pod.*"{"manager":{"resource":{"requests":{"cpu":"100m"}}}}"
manager.resources.requests.memoryModifies the memory resource request for the ADOT Operator pod.*"{"manager":{"resource":{"requests":{"memory":"64Mi"}}}}"
manager.envSet environment variables for the ADOT Operator pod."{"manager":{"env":{}}}"
kubeRBACProxy.resources.limits.cpuModifies the cpu resource limit for the kubeRBACProxy container.*"{"kubeRBACProxy":{"resource":{"limits":{"cpu":"500m"}}}}"
kubeRBACProxy.resources.limits.memoryModifies the memory resource limit for the kubeRBACProxy container.*"{"kubeRBACProxy":{"resource":{"limits":{"memory":"128Mi"}}}}"
kubeRBACProxy.resources.requests.cpuModifies the cpu resource request for the kubeRBACProxy container.*"{"kubeRBACProxy":{"resource":{"requests":{"cpu":"5m"}}}}"
kubeRBACProxy.resources.requests.memoryModifies the memory resource request for the kubeRBACProxy container.*"{"kubeRBACProxy":{"resource":{"requests":{"memory":"64Mi"}}}}"
admissionWebhooks.namespaceSelectorAdd a namespaceSelector for admission webhooks."{"admissionWebhooks":{"namespaceSelector":{}}}"
admissionWebhooks.objectSelectorAdd a objectSelector for admission webhooks."{"admissionWebhooks":{"objectSelector":{}}}"
affinitySpecify node affinity for the ADOT Operator pod."{"affinity":{}}"
tolerationsSpecify tolerations to apply to the ADOT Operator pod."{"tolerations":[]}"
nodeSelectorSpecify nodeSelector for the ADOT Operator pod."{"nodeSelector":{}}"
collector.modeSpecifies what mode to deploy the Collector in. Modes are deployment, daemonset, statefulset, and sidecar."{"collector":{"mode":"deployment"}}"
collector.replicasSpecifies how many replicas of the Collector to deploy."{"collector":{"replicas":1}}"
collector.resources.limits.cpuModifies the cpu resource limit for the ADOT Collector pod.*"{"collector":{"resource":{"limits":{"cpu":"256m"}}}}"
collector.resources.limits.memoryModifies the memory resource limit for the ADOT Collector pod.*"{"collector":{"resource":{"limits":{"memory":"512Mi"}}}}"
collector.resources.requests.cpuModifies the cpu resource request for the ADOT Collector pod.*"{"collector":{"resource":{"requests":{"cpu":"64m"}}}}"
collector.resources.requests.memoryModifies the memory resource request for the ADOT Collector pod.*"{"collector":{"resource":{"requests":{"memory":"128Mi"}}}}"
collector.serviceAccount.createSpecify whether or not to create a service account for use with Collector deployment."{"collector":{"serviceAccount":{"create":true}}}"
collector.serviceAccount.nameSpecify a name for a service account for use with Collector deployment, either to create or a pre-existing service account."{"collector":{"serviceAccount":{"name":"aws-otel-collector"}}}"
collector.serviceAccount.annotationsSpecifies annotations for a service account for use with Collector deployment."{"collector":{"serviceAccount":{"annotations":{"eks.amazonaws.com/role-arn":"arn:aws:iam::000000000000:role/adot-collector"}}}}}"
collector.amp.enabledSpecify whether or not to enable Amazon Managed Prometheus as a destination for Collector deployment."{"collector":{"amp":{"enabled":true}}}"
collector.amp.remoteWriteEndpointSpecify a remote write endpoint for Amazon Managed Prometheus. Required if collector.amp.enabled is true."{"collector":{"amp":{"remoteWriteEndpoint":"https://aps-workspaces.us-west-2.amazonaws.com/workspaces/ws-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/api/v1/remote_write"}}}"
collector.cloudwatch.enabledSpecify whether or not to enable Amazon CloudWatch as a destination for Collector deployment."{"collector":{"cloudwatch":{"enabled":true}}}"
collector.xray.enabledSpecify whether or not to enable AWS X-Ray as a destination for Collector deployment."{"collector":{"xray":{"enabled":true}}}"

*Note that in fargate, resource requests and limits must be equal, see this troubleshooting guide for more information.

Previous Topic: Installation

Next topics:

Add-on Advanced Configuration: Collector Deployment (<v0.88.0-eksbuild.1)

Collector Configuration Introduction

Deploy a sample app

Advanced Collector Configuration for Amazon Managed Prometheus