kubernetes_helper 1.5 → 1.8.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/kubernetes_helper/core.rb +9 -8
- data/lib/kubernetes_helper/version.rb +1 -1
- data/lib/templates/_cd_apply_images.sh +2 -0
- data/lib/templates/_container_extra_settings.yml +9 -0
- data/lib/templates/_custom_containers.yml +5 -0
- data/lib/templates/_job_liveness.yml +12 -0
- data/lib/templates/cd.sh +7 -2
- data/lib/templates/deployment.yml +10 -12
- data/lib/templates/settings.rb +2 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b8b8fba09e6bdb8ee80e82af9a966d53ba213d58294c894d4463aeba8ec66f44
|
4
|
+
data.tar.gz: dfb9d875daeee0399190208e4ff7c6b2136dc1cbd3550753fb4318551158f4c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fcb3e3a26693625c437dafbfb38520a8db2aa7b4a4d9fc29804706e728e62c585a2c4aaaa3fabac1e081a9acbca4346a516148c95f28716400ba44ef53dc6136
|
7
|
+
data.tar.gz: 5f5f20d3dd0f582910a6e48bb1ec2c9b23da5ec7b8a72fcdd4c8338c6a8ea07ef60f442f41f22bd8587e4d0a0027758bb65ecfcefedb107a89e16e8abd2f65be
|
@@ -11,8 +11,8 @@ module KubernetesHelper
|
|
11
11
|
binding
|
12
12
|
end
|
13
13
|
|
14
|
-
def include_template(name)
|
15
|
-
render_template.call(name)
|
14
|
+
def include_template(name, locals = {})
|
15
|
+
render_template.call(name, locals)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
@@ -36,8 +36,8 @@ module KubernetesHelper
|
|
36
36
|
|
37
37
|
# @param text (String)
|
38
38
|
# Sample: replicas: '#{deployment.replicas}'
|
39
|
-
def replace_config_variables(text)
|
40
|
-
values = config_values.map do |key, value| # rubocop:disable Style/HashTransformValues
|
39
|
+
def replace_config_variables(text, locals = {})
|
40
|
+
values = config_values.merge(locals: locals).map do |key, value| # rubocop:disable Style/HashTransformValues
|
41
41
|
[key, value.is_a?(Hash) ? OpenStruct.new(value) : value]
|
42
42
|
end.to_h
|
43
43
|
values[:render_template] = method(:render_template)
|
@@ -75,10 +75,10 @@ module KubernetesHelper
|
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
|
-
def render_template(template_name)
|
78
|
+
def render_template(template_name, locals = {})
|
79
79
|
path = KubernetesHelper.settings_path(template_name, use_template: true)
|
80
80
|
text = "\n#{File.read(path)}"
|
81
|
-
replace_config_variables(text)
|
81
|
+
replace_config_variables(text, locals)
|
82
82
|
end
|
83
83
|
|
84
84
|
def static_env_vars
|
@@ -91,10 +91,11 @@ module KubernetesHelper
|
|
91
91
|
end
|
92
92
|
|
93
93
|
# parse secrets auto importer
|
94
|
-
def parse_import_secrets(document)
|
94
|
+
def parse_import_secrets(document) # rubocop:disable Metrics/AbcSize
|
95
95
|
containers = document.dig('spec', 'template', 'spec', 'containers') || []
|
96
96
|
containers.each do |container|
|
97
|
-
container['env'] = (container['env'] || [])
|
97
|
+
container['env'] = (container['env'] || [])
|
98
|
+
container['env'] = container['env'] + static_env_vars if container.delete('static_env')
|
98
99
|
if container['import_secrets']
|
99
100
|
container['env'] = container['env'] + import_secrets(*container['import_secrets'])
|
100
101
|
container.delete('import_secrets')
|
@@ -0,0 +1,12 @@
|
|
1
|
+
ports: [ ]
|
2
|
+
<% if (deployment.job_services || []).any? %>
|
3
|
+
livenessProbe: &liveness_probe
|
4
|
+
exec:
|
5
|
+
command: [ /bin/sh, -c,
|
6
|
+
'if [ $(ps -ef | grep "<%= deployment.job_services.join("\|") %>" | grep -v "grep" | wc -l) -lt <%= deployment.job_services.count %> ]; then
|
7
|
+
echo "Some required services are not running"; exit 1;
|
8
|
+
fi' ]
|
9
|
+
initialDelaySeconds: 120
|
10
|
+
periodSeconds: 30
|
11
|
+
readinessProbe: *liveness_probe
|
12
|
+
<% end %>
|
data/lib/templates/cd.sh
CHANGED
@@ -43,11 +43,16 @@ docker tag $DEPLOY_NAME $LATEST_NAME
|
|
43
43
|
docker push $DEPLOY_NAME
|
44
44
|
docker push $LATEST_NAME
|
45
45
|
|
46
|
+
## Update new secrets defined in secrets.yml as ENV vars for deployments
|
47
|
+
<% if continuous_deployment.update_deployment %>
|
48
|
+
kubernetes_helper run_yml 'deployment.yml' 'kubectl apply'
|
49
|
+
<% end %>
|
50
|
+
|
46
51
|
## Apply deployments
|
47
52
|
IFS=',' read -r -a deployments <<< "$DEPLOYMENTS"
|
48
53
|
for deployment in "${deployments[@]}"; do
|
49
54
|
[ -z "$deployment" ] && continue # if empty value
|
50
55
|
|
51
|
-
|
52
|
-
[ "$deployment" = "${deployments[0]}" ] && kubectl rollout status deployment/$deployment || true
|
56
|
+
<%= include_template "_cd_apply_images.sh" %>
|
53
57
|
done
|
58
|
+
|
@@ -26,6 +26,7 @@ documents:
|
|
26
26
|
command: ["/bin/bash", "-c", "<%= deployment.command %>"]
|
27
27
|
<% end %>
|
28
28
|
name: *app_name
|
29
|
+
static_env: true
|
29
30
|
import_secrets: ['secrets.yml', '<%=secrets.name%>']
|
30
31
|
ports:
|
31
32
|
- containerPort: &port 3000
|
@@ -41,6 +42,7 @@ documents:
|
|
41
42
|
periodSeconds: 15
|
42
43
|
readinessProbe: *liveness_probe
|
43
44
|
<% end %>
|
45
|
+
<%= include_template "_container_extra_settings.yml", { pod: 'web' } %>
|
44
46
|
|
45
47
|
volumeMounts:
|
46
48
|
- &log_volume
|
@@ -69,6 +71,7 @@ documents:
|
|
69
71
|
env: []
|
70
72
|
volumeMounts:
|
71
73
|
- *cloud_credentials_volume
|
74
|
+
<%= include_template "_container_extra_settings.yml", { pod: 'cloudsql' } %>
|
72
75
|
<% end %>
|
73
76
|
|
74
77
|
- &logs_container # print to stdout all log files
|
@@ -78,6 +81,9 @@ documents:
|
|
78
81
|
env: []
|
79
82
|
volumeMounts:
|
80
83
|
- *log_volume
|
84
|
+
<%= include_template "_container_extra_settings.yml", { pod: 'logs' } %>
|
85
|
+
|
86
|
+
<%= include_template "_custom_containers.yml", { pod: 'web' } %>
|
81
87
|
|
82
88
|
terminationGracePeriodSeconds: 120
|
83
89
|
volumes:
|
@@ -124,22 +130,12 @@ documents:
|
|
124
130
|
<% if deployment.job_command %>
|
125
131
|
command: [ "/bin/bash", "-c", "<%= deployment.job_command %>" ]
|
126
132
|
<% end %>
|
133
|
+
<%= include_template "_container_extra_settings.yml", { pod: 'job' } %>
|
127
134
|
|
128
135
|
<% if deployment.job_sidekiq_alive_gem %>
|
129
136
|
<%= include_template "_sidekiq_alive_gem.yml" %>
|
130
137
|
<% else %>
|
131
|
-
|
132
|
-
<% if (deployment.job_services || []).any? %>
|
133
|
-
livenessProbe: &liveness_probe
|
134
|
-
exec:
|
135
|
-
command: [ /bin/sh, -c,
|
136
|
-
'if [ $(ps -ef | grep "<%= deployment.job_services.join("\|") %>" | grep -v "grep" | wc -l) -lt <%= deployment.job_services.count %> ]; then
|
137
|
-
echo "Some required services are not running"; exit 1;
|
138
|
-
fi' ]
|
139
|
-
initialDelaySeconds: 120
|
140
|
-
periodSeconds: 30
|
141
|
-
readinessProbe: *liveness_probe
|
142
|
-
<% end %>
|
138
|
+
<%= include_template "_job_liveness.yml" %>
|
143
139
|
<% end %>
|
144
140
|
|
145
141
|
<% if deployment.cloud_secret_name %>
|
@@ -147,6 +143,8 @@ documents:
|
|
147
143
|
<% end %>
|
148
144
|
|
149
145
|
- <<: *logs_container
|
146
|
+
|
147
|
+
<%= include_template "_custom_containers.yml", { pod: 'job' } %>
|
150
148
|
<% end %>
|
151
149
|
|
152
150
|
<% if deployment.replicas_range %>
|
data/lib/templates/settings.rb
CHANGED
@@ -27,7 +27,8 @@ settings = {
|
|
27
27
|
project_name: 'my-project-name',
|
28
28
|
cluster_name: 'my-cluster-name',
|
29
29
|
cluster_region: 'europe-west4-a',
|
30
|
-
docker_build_cmd: 'build -f Dockerfile' # using target: 'build --target production -f Dockerfile '
|
30
|
+
docker_build_cmd: 'build -f Dockerfile', # using target: 'build --target production -f Dockerfile '
|
31
|
+
update_deployment: false # permits to reload secrets and re-generate/update deployment yaml
|
31
32
|
},
|
32
33
|
secrets: {
|
33
34
|
name: "#{app_name}-secrets"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kubernetes_helper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- owen2345
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-11-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: erb
|
@@ -40,6 +40,10 @@ files:
|
|
40
40
|
- lib/kubernetes_helper/railtie.rb
|
41
41
|
- lib/kubernetes_helper/version.rb
|
42
42
|
- lib/templates/README.md
|
43
|
+
- lib/templates/_cd_apply_images.sh
|
44
|
+
- lib/templates/_container_extra_settings.yml
|
45
|
+
- lib/templates/_custom_containers.yml
|
46
|
+
- lib/templates/_job_liveness.yml
|
43
47
|
- lib/templates/_replicas.yml
|
44
48
|
- lib/templates/_sidekiq_alive_gem.yml
|
45
49
|
- lib/templates/cd.sh
|