kubernetes_helper 1.4 → 1.7.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/_custom_containers.yml +0 -0
- data/lib/templates/cd.sh +7 -2
- data/lib/templates/deployment.yml +21 -0
- data/lib/templates/settings.rb +3 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a161c5dd4e43f7a71dfb8c9d0589291ffd52f9547c602f3cd8a5f22b5f1f9dd3
|
4
|
+
data.tar.gz: 9d2dc621a9cb9cc5145ef5922c95f7f7218ff69c509830dc18d6b4c8affe6601
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1bbcb9957df2086ce5bfdd668ff1ab19801fdb475f3569ff30db898fe9bb5626ed52d62ed4ac72cc58c9450245bfa97f2dcfdb090805310a3bcad392602ea93d
|
7
|
+
data.tar.gz: 6a00e52c99aabf37131a14b178eee76a5320e3d428f851c54da629e303396ad6542e735870368187b189411ae2e00f1004b48df76a565cfad2f1f1434bede444
|
@@ -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')
|
File without changes
|
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
|
@@ -54,6 +55,11 @@ documents:
|
|
54
55
|
readOnly: true
|
55
56
|
<% end %>
|
56
57
|
|
58
|
+
<% (deployment.custom_volumes || {}).each do |name, vol| %>
|
59
|
+
- name: <%= name %>
|
60
|
+
mountPath: <%= vol[:mount_path] %>
|
61
|
+
<% end %>
|
62
|
+
|
57
63
|
<% if deployment.cloud_secret_name %>
|
58
64
|
- &cloudsql_container
|
59
65
|
image: gcr.io/cloudsql-docker/gce-proxy:1.09 # Cloud sql proxy
|
@@ -74,6 +80,8 @@ documents:
|
|
74
80
|
volumeMounts:
|
75
81
|
- *log_volume
|
76
82
|
|
83
|
+
<%= include_template "_custom_containers.yml", { pod: 'web' } %>
|
84
|
+
|
77
85
|
terminationGracePeriodSeconds: 120
|
78
86
|
volumes:
|
79
87
|
<% if deployment.cloud_secret_name %>
|
@@ -85,6 +93,17 @@ documents:
|
|
85
93
|
- name: applog
|
86
94
|
emptyDir: {}
|
87
95
|
|
96
|
+
# Custom volumes
|
97
|
+
# { my_volume: { kind: 'hostPath', mount_path: '/', settings: { path: '..', type: 'Directory' } } }
|
98
|
+
<% (deployment.custom_volumes || {}).each do |name, vol| %>
|
99
|
+
- name: <%= name %>
|
100
|
+
<%= vol[:kind] %>:
|
101
|
+
<% vol[:settings].each do |k, v| %>
|
102
|
+
<%= k %>: <%= v %>
|
103
|
+
<% end %>
|
104
|
+
<% end %>
|
105
|
+
|
106
|
+
|
88
107
|
<% if deployment.job_name %>
|
89
108
|
- apiVersion: apps/v1
|
90
109
|
kind: Deployment
|
@@ -131,6 +150,8 @@ documents:
|
|
131
150
|
<% end %>
|
132
151
|
|
133
152
|
- <<: *logs_container
|
153
|
+
|
154
|
+
<%= include_template "_custom_containers.yml", { pod: 'job' } %>
|
134
155
|
<% end %>
|
135
156
|
|
136
157
|
<% if deployment.replicas_range %>
|
data/lib/templates/settings.rb
CHANGED
@@ -14,6 +14,7 @@ settings = {
|
|
14
14
|
# job_name: "#{app_name}-job", # enable if there is any background service
|
15
15
|
# job_command: 'bundle exec sidekiq -C config/sidekiq.yml',
|
16
16
|
# job_services: ['sidekiq', 'cron'] # list of linux services needed.
|
17
|
+
# custom_volumes: { my_volume: { kind: 'hostPath', mount_path: '/', settings: { path: '..', type: 'Directory' } } }
|
17
18
|
},
|
18
19
|
ingress: {
|
19
20
|
name: "#{app_name}-ingress",
|
@@ -26,7 +27,8 @@ settings = {
|
|
26
27
|
project_name: 'my-project-name',
|
27
28
|
cluster_name: 'my-cluster-name',
|
28
29
|
cluster_region: 'europe-west4-a',
|
29
|
-
docker_build_cmd: 'build -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
|
30
32
|
},
|
31
33
|
secrets: {
|
32
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.7.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-10-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: erb
|
@@ -40,6 +40,8 @@ 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/_custom_containers.yml
|
43
45
|
- lib/templates/_replicas.yml
|
44
46
|
- lib/templates/_sidekiq_alive_gem.yml
|
45
47
|
- lib/templates/cd.sh
|