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 |