dmt
Deckhouse Module Tool - the swiss knife for your Deckhouse modules
How to use
Lint
You can run linter checks for a module:
dmt lint /some/path/<your-module>
or some pack of modules
dmt lint /some/path/
where /some/path/
looks like this:
ls -l /some/path/
drwxrwxr-x 1 deckhouse deckhouse 4096 Nov 10 21:46 001-module-one
drwxrwxr-x 1 deckhouse deckhouse 4096 Nov 12 21:45 002-module-two
drwxrwxr-x 1 deckhouse deckhouse 4096 Nov 10 21:46 003-module-three
You can also run linter checks for multiple directories at once:
dmt lint /path/to/module1 /path/to/module2 /path/to/module3
Each directory is processed as a separate execution, and results are displayed for each directory individually.
Bootstrap
Bootstrap a new Deckhouse module from template:
dmt bootstrap my-module-name
This command will:
- Download the official Deckhouse module template
- Extract it to the current directory (or specified directory)
- Replace template placeholders with your module name
- Configure CI/CD files based on your chosen platform
Options
--pipeline, -p
: Choose CI/CD platform (github
or gitlab
, default: github
)
--directory, -d
: Specify target directory (default: current directory)
--repository-url, -r
: Use custom module template repository URL
Examples
Bootstrap a GitHub module:
dmt bootstrap my-awesome-module --pipeline github
Bootstrap a GitLab module in specific directory:
dmt bootstrap my-module --pipeline gitlab --directory ./modules/my-module
Use custom template repository:
dmt bootstrap my-module --repository-url https://github.com/myorg/custom-template/archive/main.zip
Linters list
Linter |
Description |
container |
Check containers - duplicated names, env variables, ports, security context, liveness and readiness probes. |
hooks |
Check hooks rules. |
images |
Check images build instructions. |
module |
Check module.yaml definition, openapi conversions, oss.yaml file. |
no-cyrillic |
Check cyrillic letters. |
openapi |
Check openapi settings, crds. |
rbac |
Check rbac rules. |
templates |
Check templates rules, VPA, PDB settings, prometheus, grafana rules, kube-rbac-proxy, service target port. |
Development Setup
Pre-commit Hooks
To enable automatic linting before each commit, run:
make setup-hooks
This will install a pre-commit hook that:
- Runs fast lint checks before each commit
- Attempts to auto-fix issues when possible
- Prevents commits with linting errors
The hook uses make lint-fast
for quick checks and make lint-fix-fast
for auto-fixing.
Available Make Targets
make setup-hooks
- Install pre-commit hooks
make lint
- Run full linting
make lint-fast
- Run fast linting (used by pre-commit hook)
make lint-fix
- Run full linting with auto-fix
make lint-fix-fast
- Run fast linting with auto-fix
Configuration
You can exclude linters or setup them via the config file .dmtlint.yaml
Global settings
global:
linters-settings:
module:
impact: warn | critical
images:
impact: warn | critical