Deckhouse Module Tool - the swiss knife for your Deckhouse modules
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 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
--pipeline, -p
: Choose CI/CD platform (github
orgitlab
, default:github
)--directory, -d
: Specify target directory (default: current directory)--repository-url, -r
: Use custom module template repository URL
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
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. |
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.
make setup-hooks
- Install pre-commit hooksmake lint
- Run full lintingmake lint-fast
- Run fast linting (used by pre-commit hook)make lint-fix
- Run full linting with auto-fixmake lint-fix-fast
- Run fast linting with auto-fix
You can exclude linters or setup them via the config file .dmtlint.yaml
global:
linters-settings:
module:
impact: warn | critical
images:
impact: warn | critical