Skip to content

Helm chart linting rules#

Helm linting reports offer the linting rules, rule descriptions, and remediation as they are presented in the following table.

Name Description Remediation
dangling-service Indicates when services do not have any associated deployments. Confirm that your service’s selector correctly matches the labels on one of your deployments.
default-service-account Indicates when pods use the default service account. Create a dedicated service account for your pod. Refer to Configure Service Accounts for Pods for details.
deprecated-service-account-field Indicates when deployments use the deprecated serviceAccount field. Use the serviceAccountName field instead.
drop-net-raw-capability Indicates when containers do not drop NET_RAW capability. NET_RAW makes it so that an application within the container is able to craft raw packets, use raw sockets, and bind to any address. Remove this capability in the containers under containers security contexts.
env-var-secret Indicates when objects use a secret in an environment variable. Do not use raw secrets in environment variables. Instead, either mount the secret as a file or use a secretKeyRef. Refer to Using Secrets for details.
mismatching-selector Indicates when deployment selectors fail to match the pod template labels. Confirm that your deployment selector correctly matches the labels in its pod template.
no-anti-affinity Indicates when deployments with multiple replicas fail to specify inter-pod anti-affinity, to ensure that the orchestrator attempts to schedule replicas on different nodes. Specify anti-affinity in your pod specification to ensure that the orchestrator attempts to schedule replicas on different nodes. Using podAntiAffinity, specify a labelSelector that matches pods for the deployment, and set the topologyKey to kubernetes.io/hostname. Refer to Inter-pod affinity and anti-affinity for details.
no-extensions-v1beta Indicates when objects use deprecated API versions under extensions/ v1beta. Migrate using the apps/v1 API versions for the objects. Refer to Deprecated APIs Removed In 1.16 for details.
no-liveness-probe Indicates when containers fail to specify a liveness probe. Specify a liveness probe in your container. Refer to Configure Liveness, Readiness, and Startup Probes for details.
no-read-only-root-fs Indicates when containers are running without a read-only root filesystem. Set readOnlyRootFilesystem to true in the container securityContext.
no-readiness-probe Indicates when containers fail to specify a readiness probe. Specify a readiness probe in your container. Refer to Configure Liveness, Readiness, and Startup Probes for details.
non-existent-service-account Indicates when pods reference a service account that is not found. Create the missing service account, or refer to an existing service account.
privileged-container Indicates when deployments have containers running in privileged mode. Do not run your container as privileged unless it is required.
required-annotation-email Indicates when objects do not have an email annotation with a valid email address. Add an email annotation to your object with the email address of the object’s owner.
required-label-owner Indicates when objects do not have an email annotation with an owner label. Add an email annotation to your object with the name of the object’s owner.
run-as-non-root Indicates when containers are not set to runAsNonRoot. Set runAsUser to a non-zero number and runAsNonRoot to true in your pod or container securityContext. Refer to Configure a Security Context for a Pod or Container for details.
ssh-port Indicates when deployments expose port 22, which is commonly reserved for SSH access. Ensure that non-SSH services are not using port 22. Confirm that any actual SSH servers have been vetted.
unset-cpu-requirements Indicates when containers do not have CPU requests and limits set. Set CPU requests and limits for your container based on its requirements. Refer to Requests and limits for details.
unset-memory-requirements Indicates when containers do not have memory requests and limits set. Set memory requests and limits for your container based on its requirements. Refer to Requests and limits for details.
writable-host-mount Indicates when containers mount a host path as writable. Set containers to mount host paths as readOnly, if you need to access files on the host.
cluster-admin-role-binding CIS Benchmark 5.1.1 Ensure that the cluster-admin role is only used where required. Create and assign a separate role that has access to specific resources/actions needed for the service account.
docker-sock Alert on deployments with docker.sock mounted in containers. Ensure the Docker socket is not mounted inside any containers by removing the associated Volume and VolumeMount in deployment yaml specification. If the Docker socket is mounted inside a container it could allow processes running within the container to execute Docker commands which would effectively allow for full control of the host.
exposed-services Alert on services for forbidden types. Ensure containers are not exposed through a forbidden service type such as NodePort or LoadBalancer.
host-ipc Alert on pods/deployment-likes with sharing host's IPC namespace. Ensure the host's IPC namespace is not shared.
host-network Alert on pods/deployment-likes with sharing host's network namespace. Ensure the host's network namespace is not shared.
host-pid Alert on pods/deployment-likes with sharing host's process namespace. Ensure the host's process namespace is not shared.
privilege-escalation-container Alert on containers if allowing privilege escalation that could gain more privileges than its parent process. Ensure containers do not allow privilege escalation by setting allowPrivilegeEscalation=false. See Configure a Security Context for a Pod or Container for more details.
privileged-ports Alert on deployments with privileged ports mapped in containers. Ensure privileged ports [0, 1024] are not mapped within containers.
sensitive-host-mounts Alert on deployments with sensitive host system directories mounted in containers. Ensure sensitive host system directories are not mounted in containers by removing those Volumes and VolumeMounts.
unsafe-proc-mount Alert on deployments with unsafe /proc mount (procMount=Unmasked) that will bypass the default masking behavior of the container runtime. Ensure container does not unsafely exposes parts of /proc by setting procMount=Default. Unmasked ProcMount bypasses the default masking behavior of the container runtime. See Pod Security Standards for more details.
unsafe-sysctls Alert on deployments specifying unsafe sysctls that may lead to severe problems like wrong behavior of containers. Ensure container does not allow unsafe allocation of system resources by removing unsafe sysctls configurations. For more details see Using sysctls in a Kubernetes Cluster and Configure namespaced kernel parameters (sysctls) at runtime.