This lightning release addresses some issues that came up while writing the tutorials:
- Bug fix - Don't process nodes whose conditions have failed in most commands
- Print vars for nodes regardless of conditions
- Neaten up console messages around which templates have been rendered
- Possible breaking change: The default is now to render templates when creating a cache. Renamed the
- Breaking change: Rename all flags starting with
- Make loading outputs more robust
Sugarkube is ready!
This is our first non-prerelease release! All major functionality is now complete and the developer experience has been smoothed over. We believe Sugarkube is ready for use and look forward to receiving feedback. For full documentation see https://docs.sugarkube.io - a tutorial is in progress. Docs will be our focus over the next few weeks.
Major features of this release are:
- EKS support - added a provisioner that orchestrates
eksctlto create and delete AWS EKS clusters
kapps graphcommand that generates an SVG of the DAG to visualise the dependencies between kapps (requires graphviz).
- Stability - all data races reported by go have been removed and code for setting up SSH port forwarding is more robust
- Fine grained control over when to template files, load outputs or execute kapps via
- YAML loading is now strict to help catch errors
There are several breaking changes:
- Changed the format of dependencies and added support for them being conditional based on other attributes of the target stack. Please see the docs.
- Templates are now declared as a map of templates keyed by an ID
- Removed the
stateattribute of kapps in favour of a list of conditions to make it easier to conditionally control whether a kapp should be processed or not
- Replaced the 'skip' pre/post kapp action with 'none'. Conditions should now be used to control whether to install/delete kapps. The 'none' action can be used to prevent actions from running when overriding settings for kapps.
Please see the changelog for full details of changes in this release.
This is an important usability update.
- Implement a new "run unit" installer and completely remove the makefile installer. Installation steps are now declared in
sugarkube.yamlfiles or in the main project
sugarkube-conf.yamlfile so makefiles are no longer required at all. Make sure to update your kapps. See the incubator kapps and sample project for examples until the documentation is written (ignore any makefiles in there - they'll shortly be deleted as kapps are migrated to use run units).
- Add coloured console messages so it's finally possible to usefully use Sugarkube with logging disabled
- Rename the 'cache' subcommand to 'workspaces' and change references in documentation. This should make it clearer that workspaces are mutable and not just some temporary local cache.
- The DAG now prints progress while executing
It's expected there will only be one more pre-release version after this, so Sugarkube is nearly ready for primetime :-)
Lots of changes, but there's still more to do. Here are the changes in this release:
- Major code clean up & refactoring
- Variables can now be interpolated based on other variables
- Kapp variables are now namespaced under a dedicated key ('kapp') to prevent them overwriting system variables
- Added a command
kapps varsfor inspecting variables available to a kapp
- Added a command
cluster varsfor inspecting variables available for a cluster/stack
- Unified the URI format for kapp sources
- Allow settings for kapps to be overridden from stack config files
- Custom provisioner binaries can now be specified per stack to control which version of a provisioner is used in each stack
- Improved error handling
- Make some CLI options required positional arguments
- Clarify the extent to which values can be supplied on the command line vs in stack config files
- Rename the
namekey on sources to
idfor consistency with everywhere else
- Allow only selected kapps to be installed
- Templates for kapps are written immediately before applying kapps by default now
- Kapps can now declare actions to be run after applying the kapp. Currently the only supported post action is to update a cluster (the cluster will be launched if it's offline)
- Removed support for init manifests. All manifests should be run and they're expected to be idempotent.
- Depend on forked version of go-yaml that doesn't split output wider than 80 characters
- Kapp template source/dest paths can now contain variables
- Kapp vars are namespaced under the
.kapp.varskey in the stack config map
- Provider vars are not namespaced in the stack config map
- Provider vars directories will be searched breadth-first in a similar way to how kapp vars dirs are searched to allow cross-cutting configuration (e.g. all AMI IDs for a region can be set once and will be merged into each region's config)
- Add a way of connecting to K8s API servers that were created with internal load balancers by kops (provided there's a bastion)
- Allow the path to a custom config file to be given
- Enable and use trace-level logging to make debug level logging easier to read
- Change the format of the 'args' YAML in kapps
Kapps now need to declare the environment variables and arguments in their
sugarkube.yaml file. Values for env vars can come from vars files. This makes kapps more flexible and sugarkube more generic.
- Implement loading variables from directories outside the provider directory tree to
- Allow kapps to specify templates that should be rendered for them to use. They can use variables loaded from arbitrarily specified locations