Helm Chart
Scan Helm chart, template, and values files for Docker container image and GitHub repositories to pull and scan for symbols.
Helm CLI
The scanner uses the Helm CLI to connect and show charts, so ensure the CLI is installed on your local machine or use the compiler Docker image.
Configuration
To configure the Helm chart module, Edit these settings.
Below is the default configuration from: helm/config.yaml (* Required Fields).
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJ0ZW54IiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAiaGVsbSIgOiB7CiAgICAgICJ0eXBlIiA6ICJvYmplY3QiLAogICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAiY2hhcnROYW1lcyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIGNoYXJ0cyB0byBwdWxsXG5cblNwZWNpZmllcyBhIGxpc3Qgb2YgY2hhcnQgbmFtZXMgKGUuZy4sIG9wZW4tdGVsZW1ldHJ5L29wZW50ZWxlbWV0cnktZGVtbykgdG8gcGFzcyB0byBbaGVsbUNvbW1hbmRdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS9wdWxsL2hlbG0vI2hlbG1jb21tYW5kKS4gVGhlIHNjYW5uZXIgd2lsbCBpbnZva2UgdGhlIFt0ZW1wbGF0ZV0oaHR0cHM6Ly9oZWxtLnNoL2RvY3MvaGVsbS9oZWxtX3RlbXBsYXRlLykgYW5kIFtzaG93IGNoYXJ0XShodHRwczovL2hlbG0uc2gvZG9jcy9oZWxtL2hlbG1fc2hvd19jaGFydC8pIGNvbW1hbmRzIHRvIHB1bGwgaXRzIHZhbHVlcy55YW1sIGFuZCBjaGFydC55YW1sIGZpbGVzIHRvIHNjYW4gZm9yIERvY2tlciBjb250YWluZXIgaW1hZ2VzIGFuZCBHaXRIdWIgcmVwbyBmaWxlcy4iLAogICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogInN0cmluZyIKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJjaGFydEZpbGVzIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICBdLAogICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgY2hhcnRzIHRlbXBsYXRlcyBhbmQgdmFsdWUgZmlsZXMgdG8gc2NhblxuXG5TcGVjaWZpZXMgYSBsaXN0IG9mIGNoYXJ0IHZhbHVlIGFuZCB0ZW1wbGF0ZXMgZmlsZXMgdG8gc2Nhbi4gVGhlc2UgZmlsZSBwYXRocyBtYXkgYmUgcmVsYXRpdmUgdG8gdGhlIGluY2x1ZGUgcGF0aHMgbGlzdC4gSWYgZmlsZSBwYXRocyBhcmUgY2Fub25pY2FsLCB0aGVpciBlbmNsb3NpbmcgZm9sZGVycyBtdXN0IGJlIGluY2x1ZGVkIGluIHRoZSBpbmNsdWRlUGF0aHMgYXJndW1lbnQuIiwKICAgICAgICAgICJpdGVtcyIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAicHVsbCIgOiB7CiAgICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgICAgICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZSwKICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICAgImdpdGh1YiIgOiB7CiAgICAgICAgICAgICAgInR5cGUiIDogIm9iamVjdCIsCiAgICAgICAgICAgICAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlLAogICAgICAgICAgICAgICJwcm9wZXJ0aWVzIiA6IHsKICAgICAgICAgICAgICAgICJyZXBvcyIgOiB7CiAgICAgICAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAgICAgICAiYm9vbGVhbiIsCiAgICAgICAgICAgICAgICAgICAgInN0cmluZyIKICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIlB1bGwgR2l0SHViIHJlcG9zXG5cblNwZWNpZmllcyB3aGV0aGVyIHRvIHB1bGwgW0dpdEh1YiByZXBvc10oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9jb21waWxlL3B1bGwvZ2l0aHViLykgcmVmZXJlbmNlZCBieSBhbiBpbnB1dCBIZWxtIHRlbXBsYXRlIGZpbGVzLiAoQWNjZXB0cyBib29sZWFuIG9yIHN0cmluZyB3aXRoICQ9IHByZWZpeCBmb3IgcnVudGltZSBldmFsdWF0aW9uKSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAidG9rZW4iIDogewogICAgICAgICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJHaXRIdWIgQVBJIHRva2VuIGZvciBwdWxsaW5nIHJlcG9zaXRvcmllc1xuXG5EZWZpbmVzIGFuIGFjY2VzcyB0b2tlbiBmb3IgcHVsbGluZyBbR2l0aHViIHJlcG9zXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvcHVsbC9naXRodWIvKSByZWZlcmVuY2VkIGJ5IEhlbG0gY2hhcnRzLiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkb2NrZXJJbWFnZXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiUHVsbCBkb2NrZXIgY29udGFpbmVyIGltYWdlc1xuXG5TcGVjaWZpZXMgd2hldGhlciB0byBwdWxsIFtEb2NrZXIgaW1hZ2VzXShodHRwczovL2RvYy5sb2cxMHguY29tL2NvbXBpbGUvcHVsbC9kb2NrZXIvKSByZWZlcmVuY2VkIGJ5IGFuIGlucHV0IEhlbG0gdmFsdWVzIGFuZCB0ZW1wbGF0ZSBmaWxlcy4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IHRydWUpIiwKICAgICAgICAgICAgICAiZGVmYXVsdCIgOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJjb21tYW5kIiA6IHsKICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICJudWxsIgogICAgICAgICAgXSwKICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJQYXRoIHRvIEhlbG0gY29tbWFuZFxuXG5EZWZpbmVzIHRoZSBwYXRoIHRvIHRoZSBbSGVsbV0oaHR0cHM6Ly9oZWxtLnNoLykgcHJvZ3JhbSB1c2VkIGZvciBxdWVyeWluZyBjaGFydCB0ZW1wbGF0ZXMgYW5kIHZhbHVlcy4gVGhpcyB2YWx1ZSBtdXN0IGJlIHNldCBpZiBbaGVsbUNoYXJ0TmFtZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vY29tcGlsZS9wdWxsL2hlbG0vI2hlbG1jaGFydG5hbWVzKSBpcyBzZXQuIChEZWZhdWx0OiAqTklYOiAvdXNyL2xvY2FsL2Jpbi9oZWxtLCBXaW46IEM6L1Byb2dyYW0gRmlsZXMvaGVsbS9oZWxtLmV4ZSkiLAogICAgICAgICAgImRlZmF1bHQiIDogIipOSVg6IC91c3IvbG9jYWwvYmluL2hlbG0sIFdpbjogQzovUHJvZ3JhbSBGaWxlcy9oZWxtL2hlbG0uZXhlIgogICAgICAgIH0sCiAgICAgICAgImdpdEh1YlJlcG9QYXRocyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiWUFNTCBET00gcGF0aHMgZm9yIGV4dHJhY3RpbmcgR2l0SHViIHJlcG9zXG5cblNwZWNpZmllcyBwYXRocyB3aXRoaW4gYSBZQU1MIGZpbGUgdG8gdHJlYXQgYXMgaG9sZGVycyBmb3IgR2l0SHViIHJlcG8gbmFtZXMuIEZvciBleGFtcGxlLCBmb3IgdGhlIGZvbGxvd2luZyBzZWN0aW9uIGZyb20gYW4gaW5wdXQgY2hhcnQueWFtbCBmaWxlOiBgYGB5YW1sIHNvdXJjZXM6ICAgLSBodHRwczovL2dpdGh1Yi5jb20vb3Blbi10ZWxlbWV0cnkvb3BlbnRlbGVtZXRyeS1kZW1vICMgY2FwdHVyZSB0aGlzIEdpdEh1YiByZXBvIHJlZmVyZW5jZSBgYGAgKERlZmF1bHQ6IFttZXRhZGF0YS5yZXBvc2l0b3J5LCBzcGVjLnNvdXJjZS5naXQsIGNoYXJ0LnJlcG9zaXRvcnldKSIsCiAgICAgICAgICAiZGVmYXVsdCIgOiAiW21ldGFkYXRhLnJlcG9zaXRvcnksIHNwZWMuc291cmNlLmdpdCwgY2hhcnQucmVwb3NpdG9yeV0iCiAgICAgICAgfSwKICAgICAgICAiZG9ja2VySW1hZ2VQYXRocyIgOiB7CiAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAibnVsbCIKICAgICAgICAgIF0sCiAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiWUFNTCBET00gcGF0aHMgZm9yIGV4dHJhY3RpbmcgRG9ja2VyIHJlcG8gcmVmZXJlbmNlc1xuXG5TcGVjaWZpZXMgcGF0aHMgd2l0aGluIGEgaGVsbSBZQU1MIGZpbGUgdG8gdHJlYXQgYXMgaG9sZGVycyBmb3IgRG9ja2VyIGltYWdlIG5hbWVzLiBGb3IgZXhhbXBsZSwgZm9yIHRoZSBmb2xsb3dpbmcgc2VjdGlvbiBmcm9tIGFuIGlucHV0IHZhbHVlcy55YW1sIGZpbGU6IGBgYHlhbWwgICAgIHNwZWM6ICAgc2VydmljZUFjY291bnROYW1lOiBvcGVudGVsZW1ldHJ5LWRlbW8gICBjb250YWluZXJzOiAgIC0gbmFtZTogYWNjb3VudGluZ3NlcnZpY2UgICAgICBpbWFnZTogJ2RvY2tlci5pby9ncmFmYW5hL2dyYWZhbmE6MTEuMS4wJyAjIGNhcHR1cmUgdGhpcyBkb2NrZXIgaW1hZ2UgcmVmZXJlbmNlIGBgYCAoRGVmYXVsdDogW3NwZWMudGVtcGxhdGUuc3BlYy5jb250YWluZXJzLmltYWdlLCB2YWx1ZXMuaW1hZ2UsIHNwZWMuY29udGFpbmVycy5pbWFnZSwgc291cmNlc10pIiwKICAgICAgICAgICJkZWZhdWx0IiA6ICJbc3BlYy50ZW1wbGF0ZS5zcGVjLmNvbnRhaW5lcnMuaW1hZ2UsIHZhbHVlcy5pbWFnZSwgc3BlYy5jb250YWluZXJzLmltYWdlLCBzb3VyY2VzXSIKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9LAogICJhZGRpdGlvbmFsUHJvcGVydGllcyIgOiBmYWxzZQp9
# 🔟❎ 'compile' k8s Helm scanner configuration
# Configures the k8s Helm chart symbol scanner which pulls referenced GitHub source repositories and
# Docker container images to scan for symbol values.
# To learn more see https://doc.log10x.com/compile/pull/helm
# For a reference list of common infrastructure charts, see:
# modules/pipelines/compile/modules/pull/helm/library.yaml
# Set the 10x pipeline to 'compile'
tenx: compile
# =============================== Helm Options ===============================
helm:
# Charts can be specified as Helm chart names OR as local chart files.
# 'chartNames' specifies a list of remote chart names to scan for values and template files.
chartNames: [
# open-telemetry/opentelemetry-demo,
# ingress-nginx/ingress-nginx,
]
# 'chartFiles' specifies a list of local chart template and values.yaml files on disk.
# File paths may be relative to the 'includePaths' list. If canonical, enclosing folders must added to 'includePaths'.
chartFiles: [
# charts/opentelemetry-demo/values.yaml
]
pull:
# 'dockerImages' specifies whether to pull docker container images referenced by input charts
# To learn more see https://doc.log10x.com/compile/pull/docker
dockerImages: true
github:
# 'repos' specifies whether to pull GitHub repos referenced by 'org.opencontainers.image.source' annotations
# To learn more see https://github.com/opencontainers/image-spec/blob/v1.0.1/annotations.md#pre-defined-annotation-keys
repos: true
# 'token' specifies the GitHub access token for pulling from referenced repos
# To learn more see: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens
token: $=TenXEnv.get("GH_TOKEN") # (❗ EnvVar REQUIRED)
Options
Specify the options below to configure the Helm chart:
| Name | Description | Category |
|---|---|---|
| helmChartNames | List of charts to pull | General |
| helmChartFiles | List of charts templates and value files to scan | General |
| helmPullGithubRepos | Pull GitHub repos | General |
| helmPullGithubToken | GitHub API token for pulling repositories | General |
| helmPullDockerImages | Pull docker container images | General |
| helmCommand | Path to Helm command | Process |
| helmGitHubRepoPaths | YAML DOM paths for extracting GitHub repos | Process |
| helmDockerImagePaths | YAML DOM paths for extracting Docker repo references | Process |
General
helmChartNames
List of charts to pull.
| Type | Default | Category |
|---|---|---|
| List | [] | General |
Specifies a list of chart names (e.g., open-telemetry/opentelemetry-demo) to pass to helmCommand.
The scanner will invoke the template and show chart commands to pull its values.yaml and chart.yaml files to scan for Docker container images and GitHub repo files.
helmChartFiles
List of charts templates and value files to scan.
| Type | Default | Category |
|---|---|---|
| List | [] | General |
Specifies a list of chart value and templates files to scan. These file paths may be relative to the include paths list. If file paths are canonical, their enclosing folders must be included in the includePaths argument.
helmPullGithubRepos
Pull GitHub repos.
| Type | Default | Category |
|---|---|---|
| Boolean | false | General |
Specifies whether to pull GitHub repos referenced by an input Helm template files.
helmPullGithubToken
GitHub API token for pulling repositories.
| Type | Default | Category |
|---|---|---|
| String | "" | General |
Defines an access token for pulling Github repos referenced by Helm charts.
helmPullDockerImages
Pull docker container images.
| Type | Default | Category |
|---|---|---|
| Boolean | true | General |
Specifies whether to pull Docker images referenced by an input Helm values and template files.
Process
helmCommand
Path to Helm command.
| Type | Default | Category |
|---|---|---|
| String | *NIX: /usr/local/bin/helm, Win: C:/Program Files/helm/helm.exe | Process |
Defines the path to the Helm program used for querying chart templates and values. This value must be set if helmChartNames is set.
helmGitHubRepoPaths
YAML DOM paths for extracting GitHub repos.
| Type | Default | Category |
|---|---|---|
| String | [metadata.repository, spec.source.git, chart.repository] | Process |
specifies paths within a YAML file to treat as holders for GitHub repo names. For example, for the following section from an input chart.yaml file:
sources:
- https://github.com/open-telemetry/opentelemetry-demo # capture this GitHub repo reference
helmDockerImagePaths
YAML DOM paths for extracting Docker repo references.
| Type | Default | Category |
|---|---|---|
| String | [spec.template.spec.containers.image, values.image, spec.containers.image, sources] | Process |
specifies paths within a helm YAML file to treat as holders for Docker image names. For example, for the following section from an input values.yaml file:
spec:
serviceAccountName: opentelemetry-demo
containers:
- name: accountingservice
image: 'docker.io/grafana/grafana:11.1.0' # capture this docker image reference
This module is defined in helm/module.yaml.