Commit 0a351356 authored by Jessica Yuen's avatar Jessica Yuen
Browse files

Create 0.9.0 version notes

Signed-off-by: default avatarJessica Yuen <>
parent 40a626d3
# Change Log
## [v0.9.0]( (2017-03-05)
[Iteration Plan](
[Full Changelog](
### Overview
This release focuses on two major areas:
1. Changes to the underlying ksonnet-lib dependency and utilizing them in ks.
The changes involve a major uplift to how the ksonnet language APIs are
generated, so that support for future Kubernetes versions are easier.
2. Improvements to the support for environments and components. Environments
are now able to specify targets, to apply a subset of components as opposed
to all components. We've introduced the concept of component namespaces to
add division and hierarchy to components. We've also added commands to support
removing and listing of components.
### Changes to Environment Metadata
#### spec.json > app.yaml
In _0.8.0_, each *ks* application contained a _spec.json_ file per environment.
This file contained the environment specification details; corresponding to a
Kubernetes cluster server address and namespace.
"server": "",
"namespace": "default"
With _0.9.0_, we will be consolidating majority of the application specification
details into a top-level _app.yaml_ file. As opposed to opening multiple files,
this approach will make it easier for users to configure changes in a single
place. Similar to `spec.json`, this metadata will be auto-generated when a
environment is created or modified from the command line. However, it is also
meant to be user-modifiable.
apiVersion: 0.0.1
namespace: default
k8sVersion: v1.7.0
path: default
name: new
commitSha: 422d521c05aa905df949868143b26445f5e4eda5
refSpec: master
protocol: github
version: 0.0.1
You will notice a couple new fields under the _environments_ field.
1. _destination_ is identical to the contents of the previous _spec.json_,
containing the server address and namespace that this environment points to.
2. _k8sVersion_ is the Kubernetes version of the server pointed to at the _destination_
3. _path_ is the relative path in the _environments_ directory that contains
other metadata associated with this environment. By default, path is the
environment name.
#### Consolidation of lib files
In _0.8.0_, each environment's `.metadata` directory stored 3 files related to
the generated `ksonnet-lib`. It was unecessary and also costly as the number of
environments grow. We didn't need to store multiple copies of the same API
version on disk.
With _0.9.0_, the Kubernetes API version that each environment uses will be
recorded in the environment specification (as seen in the previous section).
The metadata files are cached once locally per k8s API version in `lib`.
These files also no longer need to be checked into source control, as *ks*
will auto-generate lib files that aren't found.
#### Targets & Component Namespaces
In _0.8.0_, there was no simple way for users to declare that a environment
should only operate on a subset of components.
With _0.9.0_, environments can now choose the set of components that they wish
to operate (_i.e._, _apply_, _delete_, etc.) on. These targets can be specified
in the _app.yaml_ file, mentioned in an earlier section.
For example, if the _components_ directory is structured as follows:
├── components
│ ├── auth
│ │ ├── ca-secret.jsonnet
│ │ ├── params.libsonnet
│ │ └── tls-certificate.jsonnet
│ ├── dev
│ │ ├── memcached.jsonnet
│ │ └── params.libsonnet
│ ├── params.libsonnet
│ └── prod
│ ...
An environment configuration in _app.yaml_ may appear as follows:
k8sVersion: 1.7.0
namespace: default
- auth
- dev
In the above example, the _dev_ environment would only operate on the
components within the _auth_ and _dev_ component namespaces.
Note: Component files do not need to be namespaced. Top-level components
and individual component files can also be referenced by _targets_.
### Command Changes
#### ks component list
`ks component list` is a new command. See docs [here](
#### ks component rm
`ks component rm` is a new command. See docs [here](
### ksonnet-lib Changes
* Create Jsonnet AST printer
* Convert ksonnet-lib generation process to Asonnet AST
### Github
**Closed issues:**
- tutorial document as linked from Google seems semi-broken? [\#322](
- Incorrect imports in ks generated files [\#321](
- delete component ERROR strconv.Atoi: parsing "8+": invalid syntax [\#316](
- ks param set when used with boolean does not create string value [\#311](
- Move custom constructors k8s.libsonnet to k.libsonnet [\#304](
- ERROR user: Current not implemented on linux/amd64 [\#298](
- Difficulty handling components unique to environments [\#292](
- ks delete ERROR strconv.Atoi [\#272](
- Create darwin binaries and make the available via brew [\#270](
- Unable to install packages with the same name under different registries [\#269](
- prototypes can't rely on a registry name, but they do [\#262](
- Confirm that ksonnet-lib generation works for Kubernetes 1.9[\#260](
- ks can't recognise the registry 'kubeflow'[\#258](
- website is not available[\#256](
- ks init fails when using $KUBECONFIG env var[\#251](
- Badly formatted client-go version string[\#250](
- Remove components[\#243](
- List components[\#242](
**Merged pull requests:**
- Attempt to generate lib directory when not found [\#337]( ([jessicayuen](
- Fix the execution paths for the 0.8 > 0.9 migration warning [\#335]( ([jessicayuen](
- Resolve api spec based on swagger version [\#334]( ([jessicayuen](
- Use new ksonnet lib generator [\#333]( ([bryanl](
- Set param boolean types as strings [\#331]( ([jessicayuen](
- Create support for plugins in ksonnet [\#330]( ([bryanl](
- Fix bug with invalid base.libsonnet import path [\#329]( ([jessicayuen](
- App spec to take a single destination [\#328]( ([jessicayuen](
- Add warning for running deprecated ks app against ks >= 0.9.0 [\#327]( ([jessicayuen](
- Pull client-go logic out of cmd/root.go and into client/ package [\#324]( ([jessicayuen](
- Introduce component namespaces [\#323]( ([bryanl](
- Add LibManager for managing k8s API and ksonnet-lib metadata [\#315]( ([jessicayuen](
- Migrate environment spec.json to the app.yaml model [\#309]( ([jessicayuen](
- Add interface for Environment Spec [\#308]( ([jessicayuen](
- Extract ksonnet generator [\#307]( ([bryanl](
- [docs] Clarify prototypes + add troubleshooting issue [\#303]( ([abiogenesis-now](
- updating 1.0 roadmap [\#302]( ([bryanl](
- use afero when possible [\#301]( ([bryanl](
- Upgrade to client-go version 5 [\#299]( ([jessicayuen](
- Proposal: Modular components and cleaner environments [\#295]( ([jessicayuen](
- pruning vendor from dep conversion [\#293]( ([bryanl](
- Versions retrospective and fixes [\#289]( ([hausdorff](
- Add remove component functionality [\#288]( ([jessicayuen](
- Construct apimachinery version [\#285]( ([bryanl](
- Removing realpath [\#283]( ([kris-nova](
- Implement explicit env metadata [\#282]( ([jessicayuen](
- Design: propose improvements to the "fresh clone" story [\#280]( ([hausdorff](
- Design proposal: explicit environment metadata [\#279]( ([jessicayuen](
- Small fixes to release process [\#275]( ([jbeda](
- Document using goreleaser [\#274]( ([jbeda](
- Clarify error message for duplicate packages on install [\#271]( ([jessicayuen](
- Add command 'component list' [\#268]( ([jessicayuen](
- design proposal: ksonnet lib simple constructors [\#267]( ([bryanl](
- convert from govendor to dep [\#265]( ([bryanl](
- Reference current Slack channel in README [\#257]( ([lblackstone](
- Supports k8s version number including symbols etc. [\#254]( ([kyamazawa](
- Handle case where KUBECONFIG is set without named context [\#253]( ([lblackstone](
- Create a GitHub issue template [\#252]( ([lblackstone](
- Allow make file to generate ks bin with custom version and name [\#249]( ([bryanl](
## [v0.8.0]( (2017-12-20)
[Full Changelog](
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment