## 0.23.0 *Features* - New command: `kubernetes-render` is a tool for rendering ERB templates to raw Kubernetes YAML. It's useful for seeing what `kubernetes-deploy` does before actually invoking `kubectl` on the rendered YAML. It's also useful for outputting YAML that can be passed to other tools, for validation or introspection purposes. ([#375](https://github.com/Shopify/kubernetes-deploy/pull/375/files)) - **[Breaking change]** This release completes the conversion of `kubernetes-deploy` StatsD metrics to `distribution`s, which was done for `kubernetes-restart` and `kubernetes-run` in v0.22.0. - Several new distribution metrics are available to give insight into the timing of each step of the deploy process: `KubernetesDeploy.validate_configuration.duration`, `KubernetesDeploy.discover_resources.duration`, `KubernetesDeploy.validate_resources.duration`, `KubernetesDeploy.initial_status.duration`, `KubernetesDeploy.create_ejson_secrets.duration`, `KubernetesDeploy.apply_all.duration`, `KubernetesDeploy.sync.duration` - **[Breaking change]** `KubernetesDeploy.resource.duration` no longer includes `sha` or `resource` tags. ([#392](https://github.com/Shopify/kubernetes-deploy/pull/392)) *Enhancements* - Roles are now predeployed before RoleBindings ([#380](https://github.com/Shopify/kubernetes-deploy/pull/380)) - Several performance enhancements for deploys to namespaces with hundreds of resources. - KubernetesDeploy no longer modifies the global StatsD configuration when used as a gem ([#384](https://github.com/Shopify/kubernetes-deploy/pull/384)) *Bug fixes* - Handle out-of-order arrival of entries from different streams when processing logs ([#401](https://github.com/Shopify/kubernetes-deploy/pull/401)) ## 0.22.0 *Features* - **[Breaking change]** `kubernetes-restart` now produces StatsD `distribution` instead of `metric`. Dashboards that used these metrics will need to be updated. ([#374](https://github.com/Shopify/kubernetes-deploy/pull/374)) - `kubernetes-run` now produces StatsD `distribution` to aid in tracking usage ([#374](https://github.com/Shopify/kubernetes-deploy/pull/374)) *Enhancements* - Predeploy RoleBinding before unmanaged pods ([#354](https://github.com/Shopify/kubernetes-deploy/pull/354)) *Bug Fixes* - Fixed bug in `kubernetes-restart` that caused "Pod spec does not contain a template container called 'task-runner'" error message to not be printed ([#371](https://github.com/Shopify/kubernetes-deploy/pull/371)) *Other* - Kubernetes 1.8 is no longer officially supported as of this version ## 0.21.1 *Enhancements* - Improved failure detection for job resources. ([#355](https://github.com/Shopify/kubernetes-deploy/pull/355)) - Unmanaged pods are now immediately identified as failed if they are evicted, preempted or deleted out of band. This is especially important to `kubernetes-run`. ([#353](https://github.com/Shopify/kubernetes-deploy/pull/353)) *Other* - Relaxed our `googleauth` dependency. ([#333](https://github.com/Shopify/kubernetes-deploy/pull/333)) ## 0.21.0 *Features* - **[Breaking change]** `kubernetes-run` now streams container logs and waits for the pod to succeed or fail **by default**. You can disable this using `--skip-wait`, or you can use `--max-watch-seconds=seconds` to set a time limit on the watch. ([#337](https://github.com/Shopify/kubernetes-deploy/pull/337)) *Other* - Kubernetes 1.7 is no longer officially supported as of this version ## 0.20.6 *Enhancements* - All resources marked as prunable will now be added to the prune whitelist ([#326](https://github.com/Shopify/kubernetes-deploy/pull/326)) - Improve deploy status detection by ensuring we examine the correct generation ([#325](https://github.com/Shopify/kubernetes-deploy/pull/325)) ## 0.20.5 *Enhancements* - Add Job resource class ([#295](https://github.com/Shopify/kubernetes-deploy/pull/296)) - Add CustomResourceDefinition resource class ([#306](https://github.com/Shopify/kubernetes-deploy/pull/306)) - Officially support Kubernetes 1.10 ([#308](https://github.com/Shopify/kubernetes-deploy/pull/308)) - SyncMediator will only batch fetch resources when there is a sufficiently large enough set of resources being tracked ([#316](https://github.com/Shopify/kubernetes-deploy/pull/316)) - Allow CRs to be pruned based on `kubernetes-deploy.shopify.io/prunable` annotation on the custom resource definitions ([312](https://github.com/Shopify/kubernetes-deploy/pull/312)) - Add HorizontalPodAutoscaler resource class ([#305](https://github.com/Shopify/kubernetes-deploy/pull/305)) *Bug Fixes* - Prevent crash when STATSD_IMPLEMENTATION isn't set. ([#3242](https://github.com/Shopify/kubernetes-deploy/pull/324)) ### 0.20.4 *Enhancements* - Don't consider pod preempting a failure ([#317](https://github.com/shopify/kubernetes-deploy/pull/317)) ### 0.20.3 *Enhancements* - Evictions are recoverable so prevent them from triggering fast failure detection ([#293](https://github.com/Shopify/kubernetes-deploy/pull/293)). - Use YAML.safe_load over YAML.load_file ([#295](https://github.com/Shopify/kubernetes-deploy/pull/295)). *Bug Fixes* - Default rollout strategy is compatible required-rollout annotation ([#289](https://github.com/Shopify/kubernetes-deploy/pull/289)). ### 0.20.2 *Enhancements* - Emit data dog events when deploys succeed, time out or fail ([#292](https://github.com/Shopify/kubernetes-deploy/pull/292)). ### 0.20.1 *Bug Fixes* - Display a nice error instead of crashing when a YAML document is missing 'Kind' ([#280](https://github.com/Shopify/kubernetes-deploy/pull/280)) - Prevent DaemonSet from succeeding before rollout finishes ([#288](https://github.com/Shopify/kubernetes-deploy/issues/288)) *Enhancements* - Merge multiple `--bindings` arguments, to allow a composite bindings map (multiple arguments or files) ### 0.20.0 *Features* - Automatically add all Kubernetes namespace labels to StatsD tags ([#278](https://github.com/Shopify/kubernetes-deploy/pull/278)) *Bug Fixes* - Prevent calling sleep with a negative value ([#273](https://github.com/Shopify/kubernetes-deploy/pull/273)) - Prevent no-op redeploys of bad code from hanging forever ([#262](https://github.com/Shopify/kubernetes-deploy/pull/262)) *Enhancements* - Improve output for rendering errors ([#253](https://github.com/Shopify/kubernetes-deploy/pull/253)) ### 0.19.0 *Features* - Added `--max-watch-seconds=seconds` to kubernetes-restart and kubernetes-deploy. When set a timeout error is raised if it takes longer than _seconds_ for any resource to deploy. - Adds YAML and JSON file reference support to the kubernetes-deploy `--bindings` argument ([#269](https://github.com/Shopify/kubernetes-deploy/pull/269)) *Enhancements* - Prune resource quotas ([#264](https://github.com/Shopify/kubernetes-deploy/pull/264/files)) *Bug Fixes* - Update gemspec to reflect need for ActiveSupport >= 5.0([#270](https://github.com/Shopify/kubernetes-deploy/pull/270)) ### 0.18.1 *Enhancements* - Change the way the resource watcher fetches resources to make it more efficient for large deploys. Deploys with hundreds of resources are expected to see a measurable performance improvement from this change. ([#251](https://github.com/Shopify/kubernetes-deploy/pull/251)) ### 0.18.0 *Features* - kubernetes-restart and kubernetes-deploy use exit code 70 when a deploy fails due to one or more resources failing to deploy in time. ([#244](https://github.com/Shopify/kubernetes-deploy/pull/244)) *Bug Fixes* - Handle deploying thousands of resources at a time, previously kubernetes-deploy would fail with `Argument list too long - kubectl (Errno::E2BIG)`. ([#257](https://github.com/Shopify/kubernetes-deploy/pull/257)) ### 0.17.0 *Enhancements* - Add the `--cascade` flag when we force replace a resource. ([#250](https://github.com/Shopify/kubernetes-deploy/pull/250)) ### 0.16.0 **Important:** This release changes the officially supported Kubernetes versions to v1.7 through v1.9. Other versions may continue to work, but we are no longer running our test suite against them. *Features* - Support partials to reduce duplication in yaml files ([#207](https://github.com/Shopify/kubernetes-deploy/pull/207)) *Bug Fixes* - Handle podless deamon sets properly ([#242](https://github.com/Shopify/kubernetes-deploy/pull/242)) ### 0.15.2 *Enhancements* - Print warnings if kubernetes server version is not supported ([#237](https://github.com/Shopify/kubernetes-deploy/pull/237)). - Possible via env var to disable fetching logs and/or events on deployment failure ([#239](https://github.com/Shopify/kubernetes-deploy/pull/239)). - The `kubernetes-deploy.shopify.io/required-rollout` annotation now takes a percent (e.g. 90%) ([#240](https://github.com/Shopify/kubernetes-deploy/pull/240)). ### 0.15.1 *Enhancements* - Fetch debug events and logs for failed resources in parallel ([#238](https://github.com/Shopify/kubernetes-deploy/pull/238)) ### 0.15.0 *Bug Fixes* - None *Enhancements* - Support for cronjob resource ([#206](https://github.com/Shopify/kubernetes-deploy/pull/206])). - Make it possible to override the tool's hard timeout for one specific resource via the `kubernetes-deploy.shopify.io/timeout-override` annotation ([#232](https://github.com/Shopify/kubernetes-deploy/pull/232)). - Make it possible to modify how many replicas need to be updated and available before a deployment is considered successful via the `kubernetes-deploy.shopify.io/required-rollout` annotation ([#208](https://github.com/Shopify/kubernetes-deploy/pull/208)). ### 0.14.1 *Bug Fixes* - Make deployments whose pods crash because of CreateContainerConfigError fail fast in 1.8+ too (they would previously time out). - Fix crashes when deploying ExternalName services or services without selectors ([#211](https://github.com/Shopify/kubernetes-deploy/pull/211)) - Predeploy ServiceAccount resources ([#221](https://github.com/Shopify/kubernetes-deploy/pull/221)) *Enhancements* - Make it possible to pass bindings (via the --bindings flag) for which the value contains commas or is a JSON encoded hash ([#219](https://github.com/Shopify/kubernetes-deploy/pull/219)) - Support KUBECONFIG referencing multiple files ([#222](https://github.com/Shopify/kubernetes-deploy/pull/222)) ### 0.14.0 *Bug Fixes* - Fix incorrect timeouts occasionally observed on deployments using progressDeadlineSeconds in Kubernetes <1.7.7 *Enhancements* - Renamed `KubernetesDeploy::Runner` (which powers `exe/kubernetes-deploy`) to `KubernetesDeploy::DeployTask`. This increases consistency between our primary class names and avoids confusion with `KubernetesDeploy::RunnerTask` (which powers `exe/kubernetes-run`). - Improved output related to timeouts. For deployments, both failure and timeout output now mentions the referenced replica set. - Small improvements to the reliability of the success polling. - EjsonSecretProvisioner no longer logs kubectl command output (which may contain secret data) when debug-level logging is enabled. ### 0.13.0 *Features* - Added support for StatefulSets for kubernetes 1.7+ using RollingUpdate *Bug Fixes* - Explicitly require the minimum rest-client version required by kubeclient ([#202](https://github.com/Shopify/kubernetes-deploy/pull/202)) *Enhancements* - Begin official support for Kubernetes v1.8 ([#198](https://github.com/Shopify/kubernetes-deploy/pull/198), [#200](https://github.com/Shopify/kubernetes-deploy/pull/200)) ### 0.12.12 *Bug Fixes* - Fix an issue deploying Shopify's internal custom resources. ### 0.12.11 *Bug Fixes* - Stop appending newlines to the base64-encoded values of secrets created from ejson. These extra newlines were preventing the ejson->k8s secret feature from working with v1.8 (https://github.com/Shopify/kubernetes-deploy/pull/196). ### 0.12.10 *Enhancement* - Log reason if deploy times out due to `progressDeadlineSeconds` being exceeded ### 0.12.9 *Bug Fixes* - Retry discovering namespace and kubernetes context - Expose real error during namespace discovery ### 0.12.8 *Bug Fixes* - Force deployment to use its own hard timeout instead of relying on the replica set