This page provides instructions on installing Dynatrace Operator with cloud-native full-stack configuration to a Kubernetes cluster.
Before installing Dynatrace on your Kubernetes cluster, ensure that you meet the following requirements:
kubectl CLI is connected to the Kubernetes cluster that you want to monitor.kubectl or oc commands. If you don't use the cluster-admin cluster role, see deployment permissions for the required permissions.You must allow egress for Dynatrace pods (default: Dynatrace namespace) to your Dynatrace environment URL.
For OpenShift Dedicated, you need the cluster-admin role.
Helm installation Use Helm version 3.
See supported Kubernetes/OpenShift platform versions and distributions.
By default, Dynatrace Operator injects OneAgent in all namespaces, but you can configure it to monitor only specific namespaces and exclude others. For details, see Configure monitoring for namespaces and pods.
Configuring SCC is required for OpenShift for cloudNativeFullStack and applicationMonitoring with CSI driver deployments.
When Dynatrace Operator deploys cloud-native full-stack monitoring, it pulls the OneAgent image (for example, <your-environment-domain>/linux/oneagent:<version>-raw) that your Managed cluster builds on demand from two separate installation packages:
DOCKER_AGENT in the Cluster API), which provides the base image that the cluster combines with the OneAgent into the final imageBoth packages must be present on the cluster, and their minor versions must be compatible.
| Minor version relationship | Support |
|---|---|
OneAgent and Docker OneAgent have the same minor version | Recommended |
OneAgent minor version is higher than Docker OneAgent minor version | Supported |
Docker OneAgent minor version is higher than OneAgent minor version | Not supported |
The Docker OneAgent package isn't counted as a standard or target OneAgent version. You pull by the OneAgent version, and the Docker OneAgent package only provides the matching base image.
Do not exclude or delete the Docker OneAgent installation package for a OneAgent version that's still in use, including through automated cleanup. If the matching Docker OneAgent package is absent, the cluster cannot build the OneAgent image and your pods fail to pull it (for example, ErrImagePull ... not found). Manage these packages in Cluster Management Console > Settings > Automatic update > Installation packages.
Choose one of the installation methods that best suits your needs.
Dynatrace version 1.290+
Go to Kubernetes.
Select Connect automatically via Dynatrace Operator in the header of the Kubernetes cluster page.

