Datree offers cluster integration that allows you to validate your resources against your configured policy upon pushing them into a cluster, by using an admission webhook.
The webhook will catch create, apply and edit operations and initiate a policy check against the configs associated with each operation. If any misconfigurations are found, the webhook will reject the operation, and display a detailed output with instructions on how to resolve each misconfiguration.
👉🏻 For the full documentation click here.
The following table lists the configurable parameters of the Datree chart and their default values.
| Parameter | Description | Default |
|---|---|---|
| namespace | The name of the namespace all resources will be created in, if not specified in the release. | "" |
| replicaCount | The number of Datree webhook-server replicas to deploy for the webhook. | 2 |
| customLabels | Additional labels to add to all resources. | {} |
| customAnnotations | Additional annotations to add to all resources. | {} |
| rbac.serviceAccount | Create service Account for the webhook | { "create": true, "name": "datree-webhook-server" } |
| rbac.clusterRole | Create service Role for the webhook | { "create": true, "name": "datree-webhook-server-cluster-role" } |
| datree.token | The token used to link Datree to your dashboard. (string, required) | null |
| datree.existingSecret | The token may also be provided via secret, note if the existingSecret is provided the token field above is ignored. | { "key": "", "name": "" } |
| datree.verbose | Display 'How to Fix' link for failed rules in output. (boolean, optional) | null |
| datree.output | The format output of the policy check results: yaml, json, xml, simple, JUnit. (string, optional) | null |
| datree.noRecord | Don’t send policy checks metadata to the backend. (boolean, optional) | null |
| datree.enabledWarnings | Choose which warnings to enable. (string array ,optional) | [ "failedPolicyCheck", "skippedBySkipList", "passedPolicyCheck", "RBACBypassed" ] |
| datree.clusterName | The name of the cluster link for cluster name in your dashboard (string ,optional) | null |
| datree.scanIntervalHours | How often should the scan run in hours. (int, optional, default: 1 ) | 1 |
| datree.configFromHelm | If false, the webhook will be configured from the dashboard, otherwise it will be configured from here. Affected configurations: policy, enforce, customSkipList. | false |
| datree.policy | The name of the policy to check, e.g: staging. (string, optional) | null |
| datree.enforce | Block resources that fail the policy check. (boolean ,optional) | null |
| datree.customSkipList | Excluded resources from policy checks. ("namespace;kind;name" ,optional) | [ "(.*);(.*);(^aws-node.*)", "(^openshift.*);(.*);(.*)" ] |
| datree.labelKubeSystem | set admission.datree/validate=skip label on kube-system resources. (openshift/okd users should set it to false) | true |
| datree.logLevel | log level for the webhook-server, -1 - debug, 0 - info, 1 - warning, 2 - error, 3 - fatal | 0 |
| image.repository | Image repository for the webhook | "datree/admission-webhook" |
| image.tag | The image release tag to use for the webhook | null |
| image.pullPolicy | Image pull policy for the webhook | "Always" |
| imageCredentials | For private registry which contains all the required images | { "email": null, "enabled": false, "password": null, "registry": null, "username": null } |
| securityContext | Security context applied on the containers | { "allowPrivilegeEscalation": false, "capabilities": { "drop": [ "ALL" ] }, "readOnlyRootFilesystem": true, "runAsNonRoot": true, "runAsUser": 25000, "seccompProfile": { "type": "RuntimeDefault" } } |
| resources | The resource request/limits for the webhook container image | {} |
| nodeSelector | Used to select on which node a pod is scheduled to run | {} |
| affinity | {} | |
| tolerations | [] | |
| clusterScanner.resources | The resource request/limits for the scanner container image | {} |
| clusterScanner.annotations | {} | |
| clusterScanner.rbac.serviceAccount | Create service Account for the scanner | { "create": true, "name": "cluster-scanner-service-account" } |
| clusterScanner.rbac.clusterRole | Create service Role for the scanner | { "create": true, "name": "cluster-scanner-role" } |
| clusterScanner.rbac.clusterRoleBinding | Create service RoleBinding for the scanner | { "name": "cluster-scanner-role-binding" } |
| clusterScanner.image.repository | Image repository for the scanner | "datree/cluster-scanner" |
| clusterScanner.image.pullPolicy | Image pull policy for the scanner | "Always" |
| clusterScanner.image.tag | The image release tag to use for the scanner | null |
| clusterScanner.image.resources | {} | |
| clusterScanner.livenessProbe.enabled | true | |
| clusterScanner.livenessProbe.scheme | null | |
| clusterScanner.livenessProbe.initialDelaySeconds | null | |
| clusterScanner.livenessProbe.periodSeconds | null | |
| clusterScanner.readinessProbe.enabled | true | |
| clusterScanner.readinessProbe.scheme | null | |
| clusterScanner.readinessProbe.initialDelaySeconds | null | |
| clusterScanner.readinessProbe.periodSeconds | null | |
| hooks.timeoutTime | The timeout time the hook will wait for the webhook-server is ready. | null |
| hooks.ttlSecondsAfterFinished | null | |
| hooks.image.repository | "clastix/kubectl" | |
| hooks.image.tag | "v1.25" | |
| hooks.image.pullPolicy | "IfNotPresent" | |
| validatingWebhookConfiguration.failurePolicy | "Ignore" | |
| livenessProbe.enabled | true | |
| livenessProbe.scheme | null | |
| livenessProbe.initialDelaySeconds | null | |
| livenessProbe.periodSeconds | null | |
| readinessProbe.enabled | true | |
| readinessProbe.scheme | null | |
| readinessProbe.initialDelaySeconds | null | |
| readinessProbe.periodSeconds | null | |
| devMode.enabled | false |
