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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 91be870ea9d9d07de0ef4fb9e5c02094929b6d89fa7229aed5286877ff48dbca
4
- data.tar.gz: 656ec2ce0a6ef926e6166da26fff8a493b6648984915f09da47bbd2913c0fbb3
3
+ metadata.gz: 6e2e119480c5c91e09f658c135c25adc802c26acfd64255a60d71ef71f1d71f3
4
+ data.tar.gz: a47d27732e7c42f80dd00ee32e5a36bf67cf0fbba533f3650cd3eec528ce2ec6
5
5
  SHA512:
6
- metadata.gz: 25e41a5e0a09dd15dcd6073d3d7278786d72916e6a9dc288e4c1d8380177d31d64c79e0ab3f164daae0e8f32e77ae52ec85d3a958856fd787a7be7b1523d2d49
7
- data.tar.gz: 3de36d890e9c2211854cbaabe76e662a7fa4d60696c88d6c943ca05a55164fa829eee988bb80d6b2a2da914ad137e040c17ccc1644c9b0c981c193faafebce45
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'] || []) + 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.6'
4
+ VERSION = '1.9.0'
5
5
  end
@@ -0,0 +1,9 @@
1
+ # <% if locals[:pod] == 'job' %>
2
+ # resources:
3
+ # requests:
4
+ # cpu: 50m
5
+ # memory: 256Mi
6
+ # limits:
7
+ # cpu: 500m
8
+ # memory: 1Gi
9
+ # <% end %>
@@ -0,0 +1,5 @@
1
+ # <% if locals[:pod] == 'job' %>
2
+ # - name: scraper
3
+ # image: owencio/easy_scraper
4
+ # ...
5
+ # <% end %>
@@ -0,0 +1,3 @@
1
+ # - name: dshm
2
+ # emptyDir:
3
+ # medium: Memory
@@ -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
- <% if deployment.cloud_secret_name %>
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
- ports: [ ]
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 %>
@@ -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: '1.6'
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-09-24 00:00:00.000000000 Z
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