diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c8bd4932e4f3ae949709dab2024ef9199b3349b..d8cf7d24eeaa53cadceae31f65ecee5db0d052fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,219 @@ # Change Log +## [v0.9.0](https://github.com/ksonnet/ksonnet/tree/v0.9.0) (2017-03-05) +[Iteration Plan](https://github.com/ksonnet/ksonnet/issues/306) + +[Full Changelog](https://github.com/ksonnet/ksonnet/compare/v0.8.0...v0.9.0) + +### 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. + +_i.e._, +``` +{ + "server": "https://35.230.00.00", + "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. + +_i.e._, +``` +apiVersion: 0.0.1 +environments: + default: + destination: + namespace: default + server: https://35.230.00.00 + k8sVersion: v1.7.0 + path: default +kind: ksonnet.io/app +name: new +registries: + incubator: + gitVersion: + commitSha: 422d521c05aa905df949868143b26445f5e4eda5 + refSpec: master + protocol: github + uri: github.com/ksonnet/parts/tree/master/incubator +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_ + field. + +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: +``` +my-ks-app +├── 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: +``` +environments: + dev: + k8sVersion: 1.7.0 + destinations: + namespace: default + server: https://35.230.00.00 + targets: + - 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](https://github.com/ksonnet/ksonnet/blob/v0.9.0/docs/cli-reference/ks_component_list.md). + +#### ks component rm + +`ks component rm` is a new command. See docs [here](https://github.com/ksonnet/ksonnet/blob/v0.9.0/docs/cli-reference/ks_component_rm.md). + +### 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](https://github.com/ksonnet/ksonnet/issues/322) +- Incorrect imports in ks generated files [\#321](https://github.com/ksonnet/ksonnet/issues/321) +- delete component ERROR strconv.Atoi: parsing "8+": invalid syntax [\#316](https://github.com/ksonnet/ksonnet/issues/316) +- ks param set when used with boolean does not create string value [\#311](https://github.com/ksonnet/ksonnet/issues/311) +- Move custom constructors k8s.libsonnet to k.libsonnet [\#304](https://github.com/ksonnet/ksonnet/issues/304) +- ERROR user: Current not implemented on linux/amd64 [\#298](https://github.com/ksonnet/ksonnet/issues/298) +- Difficulty handling components unique to environments [\#292](https://github.com/ksonnet/ksonnet/issues/292) +- ks delete ERROR strconv.Atoi [\#272](https://github.com/ksonnet/ksonnet/issues/272) +- Create darwin binaries and make the available via brew [\#270](https://github.com/ksonnet/ksonnet/issues/270) +- Unable to install packages with the same name under different registries [\#269](https://github.com/ksonnet/ksonnet/issues/269) +- prototypes can't rely on a registry name, but they do [\#262](https://github.com/ksonnet/ksonnet/issues/262) +- Confirm that ksonnet-lib generation works for Kubernetes 1.9[\#260](https://github.com/ksonnet/ksonnet/issues/260) +- ks can't recognise the registry 'kubeflow'[\#258](https://github.com/ksonnet/ksonnet/issues/258) +- ksonnet.io website is not available[\#256](https://github.com/ksonnet/ksonnet/issues/256) +- ks init fails when using $KUBECONFIG env var[\#251](https://github.com/ksonnet/ksonnet/issues/251) +- Badly formatted client-go version string[\#250](https://github.com/ksonnet/ksonnet/issues/250) +- Remove components[\#243](https://github.com/ksonnet/ksonnet/issues/243) +- List components[\#242](https://github.com/ksonnet/ksonnet/issues/242) + +**Merged pull requests:** + +- Attempt to generate lib directory when not found [\#337](https://github.com/ksonnet/ksonnet/pull/337) ([jessicayuen](https://github.com/jessicayuen)) +- Fix the execution paths for the 0.8 > 0.9 migration warning [\#335](https://github.com/ksonnet/ksonnet/pull/337) ([jessicayuen](https://github.com/jessicayuen)) +- Resolve api spec based on swagger version [\#334](https://github.com/ksonnet/ksonnet/pull/334) ([jessicayuen](https://github.com/jessicayuen)) +- Use new ksonnet lib generator [\#333](https://github.com/ksonnet/ksonnet/pull/333) ([bryanl](https://github.com/bryanl)) +- Set param boolean types as strings [\#331](https://github.com/ksonnet/ksonnet/pull/331) ([jessicayuen](https://github.com/jessicayuen)) +- Create support for plugins in ksonnet [\#330](https://github.com/ksonnet/ksonnet/pull/333) ([bryanl](https://github.com/bryanl)) +- Fix bug with invalid base.libsonnet import path [\#329](https://github.com/ksonnet/ksonnet/pull/329) ([jessicayuen](https://github.com/jessicayuen)) +- App spec to take a single destination [\#328](https://github.com/ksonnet/ksonnet/pull/328) ([jessicayuen](https://github.com/jessicayuen)) +- Add warning for running deprecated ks app against ks >= 0.9.0 [\#327](https://github.com/ksonnet/ksonnet/pull/327) ([jessicayuen](https://github.com/jessicayuen)) +- Pull client-go logic out of cmd/root.go and into client/ package [\#324](https://github.com/ksonnet/ksonnet/pull/324) ([jessicayuen](https://github.com/jessicayuen)) +- Introduce component namespaces [\#323](https://github.com/ksonnet/ksonnet/pull/323) ([bryanl](https://github.com/bryanl)) +- Add LibManager for managing k8s API and ksonnet-lib metadata [\#315](https://github.com/ksonnet/ksonnet/pull/315) ([jessicayuen](https://github.com/jessicayuen)) +- Migrate environment spec.json to the app.yaml model [\#309](https://github.com/ksonnet/ksonnet/pull/309) ([jessicayuen](https://github.com/jessicayuen)) +- Add interface for Environment Spec [\#308](https://github.com/ksonnet/ksonnet/pull/309) ([jessicayuen](https://github.com/jessicayuen)) +- Extract ksonnet generator [\#307](https://github.com/ksonnet/ksonnet/pull/307) ([bryanl](https://github.com/bryanl)) +- [docs] Clarify prototypes + add troubleshooting issue [\#303](https://github.com/ksonnet/ksonnet/pull/303) ([abiogenesis-now](https://github.com/abiogenesis-now)) +- updating 1.0 roadmap [\#302](https://github.com/ksonnet/ksonnet/pull/302) ([bryanl](https://github.com/bryanl)) +- use afero when possible [\#301](https://github.com/ksonnet/ksonnet/pull/301) ([bryanl](https://github.com/bryanl)) +- Upgrade to client-go version 5 [\#299](https://github.com/ksonnet/ksonnet/pull/299) ([jessicayuen](https://github.com/jessicayuen)) +- Proposal: Modular components and cleaner environments [\#295](https://github.com/ksonnet/ksonnet/pull/295) ([jessicayuen](https://github.com/jessicayuen)) +- pruning vendor from dep conversion [\#293](https://github.com/ksonnet/ksonnet/pull/293) ([bryanl](https://github.com/bryanl)) +- Versions retrospective and fixes [\#289](https://github.com/ksonnet/ksonnet/pull/289) ([hausdorff](https://github.com/hausdorff)) +- Add remove component functionality [\#288](https://github.com/ksonnet/ksonnet/pull/288) ([jessicayuen](https://github.com/jessicayuen)) +- Construct apimachinery version [\#285](https://github.com/ksonnet/ksonnet/pull/285) ([bryanl](https://github.com/bryanl)) +- Removing realpath [\#283](https://github.com/ksonnet/ksonnet/pull/283) ([kris-nova](https://github.com/kris-nova)) +- Implement explicit env metadata [\#282](https://github.com/ksonnet/ksonnet/pull/282) ([jessicayuen](https://github.com/jessicayuen)) +- Design: propose improvements to the "fresh clone" story [\#280](https://github.com/ksonnet/ksonnet/pull/280) ([hausdorff](https://github.com/hausdorff)) +- Design proposal: explicit environment metadata [\#279](https://github.com/ksonnet/ksonnet/pull/279) ([jessicayuen](https://github.com/jessicayuen)) +- Small fixes to release process [\#275](https://github.com/ksonnet/ksonnet/pull/275) ([jbeda](https://github.com/jbeda)) +- Document using goreleaser [\#274](https://github.com/ksonnet/ksonnet/pull/274) ([jbeda](https://github.com/jbeda)) +- Clarify error message for duplicate packages on install [\#271](https://github.com/ksonnet/ksonnet/pull/271) ([jessicayuen](https://github.com/jessicayuen)) +- Add command 'component list' [\#268](https://github.com/ksonnet/ksonnet/pull/268) ([jessicayuen](https://github.com/jessicayuen)) +- design proposal: ksonnet lib simple constructors [\#267](https://github.com/ksonnet/ksonnet/pull/267) ([bryanl](https://github.com/bryanl)) +- convert from govendor to dep [\#265](https://github.com/ksonnet/ksonnet/pull/265) ([bryanl](https://github.com/bryanl)) +- Reference current Slack channel in README [\#257](https://github.com/ksonnet/ksonnet/pull/257) ([lblackstone](https://github.com/lblackstone)) +- Supports k8s version number including symbols etc. [\#254](https://github.com/ksonnet/ksonnet/pull/254) ([kyamazawa](https://github.com/kyamazawa)) +- Handle case where KUBECONFIG is set without named context [\#253](https://github.com/ksonnet/ksonnet/pull/253) ([lblackstone](https://github.com/lblackstone)) +- Create a GitHub issue template [\#252](https://github.com/ksonnet/ksonnet/pull/252) ([lblackstone](https://github.com/lblackstone)) +- Allow make file to generate ks bin with custom version and name [\#249](https://github.com/ksonnet/ksonnet/pull/249) ([bryanl](https://github.com/bryanl)) + ## [v0.8.0](https://github.com/ksonnet/ksonnet/tree/v0.8.0) (2017-12-20) [Full Changelog](https://github.com/ksonnet/ksonnet/compare/v0.7.0...v0.8.0)