tobsch-krane 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.buildkite/pipeline.nightly.yml +43 -0
- data/.github/probots.yml +2 -0
- data/.gitignore +20 -0
- data/.rubocop.yml +17 -0
- data/.shopify-build/VERSION +1 -0
- data/.shopify-build/kubernetes-deploy.yml +53 -0
- data/1.0-Upgrade.md +185 -0
- data/CHANGELOG.md +431 -0
- data/CODE_OF_CONDUCT.md +46 -0
- data/CONTRIBUTING.md +164 -0
- data/Gemfile +16 -0
- data/ISSUE_TEMPLATE.md +25 -0
- data/LICENSE.txt +21 -0
- data/README.md +655 -0
- data/Rakefile +36 -0
- data/bin/ci +21 -0
- data/bin/setup +16 -0
- data/bin/test +47 -0
- data/dev.yml +28 -0
- data/dev/flamegraph-from-tests +35 -0
- data/exe/krane +5 -0
- data/krane.gemspec +44 -0
- data/lib/krane.rb +7 -0
- data/lib/krane/bindings_parser.rb +88 -0
- data/lib/krane/cli/deploy_command.rb +75 -0
- data/lib/krane/cli/global_deploy_command.rb +54 -0
- data/lib/krane/cli/krane.rb +91 -0
- data/lib/krane/cli/render_command.rb +41 -0
- data/lib/krane/cli/restart_command.rb +34 -0
- data/lib/krane/cli/run_command.rb +54 -0
- data/lib/krane/cli/version_command.rb +13 -0
- data/lib/krane/cluster_resource_discovery.rb +113 -0
- data/lib/krane/common.rb +23 -0
- data/lib/krane/concerns/template_reporting.rb +29 -0
- data/lib/krane/concurrency.rb +18 -0
- data/lib/krane/container_logs.rb +106 -0
- data/lib/krane/deferred_summary_logging.rb +95 -0
- data/lib/krane/delayed_exceptions.rb +14 -0
- data/lib/krane/deploy_task.rb +363 -0
- data/lib/krane/deploy_task_config_validator.rb +29 -0
- data/lib/krane/duration_parser.rb +27 -0
- data/lib/krane/ejson_secret_provisioner.rb +154 -0
- data/lib/krane/errors.rb +28 -0
- data/lib/krane/formatted_logger.rb +57 -0
- data/lib/krane/global_deploy_task.rb +210 -0
- data/lib/krane/global_deploy_task_config_validator.rb +12 -0
- data/lib/krane/kubeclient_builder.rb +156 -0
- data/lib/krane/kubectl.rb +120 -0
- data/lib/krane/kubernetes_resource.rb +621 -0
- data/lib/krane/kubernetes_resource/cloudsql.rb +43 -0
- data/lib/krane/kubernetes_resource/config_map.rb +22 -0
- data/lib/krane/kubernetes_resource/cron_job.rb +18 -0
- data/lib/krane/kubernetes_resource/custom_resource.rb +87 -0
- data/lib/krane/kubernetes_resource/custom_resource_definition.rb +98 -0
- data/lib/krane/kubernetes_resource/daemon_set.rb +90 -0
- data/lib/krane/kubernetes_resource/deployment.rb +213 -0
- data/lib/krane/kubernetes_resource/horizontal_pod_autoscaler.rb +65 -0
- data/lib/krane/kubernetes_resource/ingress.rb +18 -0
- data/lib/krane/kubernetes_resource/job.rb +60 -0
- data/lib/krane/kubernetes_resource/network_policy.rb +22 -0
- data/lib/krane/kubernetes_resource/persistent_volume_claim.rb +80 -0
- data/lib/krane/kubernetes_resource/pod.rb +269 -0
- data/lib/krane/kubernetes_resource/pod_disruption_budget.rb +23 -0
- data/lib/krane/kubernetes_resource/pod_set_base.rb +71 -0
- data/lib/krane/kubernetes_resource/pod_template.rb +20 -0
- data/lib/krane/kubernetes_resource/replica_set.rb +92 -0
- data/lib/krane/kubernetes_resource/resource_quota.rb +22 -0
- data/lib/krane/kubernetes_resource/role.rb +22 -0
- data/lib/krane/kubernetes_resource/role_binding.rb +22 -0
- data/lib/krane/kubernetes_resource/secret.rb +24 -0
- data/lib/krane/kubernetes_resource/service.rb +104 -0
- data/lib/krane/kubernetes_resource/service_account.rb +22 -0
- data/lib/krane/kubernetes_resource/stateful_set.rb +70 -0
- data/lib/krane/label_selector.rb +42 -0
- data/lib/krane/oj.rb +4 -0
- data/lib/krane/options_helper.rb +39 -0
- data/lib/krane/remote_logs.rb +60 -0
- data/lib/krane/render_task.rb +118 -0
- data/lib/krane/renderer.rb +118 -0
- data/lib/krane/resource_cache.rb +68 -0
- data/lib/krane/resource_deployer.rb +265 -0
- data/lib/krane/resource_watcher.rb +171 -0
- data/lib/krane/restart_task.rb +228 -0
- data/lib/krane/rollout_conditions.rb +103 -0
- data/lib/krane/runner_task.rb +212 -0
- data/lib/krane/runner_task_config_validator.rb +18 -0
- data/lib/krane/statsd.rb +65 -0
- data/lib/krane/task_config.rb +22 -0
- data/lib/krane/task_config_validator.rb +96 -0
- data/lib/krane/template_sets.rb +173 -0
- data/lib/krane/version.rb +4 -0
- data/pull_request_template.md +8 -0
- data/screenshots/deploy-demo.gif +0 -0
- data/screenshots/migrate-logs.png +0 -0
- data/screenshots/missing-secret-fail.png +0 -0
- data/screenshots/success.png +0 -0
- data/screenshots/test-output.png +0 -0
- metadata +375 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7ac5555e07577c1455e1a585517d7d34bb65aba69c6fa0e9f8b9a154d1c28c3b
|
4
|
+
data.tar.gz: 0afa30ced72454746dd1ed4ff09bc80009815e7861d00388f226913ed267dab3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a3e78c320b0fa1f9ba73c2f30f985fd08d82880a9a91980be849bcfdf2444ceb1786aa27619111be211db5c50badb4d060cfb3f73aeac14e73c246fd26b211ac
|
7
|
+
data.tar.gz: bd182747c91c7963bbce50d120368489ebedff6b1cb8451a173816ff1642ec89844e2f73ab321997ac8d2df25ed9a3c53f7c10b4fbbe9123cd86b8fafd4368c2
|
@@ -0,0 +1,43 @@
|
|
1
|
+
steps:
|
2
|
+
- name: 'Run Test Suite (:kubernetes: 1.16-latest)'
|
3
|
+
command: bin/ci
|
4
|
+
agents:
|
5
|
+
queue: k8s-ci
|
6
|
+
env:
|
7
|
+
LOGGING_LEVEL: 4
|
8
|
+
KUBERNETES_VERSION: v1.16-latest
|
9
|
+
- name: 'Run Test Suite (:kubernetes: 1.15-latest)'
|
10
|
+
command: bin/ci
|
11
|
+
agents:
|
12
|
+
queue: k8s-ci
|
13
|
+
env:
|
14
|
+
LOGGING_LEVEL: 4
|
15
|
+
KUBERNETES_VERSION: v1.15-latest
|
16
|
+
- name: 'Run Test Suite (:kubernetes: 1.14-latest)'
|
17
|
+
command: bin/ci
|
18
|
+
agents:
|
19
|
+
queue: k8s-ci
|
20
|
+
env:
|
21
|
+
LOGGING_LEVEL: 4
|
22
|
+
KUBERNETES_VERSION: v1.14-latest
|
23
|
+
- name: 'Run Test Suite (:kubernetes: 1.13-latest)'
|
24
|
+
command: bin/ci
|
25
|
+
agents:
|
26
|
+
queue: k8s-ci
|
27
|
+
env:
|
28
|
+
LOGGING_LEVEL: 4
|
29
|
+
KUBERNETES_VERSION: v1.13-latest
|
30
|
+
- name: 'Run Test Suite (:kubernetes: 1.12-latest)'
|
31
|
+
command: bin/ci
|
32
|
+
agents:
|
33
|
+
queue: k8s-ci
|
34
|
+
env:
|
35
|
+
LOGGING_LEVEL: 4
|
36
|
+
KUBERNETES_VERSION: v1.12-latest
|
37
|
+
- name: 'Run Test Suite (:kubernetes: 1.11-latest)'
|
38
|
+
command: bin/ci
|
39
|
+
agents:
|
40
|
+
queue: k8s-ci
|
41
|
+
env:
|
42
|
+
LOGGING_LEVEL: 4
|
43
|
+
KUBERNETES_VERSION: v1.11-latest
|
data/.github/probots.yml
ADDED
data/.gitignore
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
/.bundle/
|
2
|
+
/.yardoc
|
3
|
+
/Gemfile.lock
|
4
|
+
/_yardoc/
|
5
|
+
/coverage/
|
6
|
+
/doc/
|
7
|
+
/pkg/
|
8
|
+
/spec/reports/
|
9
|
+
/tmp/
|
10
|
+
|
11
|
+
# Ignore RuboCop cache
|
12
|
+
.rubocop-http---shopify-github-io-ruby-style-guide-rubocop-yml
|
13
|
+
|
14
|
+
.byebug_history
|
15
|
+
.ruby-version
|
16
|
+
coverage/*
|
17
|
+
dev/flamegraph.svg
|
18
|
+
dev/profile
|
19
|
+
dev/flamegraph.pl
|
20
|
+
.local-context
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
inherit_from:
|
2
|
+
- http://shopify.github.io/ruby-style-guide/rubocop.yml
|
3
|
+
|
4
|
+
AllCops:
|
5
|
+
TargetRubyVersion: 2.4
|
6
|
+
|
7
|
+
Naming/FileName:
|
8
|
+
Enabled: true
|
9
|
+
Exclude:
|
10
|
+
- lib/krane.rb
|
11
|
+
|
12
|
+
Sorbet/ConstantsFromStrings:
|
13
|
+
Enabled: false
|
14
|
+
|
15
|
+
Layout/Tab:
|
16
|
+
Exclude:
|
17
|
+
- test/integration/krane_deploy_test.rb
|
@@ -0,0 +1 @@
|
|
1
|
+
v1
|
@@ -0,0 +1,53 @@
|
|
1
|
+
containers:
|
2
|
+
default:
|
3
|
+
docker: circleci/ruby:2.4.6-node-browsers
|
4
|
+
|
5
|
+
steps:
|
6
|
+
- label: Lint
|
7
|
+
timeout: 5m
|
8
|
+
run:
|
9
|
+
- bundle exec rubocop
|
10
|
+
dependencies:
|
11
|
+
- bundler
|
12
|
+
- label: 'Run Test Suite (:kubernetes: 1.16-latest)'
|
13
|
+
command: bin/ci
|
14
|
+
agents:
|
15
|
+
queue: k8s-ci
|
16
|
+
env:
|
17
|
+
LOGGING_LEVEL: "4"
|
18
|
+
KUBERNETES_VERSION: v1.16-latest
|
19
|
+
- label: 'Run Test Suite (:kubernetes: 1.15-latest)'
|
20
|
+
command: bin/ci
|
21
|
+
agents:
|
22
|
+
queue: k8s-ci
|
23
|
+
env:
|
24
|
+
LOGGING_LEVEL: "4"
|
25
|
+
KUBERNETES_VERSION: v1.15-latest
|
26
|
+
- label: 'Run Test Suite (:kubernetes: 1.14-latest)'
|
27
|
+
command: bin/ci
|
28
|
+
agents:
|
29
|
+
queue: k8s-ci
|
30
|
+
env:
|
31
|
+
LOGGING_LEVEL: "4"
|
32
|
+
KUBERNETES_VERSION: v1.14-latest
|
33
|
+
- label: 'Run Test Suite (:kubernetes: 1.13-latest)'
|
34
|
+
command: bin/ci
|
35
|
+
agents:
|
36
|
+
queue: k8s-ci
|
37
|
+
env:
|
38
|
+
LOGGING_LEVEL: "4"
|
39
|
+
KUBERNETES_VERSION: v1.13-latest
|
40
|
+
- label: 'Run Test Suite (:kubernetes: 1.12-latest)'
|
41
|
+
command: bin/ci
|
42
|
+
agents:
|
43
|
+
queue: k8s-ci
|
44
|
+
env:
|
45
|
+
LOGGING_LEVEL: "4"
|
46
|
+
KUBERNETES_VERSION: v1.12-latest
|
47
|
+
- label: 'Run Test Suite (:kubernetes: 1.11-latest)'
|
48
|
+
command: bin/ci
|
49
|
+
agents:
|
50
|
+
queue: k8s-ci
|
51
|
+
env:
|
52
|
+
LOGGING_LEVEL: "4"
|
53
|
+
KUBERNETES_VERSION: v1.11-latest
|
data/1.0-Upgrade.md
ADDED
@@ -0,0 +1,185 @@
|
|
1
|
+
# kubernetes-deploy 0.31.1 -> krane 1.0.0 migration guide
|
2
|
+
|
3
|
+
`kubernetes-deploy` was renamed `krane` when version 1.0.0 was released. Version 1.0.0 introduced [new features and breaking changes](CHANGELOG.md). This guide will help you transition to version 1.0.0 as smoothly as possible.
|
4
|
+
|
5
|
+
**TL;DR**:
|
6
|
+
* The command-line interface was redesigned; alongside the name change there are breaking changes in several flags.
|
7
|
+
* There are breaking changes in the public API (such as the renaming of the `KubernetesDeploy` namespace to `Krane`, and the change in default values for different arguments of the public interface).
|
8
|
+
* StatsD metrics will now be generated with the `krane` prefix.
|
9
|
+
* `krane deploy` now considers all namespaced resources eligible for pruning, including
|
10
|
+
custom resources. See [blacklist](https://github.com/Shopify/krane/blob/master/lib/krane/cluster_resource_discovery.rb#L20) for exceptions.
|
11
|
+
* `kubernetes-deploy` (now `krane deploy`) / `DeployTask` can no longer deploy global (non-namespaced) resources. A new command called `krane global-deploy` and a related class called `GlobalDeployTask` were added to replace that feature.
|
12
|
+
* `krane deploy` will not render erb templates. Use `krane render | krane deploy --stdin` to reproduce this functionality.
|
13
|
+
* If you attempt to install two gems that have conflicting executables, `gem install` will warn you but the most recently installed one will win.
|
14
|
+
|
15
|
+
## Public API changes
|
16
|
+
|
17
|
+
Besides the renaming of the `KubernetesDeploy` namespace to `Krane`, we made the public interfaces of the major public classes (`DeployTask`, `RenderTask`, `RunnerTask`, and `RestartTask`) match the CLI flag names more closely.
|
18
|
+
|
19
|
+
If you're curious about this API, check the comment-based docs on these classes or the [rendered documentation at RubyGems.org](https://www.rubydoc.info/gems/kubernetes-deploy/1.0.0/KubernetesDeploy/DeployTask).
|
20
|
+
|
21
|
+
#### `DeployTask#new`
|
22
|
+
|
23
|
+
Old name | New name | Comments
|
24
|
+
--- | --- | ---
|
25
|
+
template_paths | filenames |
|
26
|
+
max_watch_seconds | global_timeout | This is now a duration that can be expressed in a more user-friendly language (e.g. `30s` or `1h`)
|
27
|
+
template_dir | [none] | Removed in favour of `filenames`
|
28
|
+
allow_globals | [none] | Removed. Use `GlobalDeployTask` instead
|
29
|
+
|
30
|
+
#### `DeployTask#run`
|
31
|
+
|
32
|
+
Old name | New name | Comments
|
33
|
+
--- | --- | ---
|
34
|
+
allow_protected_ns | [none] | This is now an implicit argument derived from the usage of `protected_namespaces` instead
|
35
|
+
|
36
|
+
#### `RestartTask#new`
|
37
|
+
|
38
|
+
Old name | New name | Comments
|
39
|
+
--- | --- | ---
|
40
|
+
max_watch_seconds | global_timeout | This is now a duration that can be expressed in a more user-friendly language (e.g. `30s` or `1h`)
|
41
|
+
|
42
|
+
#### `RestartTask#run`
|
43
|
+
|
44
|
+
Method signature changed from this:
|
45
|
+
|
46
|
+
```ruby
|
47
|
+
def run(deployments, selector:)
|
48
|
+
```
|
49
|
+
|
50
|
+
... to this, to maintain the convention of using keyword arguments for all the public interfaces:
|
51
|
+
|
52
|
+
```ruby
|
53
|
+
def run(deployments:, selector:)
|
54
|
+
```
|
55
|
+
|
56
|
+
#### `RunnerTask#new`
|
57
|
+
|
58
|
+
Old name | New name | Comments
|
59
|
+
--- | --- | ---
|
60
|
+
max_watch_seconds | global_timeout | This is now a duration that can be expressed in a more user-friendly language (e.g. `30s` or `1h`)
|
61
|
+
|
62
|
+
#### `RunnerTask#run`
|
63
|
+
|
64
|
+
Old name | New name | Comments
|
65
|
+
--- | --- | ---
|
66
|
+
task_template | filename |
|
67
|
+
entrypoint | command |
|
68
|
+
args | arguments |
|
69
|
+
|
70
|
+
|
71
|
+
#### `RenderTask#new`
|
72
|
+
|
73
|
+
Old name | New name | Comments
|
74
|
+
--- | --- | ---
|
75
|
+
template_paths | filenames |
|
76
|
+
max_watch_seconds | global_timeout | This is now a duration that can be expressed in a more user-friendly language (e.g. `30s` or `1h`)
|
77
|
+
template_dir | [none] | Removed in favour of `filenames`
|
78
|
+
|
79
|
+
#### `RenderTask#run`
|
80
|
+
|
81
|
+
Old name | New name | Comments
|
82
|
+
--- | --- | ---
|
83
|
+
only_filenames | [none] | Removed in favour of `filenames` in `RenderTask#new`
|
84
|
+
|
85
|
+
Method signature changed from this:
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
def run(stream, only_filenames = [])
|
89
|
+
```
|
90
|
+
|
91
|
+
... to this, to maintain the convention of using keyword arguments for all the public interfaces:
|
92
|
+
|
93
|
+
```ruby
|
94
|
+
def run(stream:)
|
95
|
+
```
|
96
|
+
|
97
|
+
## Command-line interface changes
|
98
|
+
|
99
|
+
Old command | New command
|
100
|
+
--- | ---
|
101
|
+
`kubernetes-deploy` | `krane deploy`
|
102
|
+
`kubernetes-deploy -v` | `krane version`
|
103
|
+
`kubernetes-render` | `krane render`
|
104
|
+
`kubernetes-run` | `krane run`
|
105
|
+
`kubernetes-restart` | `krane restart`
|
106
|
+
`[kubernetes-deploy with global resources in templates]` | `krane global-deploy`
|
107
|
+
|
108
|
+
### Flag changes
|
109
|
+
|
110
|
+
The following tables provide a mapping of the flags previously supported in `kubernetes-deploy` and their new version in `krane` (if applicable).
|
111
|
+
|
112
|
+
Important: you can't repeat flags. If you need to provide multiple arguments for a flag, use a space-separated list (e.g. `-f file1.yml file2.yml`) unless specified otherwise.
|
113
|
+
|
114
|
+
#### krane deploy
|
115
|
+
|
116
|
+
Old flag | New flag | Comments
|
117
|
+
--- | --- | ---
|
118
|
+
--bindings=BINDINGS | --bindings=BINDINGS |
|
119
|
+
--skip-wait | --verify-result=true |
|
120
|
+
--allow-protected-ns | --protected-namespaces=default,kube-system,kube-public | Added the ability to specify which namespaces are protected
|
121
|
+
--no-prune | --prune=true |
|
122
|
+
--template-dir | -f, --filename | Makes all krane commands accept this argument, which is now required for the deploy task
|
123
|
+
--verbose-log-prefix | --verbose-log-prefix |
|
124
|
+
--max-watch-seconds=seconds | --global-timeout=300s | Changed flag name and default value to be a duration (expressed using strings like "300s" or "1h")
|
125
|
+
--selector | --selector |
|
126
|
+
-h, --help | -h, --help |
|
127
|
+
-v, --version | [none] | Replaced with `krane version`
|
128
|
+
$ENVIRONMENT | [none] | Dropped in favour of `-f`
|
129
|
+
$REVISION | [none] | The environment variable REVISION was dropped because deploy no longer renders.
|
130
|
+
[none] | --stdin | Allow template filenames given from stdin stream
|
131
|
+
|
132
|
+
#### krane restart
|
133
|
+
|
134
|
+
Old flag | New flag | Comments
|
135
|
+
--- | --- | ---
|
136
|
+
--deployments=LIST | --deployments=LIST |
|
137
|
+
--max-watch-seconds=seconds | --global-timeout=300s | Changed flag name and default value to be a duration (expressed using strings like "300s" or "1h")
|
138
|
+
[none] | --verify-result=true | Defines whether it should wait for results or exit immediately after validation
|
139
|
+
|
140
|
+
#### krane run
|
141
|
+
|
142
|
+
Old flag | New flag | Comments
|
143
|
+
--- | --- | ---
|
144
|
+
--skip-wait | --verify-result=true |
|
145
|
+
--max-watch-seconds=seconds | --global-timeout=300s | Changed flag name and default value to be a duration (expressed using strings like "300s" or "1h")
|
146
|
+
--entrypoint | --command | Changed flag name to make its purpose clearer
|
147
|
+
--template | --template | Changed to be required
|
148
|
+
[it is positional now] | --arguments | Optional flag, as `command` or the template might already specify the required arguments
|
149
|
+
--env-vars=ENV_VARS | --env-vars=ENV_VARS |
|
150
|
+
|
151
|
+
#### krane render
|
152
|
+
|
153
|
+
Old flag | New flag | Comments
|
154
|
+
--- | --- | ---
|
155
|
+
--bindings=BINDINGS | --bindings=BINDINGS |
|
156
|
+
--template-dir | -f, --filename | Changed to be more aligned with `kubectl apply` and other krane tasks
|
157
|
+
$REVISION | --current-sha | The environment variable REVISION was dropped in favour of an explicit flag
|
158
|
+
[none] | --stdin | Allow template filenames given from stdin stream
|
159
|
+
|
160
|
+
## Running `kubernetes-deploy` and `krane` side by side
|
161
|
+
|
162
|
+
If you attempt to install two gems that have conflicting executables (as is the case here), `gem install` will warn you but the most recently installed one will win. This means that you can run both `kubernetes-deploy` 0.31.1 and `krane` 1.0.0 side by side by doing:
|
163
|
+
|
164
|
+
```bash
|
165
|
+
gem install kubernetes-deploy -v 0.31.1
|
166
|
+
gem install -f krane -v 1.0.0
|
167
|
+
```
|
168
|
+
|
169
|
+
This can help you incrementally port scripts that use the old CLI to the new one.
|
170
|
+
|
171
|
+
## New task: `krane global-deploy`
|
172
|
+
|
173
|
+
`krane global-deploy` (accessible through the Ruby API as `Krane::GlobalDeployTask`) can deploy global (non-namespaced) resources such as `PersistentVolume`, `Namespace`, and `CustomResourceDefinition`. Its interface is very similar to `krane deploy`. Example usage:
|
174
|
+
|
175
|
+
```bash
|
176
|
+
$ cat my-template.yml
|
177
|
+
apiVersion: storage.k8s.io/v1
|
178
|
+
kind: StorageClass
|
179
|
+
metadata:
|
180
|
+
name: testing-storage-class
|
181
|
+
labels:
|
182
|
+
app: krane
|
183
|
+
provisioner: kubernetes.io/no-provisioner
|
184
|
+
$ krane global-deploy my-k8s-context -f my-template.yml --selector app=krane
|
185
|
+
```
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,431 @@
|
|
1
|
+
## next
|
2
|
+
|
3
|
+
# 1.0.0
|
4
|
+
|
5
|
+
We've renamed the gem and cli to Krane.
|
6
|
+
See our [migration guide](https://github.com/Shopify/krane/blob/master/1.0-Upgrade.md) to help navigate the breaking changes.
|
7
|
+
|
8
|
+
## 1.0.0.pre.1
|
9
|
+
|
10
|
+
*Important!*
|
11
|
+
|
12
|
+
- This is the final release of KubernetesDeploy. Version 1.0.0 will be released
|
13
|
+
under the name `Krane`. We've added a migration guide to help make it easier to migrate.
|
14
|
+
([#607](https://github.com/Shopify/kubernetes-deploy/pull/607))
|
15
|
+
|
16
|
+
*Enhancements*
|
17
|
+
- (beta) `krane deploy` will now consider all namespaced resources eligible for pruning
|
18
|
+
and does not respect the `krane.shopify.io/prunable` annotation. This adds 5 additional
|
19
|
+
types: Endpoints, Event, LimitRange, ReplicationController, and Lease.
|
20
|
+
([#616](https://github.com/Shopify/kubernetes-deploy/pull/616)
|
21
|
+
|
22
|
+
- (beta) Added the `--stdin` flag to `krane deploy|global-deploy|render` to read resources from stdin. ([#630](https://github.com/Shopify/kubernetes-deploy/pull/630))
|
23
|
+
|
24
|
+
## 0.31.1
|
25
|
+
|
26
|
+
*Bug Fixes*
|
27
|
+
- Fix a scoping issue of ClusterResourceDiscovery where it was not visible to kubernetes-run, causing a crash. ([#624](https://github.com/Shopify/kubernetes-deploy/pull/624))
|
28
|
+
|
29
|
+
## 0.31.0
|
30
|
+
|
31
|
+
*Enhancements*
|
32
|
+
- (alpha) Add a new krane global-deploy task for deploying global resources. Note that global pruning is turned on by default ([#602](https://github.com/Shopify/kubernetes-deploy/pull/602) and [#612](https://github.com/Shopify/kubernetes-deploy/pull/612))
|
33
|
+
- Add support for deploying resources that use `generateName` ([#608](https://github.com/Shopify/kubernetes-deploy/pull/608))
|
34
|
+
- ENV["REVISION"] is not transparently passed into krane. Instead, you must now use the `--current-sha` flag to set the `current_sha` ERB binding in your templates. Note that kubernetes-deploy, _but not krane_, can still use ENV["REVISION"] as a fallback if `--current-sha` is not provided. ([#613](https://github.com/Shopify/kubernetes-deploy/pull/613))
|
35
|
+
|
36
|
+
*Bug Fixes*
|
37
|
+
- `krane deploy` can accept multiple filenames with `-f` flag ([#606](https://github.com/Shopify/kubernetes-deploy/pull/606))
|
38
|
+
- Ensure DaemonSet status has converged with pod statuses before reporting rollout success ([#617](https://github.com/Shopify/kubernetes-deploy/pull/617))
|
39
|
+
|
40
|
+
*Other*
|
41
|
+
- Update references from using `kubernetes-deploy` to `krane` in preparation for 1.0 release ([#585](https://github.com/Shopify/kubernetes-deploy/pull/585))
|
42
|
+
- Refactor StatsD usage so we can depend on the latest version again. ([#594](https://github.com/Shopify/kubernetes-deploy/pull/594))
|
43
|
+
|
44
|
+
## 0.30.0
|
45
|
+
|
46
|
+
*Enhancements*
|
47
|
+
- **[Breaking change]** Added PersistentVolumeClaim to the prune whitelist. ([#573](https://github.com/Shopify/kubernetes-deploy/pull/573))
|
48
|
+
* To see what resources may be affected, run `kubectl get pvc -o jsonpath='{ range .items[*] }{.metadata.namespace}{ "\t" }{.metadata.name}{ "\t" }{.metadata.annotations}{ "\n" }{ end }' --all-namespaces | grep "last-applied"`
|
49
|
+
* To exclude a resource from kubernetes-deploy (and kubectl apply) management, remove the last-applied annotation `kubectl annotate pvc $PVC_NAME kubectl.kubernetes.io/last-applied-configuration-`.
|
50
|
+
- Deploying global resources directly from `KubernetesDeploy::DeployTask` is disabled by default. You can use `allow_globals: true` to enable the old behavior. This will be disabled in the Krane version of the task, and a separate purpose-built task will be provided. [#567](https://github.com/Shopify/kubernetes-deploy/pull/567)
|
51
|
+
- Deployments to daemonsets now better tolerate autoscaling: nodes that appear mid-deploy aren't required for convergence. [#580](https://github.com/Shopify/kubernetes-deploy/pull/580)
|
52
|
+
|
53
|
+
## 0.29.0
|
54
|
+
|
55
|
+
*Enhancements*
|
56
|
+
- The KubernetesDeploy::RenderTask now supports a template_paths argument. ([#555](https://github.com/Shopify/kubernetes-deploy/pull/546))
|
57
|
+
- We no longer hide errors from apply if all sensitive resources have passed server-dry-run validation. ([#570](https://github.com/Shopify/kubernetes-deploy/pull/570))
|
58
|
+
|
59
|
+
|
60
|
+
*Bug Fixes*
|
61
|
+
- Handle improper duration values more elegantly with better messaging
|
62
|
+
|
63
|
+
|
64
|
+
*Other*
|
65
|
+
- We now require Ruby 2.4.x since Ruby 2.3 is past EoL.
|
66
|
+
- Lock statsd-instrument to 2.3.X due to breaking changes in 2.5.0
|
67
|
+
|
68
|
+
## 0.28.0
|
69
|
+
|
70
|
+
*Enhancements*
|
71
|
+
- Officially support Kubernetes 1.15 ([#546](https://github.com/Shopify/kubernetes-deploy/pull/546))
|
72
|
+
- Make sure that we only declare a Service of type LoadBalancer as deployed after its IP address is published. [#547](https://github.com/Shopify/kubernetes-deploy/pull/547)
|
73
|
+
- Add more validations to `RunnerTask`. [#554](https://github.com/Shopify/kubernetes-deploy/pull/554)
|
74
|
+
- Validate secrets with `--server-dry-run` on supported clusters. [#553](https://github.com/Shopify/kubernetes-deploy/pull/553)
|
75
|
+
*Bug Fixes*
|
76
|
+
- Fix a bug in rendering where we failed to add a yaml doc separator (`---`) to
|
77
|
+
an implicit document if there are multiple documents in the file.
|
78
|
+
([#551](https://github.com/Shopify/kubernetes-deploy/pull/551))
|
79
|
+
|
80
|
+
*Other*
|
81
|
+
- Kubernetes 1.10 is no longer officially supported as of this version ([#546](https://github.com/Shopify/kubernetes-deploy/pull/546))
|
82
|
+
- We've added a new Krane cli. This code is in alpha. We are providing
|
83
|
+
no warranty at this time and reserve the right to make major breaking changes including
|
84
|
+
removing it entirely at any time. ([#256](https://github.com/Shopify/kubernetes-deploy/issues/256))
|
85
|
+
- Deprecate `kubernetes-deploy.shopify.io` annotations in favour of `krane.shopify.io` ([#539](https://github.com/Shopify/kubernetes-deploy/pull/539))
|
86
|
+
|
87
|
+
## 0.27.0
|
88
|
+
|
89
|
+
*Enhancements*
|
90
|
+
- (alpha) Introduce a new `-f` flag for `kubernetes-deploy`. Allows passing in of multiple directories and/or filenames. Currently only usable by `kubernetes-deploy`, not `kubernetes-render`. [#514](https://github.com/Shopify/kubernetes-deploy/pull/514)
|
91
|
+
- Initial implementation of shared task validation objects. [#533](https://github.com/Shopify/kubernetes-deploy/pull/533)
|
92
|
+
- Restructure `require`s so that requiring a given task actually gives you the dependencies you need, and doesn't give what you don't need. [#487](https://github.com/Shopify/kubernetes-deploy/pull/487)
|
93
|
+
- **[Breaking change]** Added ServiceAccount, PodTemplate, ReplicaSet, Role, and RoleBinding to the prune whitelist.
|
94
|
+
* To see what resources may be affected, run `kubectl get $RESOURCE -o jsonpath='{ range .items[*] }{.metadata.namespace}{ "\t" }{.metadata.name}{ "\t" }{.metadata.annotations}{ "\n" }{ end }' --all-namespaces | grep "last-applied"`
|
95
|
+
* To exclude a resource from kubernetes-deploy (and kubectl apply) management, remove the last-applied annotation `kubectl annotate $RESOURCE $SECRET_NAME kubectl.kubernetes.io/last-applied-configuration-`.
|
96
|
+
|
97
|
+
*Bug Fixes*
|
98
|
+
- StatefulSets with 0 replicas explicitly specified don't fail deploy. [#540](https://github.com/Shopify/kubernetes-deploy/pull/540)
|
99
|
+
- Search all workloads if a Pod selector doesn't match any workloads when deploying a Service. [#541](https://github.com/Shopify/kubernetes-deploy/pull/541)
|
100
|
+
|
101
|
+
*Other*
|
102
|
+
- `EjsonSecretProvisioner#new` signature has changed. `EjsonSecretProvisioner` objects no longer have access to `kubectl`. Rather, the `ejson-keys` secret used for decryption is now passed in via the calling task. Note that we only consider the `new` and `run(!)` methods of tasks (render, deploy, etc) to have inviolable APIs, so we do not consider this change breaking. [#514](https://github.com/Shopify/kubernetes-deploy/pull/514)
|
103
|
+
|
104
|
+
## 0.26.7
|
105
|
+
|
106
|
+
*Other*
|
107
|
+
- Bump `googleauth` dependency. ([#512](https://github.com/Shopify/kubernetes-deploy/pull/512))
|
108
|
+
|
109
|
+
## 0.26.6
|
110
|
+
|
111
|
+
*Bug Fixes*
|
112
|
+
- Re-enable support for YAML aliases when using YAML.safe_load [#510](https://github.com/Shopify/kubernetes-deploy/pull/510)
|
113
|
+
|
114
|
+
## 0.26.5
|
115
|
+
|
116
|
+
*Bug Fixes*
|
117
|
+
- Support 'volumeBindingMode: WaitForFirstConsumer' condition in StorageClass. [#479](https://github.com/Shopify/kubernetes-deploy/pull/479)
|
118
|
+
- Fix: Undefined method "merge" on LabelSelector. [#488](https://github.com/Shopify/kubernetes-deploy/pull/488)
|
119
|
+
|
120
|
+
*Enhancements*
|
121
|
+
- Officially support Kubernetes 1.14. [#461](https://github.com/Shopify/kubernetes-deploy/pull/461)
|
122
|
+
- Allow customising which custom resources are deployed in the pre-deploy phase. [#505](https://github.com/Shopify/kubernetes-deploy/pull/505)
|
123
|
+
|
124
|
+
*Other*
|
125
|
+
- Removes special treatment of GCP authentication by upgrading to `kubeclient` 4.3. [#465](https://github.com/Shopify/kubernetes-deploy/pull/465)
|
126
|
+
|
127
|
+
## 0.26.4
|
128
|
+
|
129
|
+
*Bug fixes*
|
130
|
+
- Adds several additional safeguards against the content of Secret resources being logged. [#474](https://github.com/Shopify/kubernetes-deploy/pull/474)
|
131
|
+
|
132
|
+
*Enhancements*
|
133
|
+
- Improves scalability by removing a check that caused recoverable registry problems to fail deploys. [#477](https://github.com/Shopify/kubernetes-deploy/pull/477)
|
134
|
+
|
135
|
+
*Other*
|
136
|
+
- Relaxes our dependency on the OJ gem. [#471](https://github.com/Shopify/kubernetes-deploy/pull/471)
|
137
|
+
|
138
|
+
## 0.26.3
|
139
|
+
|
140
|
+
*Bug fixes*
|
141
|
+
- Fixes a bug introduced in 0.26.0 where listing multiple files in the $KUBECONFIG environment variable would throw an error ([#468](https://github.com/Shopify/kubernetes-deploy/pull/468))
|
142
|
+
- Fixes a bug introduced in 0.26.2 where kubernetes-render started adding YAML headers to empty render results ([#467](https://github.com/Shopify/kubernetes-deploy/pull/467))
|
143
|
+
|
144
|
+
## 0.26.2
|
145
|
+
|
146
|
+
*Enhancements*
|
147
|
+
- kubernetes-render outputs results of rendering yml.erb files without passing them
|
148
|
+
through a yaml parser. ([#454](https://github.com/Shopify/kubernetes-deploy/pull/454))
|
149
|
+
|
150
|
+
*Bug fixes*
|
151
|
+
- Remove use of deprecated feature preventing use with Kubernetes 1.14 ([#460](https://github.com/Shopify/kubernetes-deploy/pull/460))
|
152
|
+
|
153
|
+
## 0.26.1
|
154
|
+
|
155
|
+
*Bug fixes*
|
156
|
+
- Fixes a bug where `config/deploy/$ENVIRONMENT` would be used unconditionally if the `ENVIRONMENT` environment variable is set, ignoring any `--template-dir` argument passed.
|
157
|
+
|
158
|
+
## 0.26.0
|
159
|
+
|
160
|
+
*Enhancements*
|
161
|
+
- Add support for NetworkPolicies ([#422](https://github.com/Shopify/kubernetes-deploy/pull/422))
|
162
|
+
- Setting the REVISION environment variable is now optional ([#429](https://github.com/Shopify/kubernetes-deploy/pull/429))
|
163
|
+
- Defaults KUBECONFIG to `~/.kube/config` ([#429](https://github.com/Shopify/kubernetes-deploy/pull/429))
|
164
|
+
- Uses `TASK_ID` environment variable as the `deployment_id` when rendering resource templates for better [Shipit](https://github.com/Shopify/shipit) integration. ([#430](https://github.com/Shopify/kubernetes-deploy/pull/430))
|
165
|
+
- Arguments to `--bindings` will now be deep merged. ([#419](https://github.com/Shopify/kubernetes-deploy/pull/419))
|
166
|
+
- `kubernetes-deploy` and `kubernetes-render` now support reading templates from STDIN. ([#415](https://github.com/Shopify/kubernetes-deploy/pull/415))
|
167
|
+
- Support for specifying a `--selector`, a label with which all deployed resources are expected to have, and by which prunable resources will be filtered. This permits sharing a namespace with resources managed by third-parties, including other kubernetes-deploy deployments. ([#439](https://github.com/Shopify/kubernetes-deploy/pull/439))
|
168
|
+
- Lists of resources printed during deployments will now be sorted alphabetically. ([#441](https://github.com/Shopify/kubernetes-deploy/pull/441))
|
169
|
+
- Bare / unmanaged pods run as pre-deployment tasks will now stream logs if there is only one of them. ([#436](https://github.com/Shopify/kubernetes-deploy/pull/436))
|
170
|
+
|
171
|
+
*Features*
|
172
|
+
|
173
|
+
- **[Breaking change]** Support for deploying Secrets from templates ([#424](https://github.com/Shopify/kubernetes-deploy/pull/424)). Non-ejson secrets are now fully supported and therefore **subject to pruning like any other resource**. As a result:
|
174
|
+
* If you previously manually `kubectl apply`'d secrets that are not passed to kubernetes-deploy, your first deploy using this version is going to delete them.
|
175
|
+
* If you previously passed secrets manifests to kubernetes-deploy and they are no longer in the set you pass to the first deploy using this version, it will delete them.
|
176
|
+
* To identify potentially affected secrets in your cluster, run: `kubectl get secrets -o jsonpath='{ range .items[*] }{.metadata.namespace}{ "\t" }{.metadata.name}{ "\t" }{.metadata.annotations}{ "\n" }{ end }' --context=$YOUR_CONTEXT_HERE --all-namespaces | grep -v "kubernetes-deploy.shopify.io/ejson-secret" | grep "last-applied" | cut -f 1,2`. To exclude a secret from kubernetes-deploy (and kubectl apply) management, remove the last-applied annotation `kubectl annotate secret $SECRET_NAME kubectl.kubernetes.io/last-applied-configuration-`.
|
177
|
+
* The secret `ejson-keys` will never be pruned by kubernetes-deploy. Instead, it will fail the deploy at the validation stage (unless `--no-prune` is set). ([#447](https://github.com/Shopify/kubernetes-deploy/pull/447))
|
178
|
+
|
179
|
+
## 0.25.0
|
180
|
+
|
181
|
+
#### WARNING
|
182
|
+
This version contains an error for handling the `--template-dir` argument. If the `ENVIRONMENT` environment variable is set, the template directory will be forcefully set to `config/deploy/$ENVIRONMENT`. This has been fixed in version 0.26.1
|
183
|
+
|
184
|
+
*Features*
|
185
|
+
- Support timeout overrides on deployments ([#414](https://github.com/Shopify/kubernetes-deploy/pull/414))
|
186
|
+
|
187
|
+
*Bug fixes*
|
188
|
+
- Attempting to deploy from a directory that only contains `secrets.ejson` will no longer fail deploy ([#416](https://github.com/Shopify/kubernetes-deploy/pull/416))
|
189
|
+
- Remove the risk of sending decrypted EJSON secrets to output([#431](https://github.com/Shopify/kubernetes-deploy/pull/431))
|
190
|
+
|
191
|
+
*Other*
|
192
|
+
- Update kubeclient gem to 4.2.2. Note this replaces the `KubeclientBuilder::GoogleFriendlyConfig` class with `KubeclientBuilder::KubeConfig` ([#418](https://github.com/Shopify/kubernetes-deploy/pull/418)). This resolves [#396](https://github.com/Shopify/kubernetes-deploy/issues/396) and should allow us to support more authentication methods (e.g. `exec` for EKS).
|
193
|
+
- Invalid context when using `kubernetes-run` gives more descriptive error([#423](https://github.com/Shopify/kubernetes-deploy/pull/423))
|
194
|
+
- When resources are not found, instead of being `Unknown`, they are now labelled as `Not Found`([#427](https://github.com/Shopify/kubernetes-deploy/pull/427))
|
195
|
+
|
196
|
+
## 0.24.0
|
197
|
+
|
198
|
+
*Features*
|
199
|
+
- Add support for specifying pass/fail conditions of Custom Resources ([#376](https://github.com/Shopify/kubernetes-deploy/pull/376)).
|
200
|
+
- Add support for custom timeouts for Custom Resources([#376](https://github.com/Shopify/kubernetes-deploy/pull/376))
|
201
|
+
|
202
|
+
*Enhancements*
|
203
|
+
- Officially support Kubernetes 1.13 ([#409](https://github.com/Shopify/kubernetes-deploy/pull/409))
|
204
|
+
|
205
|
+
*Bug fixes*
|
206
|
+
- Fixed bug that caused `NameError: wrong constant name` if custom resources had kind with a lowercase first letter. ([#413](https://github.com/Shopify/kubernetes-deploy/pull/413))
|
207
|
+
|
208
|
+
*Other*
|
209
|
+
- Kubernetes 1.9 is no longer officially supported as of this version
|
210
|
+
|
211
|
+
## 0.23.0
|
212
|
+
|
213
|
+
*Features*
|
214
|
+
- 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))
|
215
|
+
- **[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.
|
216
|
+
- 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`
|
217
|
+
- **[Breaking change]** `KubernetesDeploy.resource.duration` no longer includes `sha` or `resource` tags. ([#392](https://github.com/Shopify/kubernetes-deploy/pull/392))
|
218
|
+
|
219
|
+
*Enhancements*
|
220
|
+
- Roles are now predeployed before RoleBindings ([#380](https://github.com/Shopify/kubernetes-deploy/pull/380))
|
221
|
+
- Several performance enhancements for deploys to namespaces with hundreds of resources.
|
222
|
+
- KubernetesDeploy no longer modifies the global StatsD configuration when used as a gem ([#384](https://github.com/Shopify/kubernetes-deploy/pull/384))
|
223
|
+
|
224
|
+
*Bug fixes*
|
225
|
+
- Handle out-of-order arrival of entries from different streams when processing logs ([#401](https://github.com/Shopify/kubernetes-deploy/pull/401))
|
226
|
+
|
227
|
+
## 0.22.0
|
228
|
+
|
229
|
+
*Features*
|
230
|
+
- **[Breaking change]** `kubernetes-restart` now produces StatsD `distribution` instead of `metric`.
|
231
|
+
Dashboards that used these metrics will need to be updated. ([#374](https://github.com/Shopify/kubernetes-deploy/pull/374))
|
232
|
+
- `kubernetes-run` now produces StatsD `distribution` to aid in tracking usage ([#374](https://github.com/Shopify/kubernetes-deploy/pull/374))
|
233
|
+
|
234
|
+
*Enhancements*
|
235
|
+
- Predeploy RoleBinding before unmanaged pods ([#354](https://github.com/Shopify/kubernetes-deploy/pull/354))
|
236
|
+
|
237
|
+
*Bug Fixes*
|
238
|
+
- Fixed bug in `kubernetes-restart` that caused "Pod spec does not contain a template
|
239
|
+
container called 'task-runner'" error message to not be printed
|
240
|
+
([#371](https://github.com/Shopify/kubernetes-deploy/pull/371))
|
241
|
+
|
242
|
+
*Other*
|
243
|
+
- Kubernetes 1.8 is no longer officially supported as of this version
|
244
|
+
|
245
|
+
## 0.21.1
|
246
|
+
|
247
|
+
*Enhancements*
|
248
|
+
- Improved failure detection for job resources. ([#355](https://github.com/Shopify/kubernetes-deploy/pull/355))
|
249
|
+
- 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))
|
250
|
+
|
251
|
+
*Other*
|
252
|
+
- Relaxed our `googleauth` dependency. ([#333](https://github.com/Shopify/kubernetes-deploy/pull/333))
|
253
|
+
|
254
|
+
## 0.21.0
|
255
|
+
|
256
|
+
*Features*
|
257
|
+
- **[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))
|
258
|
+
|
259
|
+
|
260
|
+
*Other*
|
261
|
+
- Kubernetes 1.7 is no longer officially supported as of this version
|
262
|
+
|
263
|
+
## 0.20.6
|
264
|
+
|
265
|
+
*Enhancements*
|
266
|
+
- All resources marked as prunable will now be added to the prune whitelist ([#326](https://github.com/Shopify/kubernetes-deploy/pull/326))
|
267
|
+
- Improve deploy status detection by ensuring we examine the correct generation ([#325](https://github.com/Shopify/kubernetes-deploy/pull/325))
|
268
|
+
|
269
|
+
|
270
|
+
## 0.20.5
|
271
|
+
*Enhancements*
|
272
|
+
- Add Job resource class ([#295](https://github.com/Shopify/kubernetes-deploy/pull/296))
|
273
|
+
- Add CustomResourceDefinition resource class ([#306](https://github.com/Shopify/kubernetes-deploy/pull/306))
|
274
|
+
- Officially support Kubernetes 1.10 ([#308](https://github.com/Shopify/kubernetes-deploy/pull/308))
|
275
|
+
- SyncMediator will only batch fetch resources when there is a sufficiently large enough set of resources
|
276
|
+
being tracked ([#316](https://github.com/Shopify/kubernetes-deploy/pull/316))
|
277
|
+
- 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))
|
278
|
+
- Add HorizontalPodAutoscaler resource class ([#305](https://github.com/Shopify/kubernetes-deploy/pull/305))
|
279
|
+
|
280
|
+
*Bug Fixes*
|
281
|
+
- Prevent crash when STATSD_IMPLEMENTATION isn't set. ([#3242](https://github.com/Shopify/kubernetes-deploy/pull/324))
|
282
|
+
|
283
|
+
### 0.20.4
|
284
|
+
*Enhancements*
|
285
|
+
- Don't consider pod preempting a failure ([#317](https://github.com/shopify/kubernetes-deploy/pull/317))
|
286
|
+
|
287
|
+
### 0.20.3
|
288
|
+
*Enhancements*
|
289
|
+
- Evictions are recoverable so prevent them from triggering fast failure detection ([#293](https://github.com/Shopify/kubernetes-deploy/pull/293)).
|
290
|
+
- Use YAML.safe_load over YAML.load_file ([#295](https://github.com/Shopify/kubernetes-deploy/pull/295)).
|
291
|
+
|
292
|
+
*Bug Fixes*
|
293
|
+
- Default rollout strategy is compatible required-rollout annotation ([#289](https://github.com/Shopify/kubernetes-deploy/pull/289)).
|
294
|
+
|
295
|
+
### 0.20.2
|
296
|
+
*Enhancements*
|
297
|
+
- Emit data dog events when deploys succeed, time out or fail ([#292](https://github.com/Shopify/kubernetes-deploy/pull/292)).
|
298
|
+
### 0.20.1
|
299
|
+
|
300
|
+
*Bug Fixes*
|
301
|
+
- Display a nice error instead of crashing when a YAML document is missing 'Kind'
|
302
|
+
([#280](https://github.com/Shopify/kubernetes-deploy/pull/280))
|
303
|
+
- Prevent DaemonSet from succeeding before rollout finishes
|
304
|
+
([#288](https://github.com/Shopify/kubernetes-deploy/issues/288))
|
305
|
+
|
306
|
+
*Enhancements*
|
307
|
+
- Merge multiple `--bindings` arguments, to allow a composite bindings map (multiple arguments or files)
|
308
|
+
|
309
|
+
### 0.20.0
|
310
|
+
|
311
|
+
*Features*
|
312
|
+
- Automatically add all Kubernetes namespace labels to StatsD tags ([#278](https://github.com/Shopify/kubernetes-deploy/pull/278))
|
313
|
+
|
314
|
+
*Bug Fixes*
|
315
|
+
- Prevent calling sleep with a negative value ([#273](https://github.com/Shopify/kubernetes-deploy/pull/273))
|
316
|
+
- Prevent no-op redeploys of bad code from hanging forever ([#262](https://github.com/Shopify/kubernetes-deploy/pull/262))
|
317
|
+
|
318
|
+
*Enhancements*
|
319
|
+
- Improve output for rendering errors ([#253](https://github.com/Shopify/kubernetes-deploy/pull/253))
|
320
|
+
|
321
|
+
### 0.19.0
|
322
|
+
*Features*
|
323
|
+
- Added `--max-watch-seconds=seconds` to kubernetes-restart and kubernetes-deploy. When set
|
324
|
+
a timeout error is raised if it takes longer than _seconds_ for any resource to deploy.
|
325
|
+
- Adds YAML and JSON file reference support to the kubernetes-deploy `--bindings` argument ([#269](https://github.com/Shopify/kubernetes-deploy/pull/269))
|
326
|
+
|
327
|
+
*Enhancements*
|
328
|
+
- Prune resource quotas ([#264](https://github.com/Shopify/kubernetes-deploy/pull/264/files))
|
329
|
+
|
330
|
+
*Bug Fixes*
|
331
|
+
- Update gemspec to reflect need for ActiveSupport >= 5.0([#270](https://github.com/Shopify/kubernetes-deploy/pull/270))
|
332
|
+
|
333
|
+
### 0.18.1
|
334
|
+
*Enhancements*
|
335
|
+
- 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))
|
336
|
+
|
337
|
+
### 0.18.0
|
338
|
+
*Features*
|
339
|
+
- kubernetes-restart and kubernetes-deploy use exit code 70 when a
|
340
|
+
deploy fails due to one or more resources failing to deploy in time.
|
341
|
+
([#244](https://github.com/Shopify/kubernetes-deploy/pull/244))
|
342
|
+
|
343
|
+
*Bug Fixes*
|
344
|
+
- Handle deploying thousands of resources at a time, previously kubernetes-deploy would fail with
|
345
|
+
`Argument list too long - kubectl (Errno::E2BIG)`. ([#257](https://github.com/Shopify/kubernetes-deploy/pull/257))
|
346
|
+
|
347
|
+
### 0.17.0
|
348
|
+
*Enhancements*
|
349
|
+
|
350
|
+
- Add the `--cascade` flag when we force replace a resource. ([#250](https://github.com/Shopify/kubernetes-deploy/pull/250))
|
351
|
+
|
352
|
+
### 0.16.0
|
353
|
+
**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.
|
354
|
+
|
355
|
+
*Features*
|
356
|
+
- Support partials to reduce duplication in yaml files ([#207](https://github.com/Shopify/kubernetes-deploy/pull/207))
|
357
|
+
|
358
|
+
*Bug Fixes*
|
359
|
+
- Handle podless deamon sets properly ([#242](https://github.com/Shopify/kubernetes-deploy/pull/242))
|
360
|
+
|
361
|
+
### 0.15.2
|
362
|
+
*Enhancements*
|
363
|
+
- Print warnings if kubernetes server version is not supported ([#237](https://github.com/Shopify/kubernetes-deploy/pull/237)).
|
364
|
+
- Possible via env var to disable fetching logs and/or events on deployment failure ([#239](https://github.com/Shopify/kubernetes-deploy/pull/239)).
|
365
|
+
- The `kubernetes-deploy.shopify.io/required-rollout` annotation now takes a percent (e.g. 90%) ([#240](https://github.com/Shopify/kubernetes-deploy/pull/240)).
|
366
|
+
|
367
|
+
### 0.15.1
|
368
|
+
*Enhancements*
|
369
|
+
- Fetch debug events and logs for failed resources in parallel ([#238](https://github.com/Shopify/kubernetes-deploy/pull/238))
|
370
|
+
|
371
|
+
### 0.15.0
|
372
|
+
*Bug Fixes*
|
373
|
+
- None
|
374
|
+
|
375
|
+
*Enhancements*
|
376
|
+
- Support for cronjob resource ([#206](https://github.com/Shopify/kubernetes-deploy/pull/206])).
|
377
|
+
- Make it possible to override the tool's hard timeout for one specific resource via the `kubernetes-deploy.shopify.io/timeout-override`
|
378
|
+
annotation ([#232](https://github.com/Shopify/kubernetes-deploy/pull/232)).
|
379
|
+
- Make it possible to modify how many replicas need to be updated and available before a deployment is considered
|
380
|
+
successful via the `kubernetes-deploy.shopify.io/required-rollout` annotation ([#208](https://github.com/Shopify/kubernetes-deploy/pull/208)).
|
381
|
+
|
382
|
+
### 0.14.1
|
383
|
+
*Bug Fixes*
|
384
|
+
- Make deployments whose pods crash because of CreateContainerConfigError fail fast in 1.8+ too (they would previously time out).
|
385
|
+
- Fix crashes when deploying ExternalName services or services without selectors ([#211](https://github.com/Shopify/kubernetes-deploy/pull/211))
|
386
|
+
- Predeploy ServiceAccount resources ([#221](https://github.com/Shopify/kubernetes-deploy/pull/221))
|
387
|
+
|
388
|
+
*Enhancements*
|
389
|
+
- 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))
|
390
|
+
- Support KUBECONFIG referencing multiple files ([#222](https://github.com/Shopify/kubernetes-deploy/pull/222))
|
391
|
+
|
392
|
+
### 0.14.0
|
393
|
+
*Bug Fixes*
|
394
|
+
- Fix incorrect timeouts occasionally observed on deployments using progressDeadlineSeconds in Kubernetes <1.7.7
|
395
|
+
|
396
|
+
*Enhancements*
|
397
|
+
- 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`).
|
398
|
+
- Improved output related to timeouts. For deployments, both failure and timeout output now mentions the referenced replica set.
|
399
|
+
- Small improvements to the reliability of the success polling.
|
400
|
+
- EjsonSecretProvisioner no longer logs kubectl command output (which may contain secret data) when debug-level logging is enabled.
|
401
|
+
|
402
|
+
### 0.13.0
|
403
|
+
*Features*
|
404
|
+
- Added support for StatefulSets for kubernetes 1.7+ using RollingUpdate
|
405
|
+
|
406
|
+
*Bug Fixes*
|
407
|
+
- Explicitly require the minimum rest-client version required by kubeclient ([#202](https://github.com/Shopify/kubernetes-deploy/pull/202))
|
408
|
+
|
409
|
+
*Enhancements*
|
410
|
+
- 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))
|
411
|
+
|
412
|
+
### 0.12.12
|
413
|
+
*Bug Fixes*
|
414
|
+
- Fix an issue deploying Shopify's internal custom resources.
|
415
|
+
|
416
|
+
### 0.12.11
|
417
|
+
*Bug Fixes*
|
418
|
+
- 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).
|
419
|
+
|
420
|
+
### 0.12.10
|
421
|
+
*Enhancement*
|
422
|
+
- Log reason if deploy times out due to `progressDeadlineSeconds` being exceeded
|
423
|
+
|
424
|
+
### 0.12.9
|
425
|
+
*Bug Fixes*
|
426
|
+
- Retry discovering namespace and kubernetes context
|
427
|
+
- Expose real error during namespace discovery
|
428
|
+
|
429
|
+
### 0.12.8
|
430
|
+
*Bug Fixes*
|
431
|
+
- Force deployment to use its own hard timeout instead of relying on the replica set
|