kubernetes_helper 1.6 → 1.9.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/_container_extra_settings.yml +9 -0
- data/lib/templates/_custom_containers.yml +5 -0
- data/lib/templates/_custom_volumes.yml +3 -0
- data/lib/templates/_job_liveness.yml +12 -0
- data/lib/templates/_volumes.yml +20 -0
- data/lib/templates/cd.sh +6 -0
- data/lib/templates/deployment.yml +14 -30
- data/lib/templates/settings.rb +2 -1
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6e2e119480c5c91e09f658c135c25adc802c26acfd64255a60d71ef71f1d71f3
|
4
|
+
data.tar.gz: a47d27732e7c42f80dd00ee32e5a36bf67cf0fbba533f3650cd3eec528ce2ec6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bbdb0771ba124950ce8704528349c16e52f29d90af6b6581db3f423a377aba4f91d5ca1f82387e976d9a88394f327037c782185632e3f83eef7338b8cf50eb39
|
7
|
+
data.tar.gz: e74722f42ec99b9b22ad01d932203bf968a2610f0724032ca83141201ab3db46d231f666878d283fcc1020fc4c122f5388e938bdbb23c2b6dac901af5bc684ed
|
@@ -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 %>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<% if deployment.cloud_secret_name %>
|
2
|
+
- name: gcloud-creds
|
3
|
+
secret:
|
4
|
+
secretName: '<%=deployment.cloud_secret_name%>'
|
5
|
+
<% end %>
|
6
|
+
|
7
|
+
- name: applog
|
8
|
+
emptyDir: {}
|
9
|
+
|
10
|
+
# Custom volumes
|
11
|
+
# { my_volume: { kind: 'hostPath', mount_path: '/', settings: { path: '..', type: 'Directory' } } }
|
12
|
+
<% (deployment.custom_volumes || {}).each do |name, vol| %>
|
13
|
+
- name: <%= name %>
|
14
|
+
<%= vol[:kind] %>:
|
15
|
+
<% vol[:settings].each do |k, v| %>
|
16
|
+
<%= k %>: <%= v %>
|
17
|
+
<% end %>
|
18
|
+
<% end %>
|
19
|
+
|
20
|
+
<%= include_template "_custom_volumes.yml", { pod: locals[:pod] } %>
|
data/lib/templates/cd.sh
CHANGED
@@ -43,6 +43,11 @@ 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
|
@@ -50,3 +55,4 @@ for deployment in "${deployments[@]}"; do
|
|
50
55
|
|
51
56
|
<%= include_template "_cd_apply_images.sh" %>
|
52
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,27 +81,13 @@ 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:
|
84
|
-
|
85
|
-
- name: gcloud-creds
|
86
|
-
secret:
|
87
|
-
secretName: '<%=deployment.cloud_secret_name%>'
|
88
|
-
<% end %>
|
89
|
-
|
90
|
-
- name: applog
|
91
|
-
emptyDir: {}
|
92
|
-
|
93
|
-
# Custom volumes
|
94
|
-
# { my_volume: { kind: 'hostPath', mount_path: '/', settings: { path: '..', type: 'Directory' } } }
|
95
|
-
<% (deployment.custom_volumes || {}).each do |name, vol| %>
|
96
|
-
- name: <%= name %>
|
97
|
-
<%= vol[:kind] %>:
|
98
|
-
<% vol[:settings].each do |k, v| %>
|
99
|
-
<%= k %>: <%= v %>
|
100
|
-
<% end %>
|
101
|
-
<% end %>
|
90
|
+
<%= include_template "_volumes.yml", { pod: 'web' } %>
|
102
91
|
|
103
92
|
|
104
93
|
<% if deployment.job_name %>
|
@@ -124,22 +113,12 @@ documents:
|
|
124
113
|
<% if deployment.job_command %>
|
125
114
|
command: [ "/bin/bash", "-c", "<%= deployment.job_command %>" ]
|
126
115
|
<% end %>
|
116
|
+
<%= include_template "_container_extra_settings.yml", { pod: 'job' } %>
|
127
117
|
|
128
118
|
<% if deployment.job_sidekiq_alive_gem %>
|
129
119
|
<%= include_template "_sidekiq_alive_gem.yml" %>
|
130
120
|
<% 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 %>
|
121
|
+
<%= include_template "_job_liveness.yml" %>
|
143
122
|
<% end %>
|
144
123
|
|
145
124
|
<% if deployment.cloud_secret_name %>
|
@@ -147,6 +126,11 @@ documents:
|
|
147
126
|
<% end %>
|
148
127
|
|
149
128
|
- <<: *logs_container
|
129
|
+
|
130
|
+
<%= include_template "_custom_containers.yml", { pod: 'job' } %>
|
131
|
+
|
132
|
+
volumes:
|
133
|
+
<%= include_template "_volumes.yml", { pod: 'job' } %>
|
150
134
|
<% end %>
|
151
135
|
|
152
136
|
<% 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.9.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-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: erb
|
@@ -41,8 +41,13 @@ files:
|
|
41
41
|
- lib/kubernetes_helper/version.rb
|
42
42
|
- lib/templates/README.md
|
43
43
|
- lib/templates/_cd_apply_images.sh
|
44
|
+
- lib/templates/_container_extra_settings.yml
|
45
|
+
- lib/templates/_custom_containers.yml
|
46
|
+
- lib/templates/_custom_volumes.yml
|
47
|
+
- lib/templates/_job_liveness.yml
|
44
48
|
- lib/templates/_replicas.yml
|
45
49
|
- lib/templates/_sidekiq_alive_gem.yml
|
50
|
+
- lib/templates/_volumes.yml
|
46
51
|
- lib/templates/cd.sh
|
47
52
|
- lib/templates/certificate.yml
|
48
53
|
- lib/templates/deployment.yml
|