pfab 0.48.0 → 0.50.0
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/lib/pfab/templates/base.rb +22 -0
- data/lib/pfab/templates/daemon.rb +1 -0
- data/lib/pfab/templates/web.rb +68 -26
- data/lib/pfab/version.rb +1 -1
- data/pfab.gemspec +3 -3
- 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: 843d834bac5fcac5a8761c3571769bdfddfbe675b437c053c73f51ac5de2be5e
|
4
|
+
data.tar.gz: 71d5523cf8f3fbdd3ac10775f16b75c25b36d427bce36d86f078a36c7d39b9b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7154a5cf912a6f890f4b4442942655a06a9d37dbcb1c53d0d0db55c1f752048ce5d47663e4b00ae79f0bcd4fe7dac4c744a086c91974337a672f2f89c49c1518
|
7
|
+
data.tar.gz: b31ca987ad5f375d4f9d24ce253c42455a6d8ec8da2592885496d8f3066baef1f220c5dabdad7175f6b55ec0d3ae43be6ce5d359059d1ba5affa004cdd209fbd
|
data/lib/pfab/templates/base.rb
CHANGED
@@ -125,6 +125,28 @@ module Pfab
|
|
125
125
|
} }
|
126
126
|
end
|
127
127
|
end
|
128
|
+
|
129
|
+
|
130
|
+
def container_ports
|
131
|
+
ports = []
|
132
|
+
if app_vars["port"]
|
133
|
+
ports.append ({
|
134
|
+
name: "main",
|
135
|
+
containerPort: app_vars["port"]
|
136
|
+
})
|
137
|
+
end
|
138
|
+
%w[additionalPorts containerPorts].each do |key|
|
139
|
+
if get(key)
|
140
|
+
get(key).each do |name, number|
|
141
|
+
ports.append(
|
142
|
+
{name: name, containerPort: number}
|
143
|
+
)
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
return ports
|
149
|
+
end
|
128
150
|
end
|
129
151
|
end
|
130
152
|
end
|
data/lib/pfab/templates/web.rb
CHANGED
@@ -14,6 +14,7 @@ module Pfab
|
|
14
14
|
puts "skipping ingress because ingress_disabled = #{@data['generateIngressEnabled']}"
|
15
15
|
end
|
16
16
|
f << StyledYAML.dump(deployment.deep_stringify_keys)
|
17
|
+
f << StyledYAML.dump(pod_disruption_budget.deep_stringify_keys)
|
17
18
|
end
|
18
19
|
end
|
19
20
|
|
@@ -155,6 +156,70 @@ module Pfab
|
|
155
156
|
"web"
|
156
157
|
end
|
157
158
|
|
159
|
+
def pod_disruption_budget
|
160
|
+
pdb = {
|
161
|
+
apiVersion: "policy/v1",
|
162
|
+
kind: "PodDisruptionBudget",
|
163
|
+
metadata: {
|
164
|
+
name: "#{@data['deployed_name']}-pdb",
|
165
|
+
namespace: get_namespace()
|
166
|
+
},
|
167
|
+
spec: {
|
168
|
+
minAvailable: 1,
|
169
|
+
selector: {
|
170
|
+
matchLabels: {
|
171
|
+
application: @data['application'],
|
172
|
+
"deployed-name" => @data['deployed_name'],
|
173
|
+
"application-type" => application_type
|
174
|
+
}
|
175
|
+
}
|
176
|
+
}
|
177
|
+
}
|
178
|
+
return pdb
|
179
|
+
end
|
180
|
+
ANTI_AFFINITY_TYPES = %w[disabled required preferred]
|
181
|
+
ANTI_AFFINITY_MODE = 'antiAffinityMode'
|
182
|
+
ANTI_AFFINITY_PREFERRED_MODE_WEIGHT = 'antiAffinityPreferredModeWeight'
|
183
|
+
|
184
|
+
def anti_affinity
|
185
|
+
if app_vars.has_key?(ANTI_AFFINITY_MODE)
|
186
|
+
antiAffinityMode = app_vars[ANTI_AFFINITY_MODE]
|
187
|
+
affinitySelector = {
|
188
|
+
topologyKey: "kubernetes.io/hostname",
|
189
|
+
labelSelector: {
|
190
|
+
matchLabels: {
|
191
|
+
"deployed-name" => @data['deployed_name'],
|
192
|
+
},
|
193
|
+
},
|
194
|
+
}
|
195
|
+
|
196
|
+
return case antiAffinityMode
|
197
|
+
when "disabled"
|
198
|
+
puts "antiAffinityMode is set to disabled, skipping"
|
199
|
+
{}
|
200
|
+
when "required"
|
201
|
+
{
|
202
|
+
podAntiAffinity: {
|
203
|
+
requiredDuringSchedulingIgnoredDuringExecution: [
|
204
|
+
affinitySelector
|
205
|
+
] } }
|
206
|
+
when "preferred"
|
207
|
+
{ podAntiAffinity: {
|
208
|
+
preferredDuringSchedulingIgnoredDuringExecution: [
|
209
|
+
{
|
210
|
+
weight: app_vars[ANTI_AFFINITY_PREFERRED_MODE_WEIGHT] || 100,
|
211
|
+
podAffinityTerm: affinitySelector
|
212
|
+
}
|
213
|
+
]
|
214
|
+
}
|
215
|
+
}
|
216
|
+
else
|
217
|
+
raise "Unexpected value #{antiAffinityMode} specified for `#{ANTI_AFFINITY_MODE}`. Valid selections are #{ANTI_AFFINITY_TYPES}"
|
218
|
+
end
|
219
|
+
end
|
220
|
+
return {}
|
221
|
+
end
|
222
|
+
|
158
223
|
def deployment
|
159
224
|
secret_mounts = get("secretMounts") || []
|
160
225
|
volume_mounts = []
|
@@ -186,17 +251,7 @@ module Pfab
|
|
186
251
|
readOnly: true
|
187
252
|
)
|
188
253
|
end
|
189
|
-
ports =
|
190
|
-
name: "main",
|
191
|
-
containerPort: app_vars["port"]
|
192
|
-
}]
|
193
|
-
if get("additionalPorts")
|
194
|
-
get("additionalPorts").each do |name, number|
|
195
|
-
ports.append(
|
196
|
-
{name: name, containerPort: number}
|
197
|
-
)
|
198
|
-
end
|
199
|
-
end
|
254
|
+
ports = container_ports()
|
200
255
|
|
201
256
|
{
|
202
257
|
kind: "Deployment",
|
@@ -260,25 +315,12 @@ module Pfab
|
|
260
315
|
volumeMounts: volume_mounts
|
261
316
|
}.compact
|
262
317
|
],
|
263
|
-
affinity:
|
264
|
-
podAntiAffinity: {
|
265
|
-
requiredDuringSchedulingIgnoredDuringExecution: [
|
266
|
-
{
|
267
|
-
topologyKey: "kubernetes.io/hostname",
|
268
|
-
labelSelector: {
|
269
|
-
matchLabels: {
|
270
|
-
"deployed-name" => @data['deployed_name'],
|
271
|
-
},
|
272
|
-
},
|
273
|
-
}
|
274
|
-
]
|
275
|
-
}
|
276
|
-
},
|
318
|
+
affinity: anti_affinity,
|
277
319
|
volumes: volumes
|
278
320
|
}.compact,
|
279
321
|
},
|
280
322
|
}.compact,
|
281
|
-
}
|
323
|
+
}.compact
|
282
324
|
end
|
283
325
|
end
|
284
326
|
end
|
data/lib/pfab/version.rb
CHANGED
data/pfab.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: pfab 0.
|
5
|
+
# stub: pfab 0.50.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "pfab".freeze
|
9
|
-
s.version = "0.
|
9
|
+
s.version = "0.50.0"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib".freeze]
|
13
13
|
s.authors = ["Jeff Dwyer".freeze]
|
14
|
-
s.date = "2024-
|
14
|
+
s.date = "2024-05-06"
|
15
15
|
s.description = "k8s helper".freeze
|
16
16
|
s.email = "jdwyer@prefab.cloud".freeze
|
17
17
|
s.executables = ["pfab".freeze]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pfab
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.50.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeff Dwyer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: commander
|