@anguslees anguslees released this Jul 19, 2018 · 8 commits to master since this release

Assets 4
  • kubecfg validate now ignores object kinds that are not found in the server discovery data by default.
    This matches the behaviour of kubectl, and allows CRDs to "just work" (ie: be silently ignored) in more cases. See --ignore-unknown flag to force other behaviour.
  • Phase 1 for migrating the gc-tag from an annotation to a label.
    In this release, kubecfg --gc-tag=... writes the gc-tag to both the old annotation and new label, but continues to read from the annotation. A future version will move to the label exclusively - see #205 for overall progress.
  • Improve error message when kubecfg encounters an unexpected jsonnet result structure.
  • null values at object level in jsonnet results are now silently ignored.
    This is sometimes seen in helm template output, and is also useful to conditionally "whiteout" objects. Note null values within objects are still preserved at this stage.
  • client-go upgraded to kubernetes-1.10.3
    • As part of this upgrade, kubecfg now uses the server's OpenAPI schema and not Swagger.

@anguslees anguslees released this Apr 2, 2018 · 36 commits to master since this release

Assets 4

Big feature: import now works on URLs!

  • So things like the following are possible. I recommend using a specific tag/commit URL in practice.
local kube = import "https://raw.githubusercontent.com/bitnami-labs/kube-libsonnet/master/kube.libsonnet";
kube.Secret("foo") {data_+: {foo: "sekret!"}}
  • Note that if remote file A imports a relative path B, then B is resolved relative to A's location (and then along the search path if not found), just as it always was with local paths.
  • New flag: --jurl that is like --jpath but accepts a URL to add to the search path.
  • HTTP/S requests are performed using golang net/http, and should obey http_proxy, etc.
  • The actual "top level" kubecfg input arguments must be local paths for now. These will also change to support URLs in a future release.
  • Thanks to @petr-k for another amazing code contribution!

Other changes:

  • -J argument handling has been changed (ie: fixed). It can now be specified multiple times to add multiple search directories, as always intended.
  • kubecfg.libsonnet is now embedded in the binary (last in the search path), so import "kubecfg.libsonnet" should always work.
  • New completion subcommand that outputs shell completion. source <(kubecfg completion) for bash.
  • Now uses client-go v5.0.1
  • Now uses go-jsonnet v0.10.0, which includes various new std functions.
  • validate now skips resource kinds that can't be found in the server schema, but do appear in the server discovery information. In particular, this allows CRDs to pass validation. Thanks to @mmikulicic!
  • Objects are now validated against the server schema at the beginning of an update (by default).

@anguslees anguslees released this Feb 14, 2018 · 65 commits to master since this release

Assets 4
  • Replace jsonnet_cgo with go-jsonnet
    • No more cgo (yay)
    • Please file bugs if you notice any regressions in functionality or stability
    • Thanks to @petr-k for doing the conversion
  • Releases built with go1.9
  • (v0.7.1 fixes an issue with the v0.7.0 release auto-build)
  • (v0.7.2 fixes another issue with osx release auto-build)

@anguslees anguslees released this Feb 9, 2018 · 67 commits to master since this release

Assets 3
  • Replace jsonnet_cgo with go-jsonnet
    • No more cgo (yay)
    • Please file bugs if you notice any regressions in functionality or stability
    • Thanks to @petr-k for doing the conversion
  • Releases built with go1.9
  • (v0.7.1 fixes an issue with the v0.7.0 release auto-build)

@anguslees anguslees released this Feb 9, 2018 · 69 commits to master since this release

Assets 2
  • Replace jsonnet_cgo with go-jsonnet
    • No more cgo (yay)
    • Please file bugs if you notice any regressions in functionality or stability
    • Thanks to @petr-k for doing the conversion
  • Releases built with go1.9

@anguslees anguslees released this Dec 14, 2017 · 77 commits to master since this release

Assets 4
  • Fix incorrect parsing of k8s minor version (affects GKE in particular)
  • Sorting objects for update/delete is much improved (uses schema information)
  • Update to use client-go v4.0

@anguslees anguslees released this Aug 16, 2017 · 187 commits to master since this release

Assets 3
  • Add validate subcommand. This validates API objects against the server's published OpenAPI schema. Online-only for now.
  • Added opt-in "garbage collection" to update. If you run update repeatedly with the same --gc-tag value, then update will now delete API objects with that "tag" on the server that are no longer found in local config.
    • To start using this feature, just start using --gc-tag (and importantly specify the same set of input files on each invocation). "Stale" objects will be deleted on the second and subsequent update runs.
    • To stop using this feature, just stop using --gc-tag.
    • kubecfg update -v --gc-tag=foo --dry-run can be used to indicate what (if any) objects will be deleted (not a 100% accurate representation, since actually creating/updating objects might alter the state of the cluster)
    • Multiple disjoint pipelines pushing to the same cluster using different --gc-tag values and different input files are safe.

@anguslees anguslees released this Aug 8, 2017 · 200 commits to master since this release

Assets 4
  • Updated to client_go release-3.0
  • Added "subset" diff strategy that omits fields that don't appear in local config
  • diff now exits with an easily recognisable exit code 10 if a diff is found
  • New native jsonnet functions:
    • manifestJson / manifestYaml: Format jsonnet objects as JSON/YAML. Unlike std.toString(), manifestJson outputs "pretty" JSON (multi-line and indented).

@anguslees anguslees released this Jul 1, 2017 · 231 commits to master since this release

Assets 4
  • Updated to jsonnet_cgo/jsonnet v0.9.4
  • Support jsonnet "external variables" and "top-level arguments" via -V name=value, and related flags (thanks @GauntletWizard)
  • Add several jsonnet native functions:
    • parseJson / parseYaml: parse a JSON/YAML string into jsonnet object
    • resolveImage: Rewrite a docker image name into a "more canonical" form, including optionally looking up a registry to fetch specific image digest
    • regexMatch / regexSubst / escapeStringRegex: Commonly-requested regex string match/replace functions
    • See lib/kubecfg.libsonnet comments for details

@anguslees anguslees released this Jun 14, 2017 · 269 commits to master since this release

Assets 4
  • delete and diff subcommands implemented
  • osx binary added to release process
  • fixed reading yaml files