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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 954aee8be3740b9cedb7496bd66ad857328ee8e1bf72a3571947bc70f849d97a
4
- data.tar.gz: e9a33fa7278d6fd5eb844067c5378490588ce44e71df439c6e5178e24fcc5e73
3
+ metadata.gz: a161c5dd4e43f7a71dfb8c9d0589291ffd52f9547c602f3cd8a5f22b5f1f9dd3
4
+ data.tar.gz: 9d2dc621a9cb9cc5145ef5922c95f7f7218ff69c509830dc18d6b4c8affe6601
5
5
  SHA512:
6
- metadata.gz: bab608c022fec18c45f6a0aa84f5d3528d0e455d1cf9670a3c07c8cc65d4115642c924d9d1482140037892d7e48282826b98ed55ed87d923a8aed5b809ca0c52
7
- data.tar.gz: a8a65ba45e6c362928f07788909497b8bb8ec8eb152ad72ea998c0af5f55bb9d0de06adc94ff256d97b2719da4b8aec43f606739999cd753825670cef020f3d1
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'] || []) + static_env_vars
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')
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module KubernetesHelper
4
- VERSION = '1.4'
4
+ VERSION = '1.7.0'
5
5
  end
@@ -0,0 +1,2 @@
1
+ kubectl set image deployment/$deployment $deployment=$DEPLOY_NAME
2
+ [ "$deployment" = "${deployments[0]}" ] && kubectl rollout status deployment/$deployment || true
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
- kubectl set image deployment/$deployment $deployment=$DEPLOY_NAME
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 %>
@@ -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: '1.4'
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-09-21 00:00:00.000000000 Z
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