All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- bug where the helm client version check would fail for helm2 and never proceed to check helm3
- added create namespace functionality because they removed it from helm3
- removed beta warnings about Helm 3
- Added a warning message when using helm3: NOTE HELM3 IS NOT YET SUPPORTED! Use at your own peril!
- Added better logging for helm errors (into debug output)
- Added better handling of uninitialized helm (client side)
- Fixed issues where helm would try to interpolate variables in comments provided in
values: {}
section of a chart definition - Added better logging for debug when unexpected errors happen in python
- Added better logging output for debugging yaml parse issues
- Fixed repository git support for defining git chart endpoints at the top level and chart level
- Fixed issues with relative vs absolute paths on files used in course yamls
- Added Helm 3 detection and added a warning and documentation on helm 3 reckoner support blockers
- Schema Validation
- We are introducing schema validation on the course.yml. This will exit hard if your course.yml has indentation errors or other issues that don't conform to the course.yml expected schema. The schema can be found at here.
- Reckoner now blocks on YAML duplicate keys. If your yaml has duplicate keys in any section of the yaml, the course will fail to load and no actions will be performed. There is no way to allow duplicate keys in course.yml anymore to avoid inconsistent behavior or unexpected course runs.
- More details on the implications of schema validations can be found here: docs/changelog_details/schema_validation.md.
- As a part of defining a strict schema for course YAMLs, you will need to house any "reuable" YAML blocks in the top-level-key of
_references: {}
.
- Fixed the references for values to be relative:
files: []
now are referenced relative to the course yaml you're running. Also added end-to-end test for values files in subfolders.
- Changes to
values: {}
behavior: The chart: {values: {}} config block and chart: {set-values:{}} config block now have different behavior. set-values: {} always gets translated into helm arguments as --set key=value. The values: {} now gets applied to helm arguments as -f temporary_values_name.yml. The values: {} config block is now fully consistent with intended types and would behave as though you are using a -f my_values.yml in your helm command. Prior to this change you would see inconsistent type casting for float, bool and integer config settings. For more information on the behavior differences betweenvalues
,set-values
, andvalues-strings
you can look at our end to end testing test course.yml. - BUG FIX: Using
"null"
,null
,"Null"
, and"NULL"
as values inset-values: {}
will be interpreted asnull
(void of value) in the--set
value. Previously, if you setnull
as the yaml value, you would get--set key=None
due to python interpreting the value asNone
and thus would show up as{"key": "None"}
in the helm values. This fix more closely aligns with expected behavior in helm.
- Removed the
--local-development
flag fromplot
command (unused) and cleaned up test dependencies - Reckoner now has exit codes that reflect the state of the course run.
Reckoner will immediately exit with a non-zero exit code when a chart or hook fails to run. Previous
behavior to continue on error can be enabled by using the
--continue-on-error
flag on yourplot
.
Python2 support is now ended. Pip install will now require python ~= 3.6. In any case, use of the binary release is recommended.
- Support helm wrapper plugins such as Helm Secrets
- POTENTIAL BREAKING CHANGE: Refactored all helm commands to use
--arg value
instead of--arg=value
. (This helps with poor param support with how helm plugin wrappers work)
- Skipped versions to kickstart pipelines
- Added pipeline to distribute binaries (no code changes)
- Added support for pyinstaller builds for Linux and Darwin (for later binary distribution)
- Added fix for interpolated variables in kube specs (see #82)
- Adjusted help for plot (--heading / --only also accepts -o now)
- Updated underlying dependencies (click, semver, GitPython)
- Adjusted versioning to be based on git tag
- Added support for python 3.6 & 3.7 with CI checks
- Added end-to-end basic tests for CI (invocation regression testing)
- Upgraded to oyaml 0.8+
- Fixed hook runner behavior: Previous to v1.0.0, the hooks would stop running after the first non-zero exit code. This behavior broke with some refactoring
- Added tests to catch run-hook behavior
- Reckoner would silently fail when a --only or --heading was defined for a chart that didn't exist in your course. This behavior will still succeed if you provide at least one valid --heading value. If no values are in your course then this bubbles up an error
- Internal Fix: Reckoner Errors now are a single parent exception class
- Fixed hook output to user instead of hidden only in debug (#59)
- Fixed hooks to run from the same path as course.yml. This makes PWD relative to course.yml for easier groking of paths for hook pre/post install.
version
command is fixedgenerate
command is removed (was broken for several versions)
- Adjusted schema to support
set
option for charts- This will translate all elements into
--set key=value
for the helm run - Current behavior actually does this for
values: {}
- All
values:
uses will warn that future versions will be type strong
- This will translate all elements into
- More testing for CLI contract options
In the future, the values: {}
configuration of a chart will change it's
behavior (see Issue #7). The current behavior translates any values:{}
into
--set
for the command line helm. This makes certain object types lose their
type fidelity. This means true
becomes string("true")
when pushed through
--set values=true
. To maintain the same behavior for your settings please
change values:{}
to set-values:{}
. This behavior deprecaton will start to
be enforces in later versions of Reckoner.
Removing support for use as a helm plugin.
- output when minimum versions are not met is no longer a stacktrace
- Fixes #40
- Ensure chart dependencies are up to date with
helm dependency update
before installing it
- Issue preventing values files from working. #43
- fixing error were value-strings from the course where not being set as set-string on the command line
- improved output when a desired environment variable is not set
- no longer adding the helm_args from course.yml twice
CVE recommended fix
Updated PyYAML required version to address active CVE
Major-ish refactor to class structure and testing of independent classes in code. More work will be coming to make test coverage better.
- Default arguments for helm now do the right thing if using global flags for connecting to tiller (
tiller-namespace
, etc)
- Bubbled up actual error messages from Helm commands if they have a non-zero exit code
- None expected but this is a refactor of the helm client interface
Found several bugs that are noted in code and here. Fixes will be forthcoming.
- Found that rollback functionality isn't operational
- Found that dependency_update is non-operational
- Found that kubectl context update isn't functional
- bug where string values were being set as
set-string
- the ability to specify helm_args in course.yml
- None, however the --debug flag will be deprecated in later versions. Warnings are added.
- numerous code formatting and spelling issues
- better logging output for hooks
- added standard out logging for all helm commands
- formating of the helm string that was broken by recent rebase
- context setting in the course and overidable by chart
- environment variable interpolation
- fix namespace override at chart level
- Nested values not being converted to strings properly
- Namespaces not being handled properly
- Error handling during chart install
- mock reset so tests will pass again after adding helm.help call
- Improved error handling around helm binary
plot
process to it actually installs the charts
Autohelm
Major refactor from a scripty based version to a modular object version
Lots of Unit Testing
--helm-args
flag to pass flags and params on to helm
- swapped the order of evaluation of the --debug and --dryrun flags to prevent --dryrun from getting lost if both flags are set
- Upload to PyPi
- issue where chart dependencies/requirements were not being updated
- issue where helm release would be rolled back even when using --dry-run
- issue where tags were not being pulled properly
- Description in setup.py
- how branches are pulled with the chart is at the root of the repository
- missing semver in setup.py
- removed trailing whitespace
- minimum_version block to course.yml to define the mininum versions of
helm
andautohelm
required by the course.yml - --local-development flag
- improve logic for git sparse check out and chart path
- support for yaml lists in the course.yml
- parsing of yaml dictionaries where it would only set the first value from the dictionary
- pre_install and post_install hooks. Hooks are run at a per chart level
--heading
option to run a single chart from course.yaml
- allow
values
block in course.yml to accept nested values
- Support for
--set-string
option in helm 2.9.0+. Any keys undervalues-string
in your course.yml will be passed to helm using--set-string
--dry-run
and--debug
options forautohelm plot
that pass identical options to helm
- Missing environment variables are now treated as an error
- bug where if a path was included in the course.yml, but the chart was at the root of the repo, sparse checkout would fail and the configured sparse-checkout file would poison the cache for that chart repository.
files
to the course.yml to use yml files
- Maintain order of values during yaml load so that
--set
for lists remain ordered
- Ability to name releases something other than just the chart name
Initial open-source commit