Enter the following details.
Name: Defines the display name of your Kubernetes cluster within Dynatrace. Additionally, this name will be used as a prefix for naming Dynatrace-specific resources inside your Kubernetes cluster, such as DynaKube (custom resource), ActiveGate (pod), OneAgents (pods), and as a name for the secret holding your tokens.
Recommended Group: Defines a group used by various Dynatrace settings, including network zone, ActiveGate group, and host group. If not set, defaults or empty values are used.
Dynatrace Operator token: Select Create token or enter the API token you previously created. For more information, see Access tokens and permissions.
OptionalData ingest token: Select Create token or enter the API token you previously created. For more information, see Access tokens and permissions.
Optional Decide whether you want the Dynatrace Operator to disable the verification of the Dynatrace SSL certificate.
This is relevant if you are using Dynatrace Managed with self-signed certificates.
Select Download dynakube.yaml. Copy the code block created by Dynatrace created and run it in your terminal. Ensure you execute the commands in the same directory where you downloaded the YAML or adapt the command to link to the location of the YAML manifest.
The downloaded YAML file is a basic version of the DynaKube custom resource definition. To adjust values to your specific needs, refer to the DynaKube custom resource samples for cloud-native full-stack from GitHub. For more information about all configuration options, see DynaKube parameters for Dynatrace Operator.
Optional Verify that your DynaKube is running and all pods in your Dynatrace namespace are running and ready.
> kubectl get dynakube -n dynatraceNAME APIURL STATUS AGEdynakube https://<CLUSTER_DOMAIN>/e/<ENVIRONMENT_ID>/api Running 45s
In a default DynaKube configuration, you should see the following pods:
> kubectl get pods -n dynatraceNAME READY STATUS RESTARTS AGEdynakube-activegate-0 1/1 Running 0 50sdynakube-oneagent-b88rn 1/1 Running 0 50sdynakube-oneagent-m5jm4 1/1 Running 0 50sdynakube-oneagent-qhd9u 1/1 Running 0 50sdynatrace-oneagent-csi-driver-qxfwx 4/4 Running 0 2m49sdynatrace-oneagent-csi-driver-xk5c4 4/4 Running 0 2m49sdynatrace-oneagent-csi-driver-mz6ch 4/4 Running 0 2m49sdynatrace-operator-7dc8dc7d8c-wmh4z 1/1 Running 0 2m59sdynatrace-webhook-7bb6957fb5-l8fsq 1/1 Running 0 2m59sdynatrace-webhook-7bb6957fb5-rqnqk 1/1 Running 0 2m59s
As OneAgent and CSI-driver are deployed as DaemonSet you should have a OneAgent and CSI-driver pod on each node.
Dynatrace Operator version 0.8.0+
New Helm installation and upgrade instructions use our Helm chart available from an OCI registry. Therefore, if the Dynatrace repository is currently added to your local Helm repositories, it can be safely removed.
helm repo remove dynatrace
The installation process is independent of whether you are using Kubernetes or OpenShift. The platform is auto-detected during the installation.
Install Dynatrace Operator
The following command works for both default installations and installations using an OCI registry.
helm install dynatrace-operator oci://public.ecr.aws/dynatrace/dynatrace-operator \--create-namespace \--namespace dynatrace \--atomic \
Edit the values.yaml sample from GitHub, and then run the install command, passing the YAML file as an argument:
helm install dynatrace-operator oci://public.ecr.aws/dynatrace/dynatrace-operator \--create-namespace \--namespace dynatrace \--atomic \-f values.yaml
For cloud native, full stack deployments, a CSI driver is mandatory. If installCRD is set to false, you need to create the custom resource definition manually before starting the Helm installation:
kubectl apply -f https://github.com/Dynatrace/dynatrace-operator/releases/download/v1.10.2/dynatrace-operator-crd.yaml
VMware Tanzu Kubernetes (TKGI) and IBM Kubernetes Service (IKS) require additional configuration.
Create secret for access tokens
Create a secret named dynakube for the Dynatrace Operator token and data ingest token obtained in Tokens and permissions required.
kubectl -n dynatrace create secret generic dynakube --from-literal="apiToken=<OPERATOR_TOKEN>" --from-literal="dataIngestToken=<DATA_INGEST_TOKEN>"
Apply the DynaKube custom resource
Download the DynaKube custom resource sample for cloud-native full-stack from GitHub. In addition, you can review the available parameters or how-to-guides, and adapt the DynaKube custom resource according to your requirements.
Run the command below to apply the DynaKube custom resource, making sure to replace <your-DynaKube-CR> with your actual DynaKube custom resource file name. A validation webhook will provide helpful error messages if there's a problem.
kubectl apply -f <your-DynaKube-CR>.yaml
Optional Verify deployment
Verify that your DynaKube is running and all pods in your Dynatrace namespace are running and ready.
> kubectl get dynakube -n dynatraceNAME APIURL STATUS AGEdynakube https://<CLUSTER_DOMAIN>/e/<ENVIRONMENT_ID>/api Running 45s
In a default DynaKube configuration, you should see the following pods:
> kubectl get pods -n dynatraceNAME READY STATUS RESTARTS AGEdynakube-activegate-0 1/1 Running 0 50sdynakube-oneagent-b88rn 1/1 Running 0 50sdynakube-oneagent-m5jm4 1/1 Running 0 50sdynakube-oneagent-qhd9u 1/1 Running 0 50sdynatrace-oneagent-csi-driver-qxfwx 4/4 Running 0 2m49sdynatrace-oneagent-csi-driver-xk5c4 4/4 Running 0 2m49sdynatrace-oneagent-csi-driver-mz6ch 4/4 Running 0 2m49sdynatrace-operator-7dc8dc7d8c-wmh4z 1/1 Running 0 2m59sdynatrace-webhook-7bb6957fb5-l8fsq 1/1 Running 0 2m59sdynatrace-webhook-7bb6957fb5-rqnqk 1/1 Running 0 2m59s
As OneAgent and CSI-driver are deployed as DaemonSet you should have a OneAgent and CSI-driver pod on each node.
Create a dynatrace namespace
kubectl create namespace dynatrace
Install Dynatrace Operator
kubectl apply -f https://github.com/Dynatrace/dynatrace-operator/releases/download/v1.10.2/kubernetes-csi.yaml
VMware Tanzu Kubernetes (TKGI) and IBM Kubernetes Service (IKS) require additional configuration.
Run the following command to see when Dynatrace Operator components finish initialization:
kubectl -n dynatrace wait pod --for=condition=ready --selector=app.kubernetes.io/name=dynatrace-operator,app.kubernetes.io/component=webhook --timeout=300s
Create secret for Access tokens
Create a secret named dynakube for the Dynatrace Operator token and data ingest token obtained in Tokens and permissions required.
kubectl -n dynatrace create secret generic dynakube --from-literal="apiToken=<OPERATOR_TOKEN>" --from-literal="dataIngestToken=<DATA_INGEST_TOKEN>"
Apply the DynaKube custom resource
Download the DynaKube custom resource sample for cloud-native full-stack from GitHub. In addition, you can review the available parameters or how-to-guides, and adapt the DynaKube custom resource according to your requirements.
Run the command below to apply the DynaKube custom resource, making sure to replace <your-DynaKube-CR> with your actual DynaKube custom resource file name. A validation webhook will provide helpful error messages if there's a problem.
kubectl apply -f <your-DynaKube-CR>.yaml
Optional Verify deployment
Verify that your DynaKube is running and all pods in your Dynatrace namespace are running and ready.
> kubectl get dynakube -n dynatraceNAME APIURL STATUS AGEdynakube https://<CLUSTER_DOMAIN>/e/<ENVIRONMENT_ID>/api Running 45s
In a default DynaKube configuration, you should see the following pods:
> kubectl get pods -n dynatraceNAME READY STATUS RESTARTS AGEdynakube-activegate-0 1/1 Running 0 50sdynakube-oneagent-b88rn 1/1 Running 0 50sdynakube-oneagent-m5jm4 1/1 Running 0 50sdynakube-oneagent-qhd9u 1/1 Running 0 50sdynatrace-oneagent-csi-driver-qxfwx 4/4 Running 0 2m49sdynatrace-oneagent-csi-driver-xk5c4 4/4 Running 0 2m49sdynatrace-oneagent-csi-driver-mz6ch 4/4 Running 0 2m49sdynatrace-operator-7dc8dc7d8c-wmh4z 1/1 Running 0 2m59sdynatrace-webhook-7bb6957fb5-l8fsq 1/1 Running 0 2m59sdynatrace-webhook-7bb6957fb5-rqnqk 1/1 Running 0 2m59s
As OneAgent and CSI-driver are deployed as DaemonSet you should have a OneAgent and CSI-driver pod on each node.
After you've successfully installed Dynatrace Operator, you may find the following resources helpful for further learning and troubleshooting.
Detailed description of installation and configuration options for specific use-cases
This page will assist you in navigating any challenges you may encounter while working with the Dynatrace Operator and its various components.
In-depth description on how the deployment on Kubernetes works.
Contains a reference page with configuration options for each Dynatrace component
Release notes for Dynatrace Operator
Upgrade paths, update procedures, and uninstallation guide for Dynatrace Operator.
Find CPU and memory resource recommendations for Dynatrace ActiveGates deployed in Kubernetes, sized by cluster scale and workload type.