krane 2.4.1 → 2.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +19 -0
- data/lib/krane/kubernetes_resource/daemon_set.rb +19 -3
- data/lib/krane/kubernetes_resource/pod.rb +4 -0
- data/lib/krane/kubernetes_resource/stateful_set.rb +6 -4
- data/lib/krane/resource_deployer.rb +1 -0
- data/lib/krane/restart_task.rb +1 -1
- data/lib/krane/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64b26c01ccbf33a59a0b18463afdcde52c7b223f120b804dd865e99a7fa1195c
|
4
|
+
data.tar.gz: bcd0a549f67c53e23f5c8ea556c8a97d847f30d9e54e088b0e26f0c9059c51d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f617f7580dd5de9630ac439f2b0ded0aed198db11a2fbaa3a6ec72d4745c43001e9ffcea7570432ae13dab9224118f50da448958294317a5dd104597809e3dcf
|
7
|
+
data.tar.gz: 7a8807bdc559e2fe1b92734a347809f24cade1fac10bd00510b3667b3e9880bd7c37e75c1bf0dee44488a9972ad2f9c1b498a3e96107c143583fb018da2ed6f0
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,24 @@
|
|
1
1
|
## next
|
2
2
|
|
3
|
+
## 2.4.4
|
4
|
+
|
5
|
+
*Enhancements*
|
6
|
+
|
7
|
+
- Improve DaemonSet rollout by ignoring `Evicted` Pods [#883](https://github.com/Shopify/krane/pull/883)
|
8
|
+
|
9
|
+
## 2.4.3
|
10
|
+
|
11
|
+
*Enhancements*
|
12
|
+
|
13
|
+
- Improve DaemonSet rollout [#881](https://github.com/Shopify/krane/pull/881)
|
14
|
+
|
15
|
+
## 2.4.2
|
16
|
+
|
17
|
+
*Bug fixes*
|
18
|
+
|
19
|
+
- Resolve errors for StatefulSet restart with `updateStrategy: OnDelete` [#876](https://github.com/Shopify/krane/pull/876)
|
20
|
+
- Timeouts during the "predeploy priority resources" phase now raise `DeploymentTimeoutError` instead of `FatalDeploymentError` [#874](https://github.com/Shopify/krane/pull/874)
|
21
|
+
|
3
22
|
## 2.4.1
|
4
23
|
|
5
24
|
*Enhancements*
|
@@ -9,7 +9,8 @@ module Krane
|
|
9
9
|
def sync(cache)
|
10
10
|
super
|
11
11
|
@pods = exists? ? find_pods(cache) : []
|
12
|
-
|
12
|
+
|
13
|
+
@nodes = refresh_nodes(cache)
|
13
14
|
end
|
14
15
|
|
15
16
|
def status
|
@@ -58,7 +59,7 @@ module Krane
|
|
58
59
|
def relevant_pods_ready?
|
59
60
|
return true if rollout_data["desiredNumberScheduled"].to_i == rollout_data["numberReady"].to_i # all pods ready
|
60
61
|
relevant_node_names = @nodes.map(&:name)
|
61
|
-
considered_pods = @pods.select { |p| relevant_node_names.include?(p.node_name) }
|
62
|
+
considered_pods = @pods.select { |p| relevant_node_names.include?(p.node_name) && !p.evicted? }
|
62
63
|
@logger.debug("DaemonSet is reporting #{rollout_data['numberReady']} pods ready." \
|
63
64
|
" Considered #{considered_pods.size} pods out of #{@pods.size} for #{@nodes.size} nodes.")
|
64
65
|
considered_pods.present? &&
|
@@ -66,9 +67,24 @@ module Krane
|
|
66
67
|
rollout_data["numberReady"].to_i >= considered_pods.length
|
67
68
|
end
|
68
69
|
|
70
|
+
def refresh_nodes(cache)
|
71
|
+
new_nodes = find_nodes(cache)
|
72
|
+
return new_nodes if @nodes.blank?
|
73
|
+
|
74
|
+
# Remove non-existent nodes
|
75
|
+
@nodes.select do |node|
|
76
|
+
new_nodes.find { |n| n.name == node.name } != nil
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
69
80
|
def find_nodes(cache)
|
70
81
|
all_nodes = cache.get_all(Node.kind)
|
71
|
-
all_nodes.
|
82
|
+
all_nodes.each_with_object([]) do |node_data, relevant_nodes|
|
83
|
+
next if node_data.dig('spec', 'unschedulable').to_s.downcase == 'true'
|
84
|
+
cond = node_data.dig('status', 'conditions').find { |c| c['type'].downcase == 'ready' }
|
85
|
+
next if (!cond.nil? && cond['status'].downcase != 'true')
|
86
|
+
relevant_nodes << Node.new(definition: node_data)
|
87
|
+
end
|
72
88
|
end
|
73
89
|
|
74
90
|
def rollout_data
|
@@ -19,6 +19,9 @@ module Krane
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def deploy_succeeded?
|
22
|
+
success = observed_generation == current_generation &&
|
23
|
+
desired_replicas == status_data['readyReplicas'].to_i &&
|
24
|
+
status_data['currentRevision'] == status_data['updateRevision']
|
22
25
|
if update_strategy == ONDELETE
|
23
26
|
# Gem cannot monitor update since it doesn't occur until delete
|
24
27
|
unless @success_assumption_warning_shown
|
@@ -27,11 +30,10 @@ module Krane
|
|
27
30
|
"Consider switching to rollingUpdate.")
|
28
31
|
@success_assumption_warning_shown = true
|
29
32
|
end
|
33
|
+
else
|
34
|
+
success &= desired_replicas == status_data['currentReplicas'].to_i
|
30
35
|
end
|
31
|
-
|
32
|
-
status_data['currentRevision'] == status_data['updateRevision'] &&
|
33
|
-
desired_replicas == status_data['readyReplicas'].to_i &&
|
34
|
-
desired_replicas == status_data['currentReplicas'].to_i
|
36
|
+
success
|
35
37
|
end
|
36
38
|
|
37
39
|
def deploy_failed?
|
@@ -70,6 +70,7 @@ module Krane
|
|
70
70
|
r.sync_debug_info(kubectl)
|
71
71
|
end
|
72
72
|
failed_resources.each { |r| logger.summary.add_paragraph(r.debug_message) }
|
73
|
+
raise DeploymentTimeoutError if failed_resources.all?(&:deploy_timed_out?)
|
73
74
|
raise FatalDeploymentError, "Failed to deploy #{fail_count} priority #{'resource'.pluralize(fail_count)}"
|
74
75
|
end
|
75
76
|
logger.blank_line
|
data/lib/krane/restart_task.rb
CHANGED
@@ -213,7 +213,7 @@ module Krane
|
|
213
213
|
def delete_statefulset_pods(record)
|
214
214
|
pods = kubeclient.get_pods(namespace: record.metadata.namespace)
|
215
215
|
pods.select! do |pod|
|
216
|
-
pod.metadata
|
216
|
+
pod.metadata&.ownerReferences&.find { |ref| ref.uid == record.metadata.uid }
|
217
217
|
end
|
218
218
|
pods.each { |pod| kubeclient.delete_pod(pod.metadata.name, pod.metadata.namespace) }
|
219
219
|
end
|
data/lib/krane/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: krane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.4.
|
4
|
+
version: 2.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Katrina Verey
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2022-
|
13
|
+
date: 2022-04-01 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|