stax-helm 0.0.8 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 90efb4bc5fd77b16200e4693747b303df7644ebfe21149d715327a56397f1d25
4
- data.tar.gz: 19d2b39ef1cbd165dbd32091f317f8c11b12624d381920bdffd5295b8b8c5b68
3
+ metadata.gz: 3909b351d090d040c868d10944e88a1701d66bba982d32692a278cd15fe3ebce
4
+ data.tar.gz: 51bc19ccc238fff367b62128862836088efbdebff095536816f3432f2112a526
5
5
  SHA512:
6
- metadata.gz: 5566799f8341ace21b46a2ec7c3d90a3c5dc11d26f54c7efa1dc593df439e6dd59732286153823995573a53337252f8249000d54f26dd4813e72ebad23e943ff
7
- data.tar.gz: 8d1b6ca7b1e7465cac0f77754438ccff9ad880e12bf7d1eb9b2c58a6f48921bbad3471696ab4cd2e609aeee1cd749c0ce6304c23ad248ece555a2291140c5785
6
+ metadata.gz: 49dd63da8e6ce484a620c5f71f73929bf0be858cb793e7b7ad6e596e8c102dacce8d0995e086f22e372ab6695ed79a54eedfcb45b38c9a3b604a22f452e829ab
7
+ data.tar.gz: 433e7b094f0baf03fc2a1690c6da212af9335dbcd8ccccfc31456db5b7c4c519394fe783856cf833f79722984647cd8e666949f47e1bb363e2fa3cf3f97ef001
@@ -8,7 +8,7 @@ module Stax
8
8
 
9
9
  ## make string safe to use in naming helm stuff
10
10
  def helm_safe(string)
11
- string.slice(0, 53).gsub(/[\W_]/, '-').downcase
11
+ string.slice(0, 53).gsub(/[\W_]/, '-').sub(/-+$/, '').downcase
12
12
  end
13
13
  end
14
14
 
@@ -0,0 +1,13 @@
1
+ ## tasks to get cronjob details
2
+ module Stax
3
+ module Helm
4
+ class Cmd < Base
5
+
6
+ desc 'cronjobs', 'list cronjobs'
7
+ def cronjobs
8
+ kubectl_run(:get, :cronjobs, '-l', helm_selector)
9
+ end
10
+
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ ## tasks to get job details
2
+ module Stax
3
+ module Helm
4
+ class Cmd < Base
5
+
6
+ desc 'jobs', 'list jobs'
7
+ def jobs
8
+ kubectl_run(:get, :jobs, '-l', helm_selector)
9
+ end
10
+
11
+ end
12
+ end
13
+ end
@@ -5,8 +5,8 @@ module Stax
5
5
  class Cmd
6
6
 
7
7
  no_commands do
8
- ## construct a Job template from passed container spec
9
- def helm_run_template(name, container_spec)
8
+ ## construct a Job template
9
+ def helm_run_template(name)
10
10
  {
11
11
  apiVersion: 'batch/v1',
12
12
  kind: :Job,
@@ -19,12 +19,11 @@ module Stax
19
19
  spec: {
20
20
  template: {
21
21
  spec: {
22
- restartPolicy: :Never,
23
- containers: [ container_spec ],
22
+ restartPolicy: :Never
24
23
  }
25
24
  }
26
25
  }
27
- }.to_json
26
+ }
28
27
  end
29
28
 
30
29
  ## Deployment to clone for container
@@ -55,30 +54,43 @@ module Stax
55
54
  desc 'runcmd [CMD]', 'run dedicated interactive container'
56
55
  method_option :sleep, type: :string, default: '1h', description: 'kill container after time'
57
56
  method_option :keep, type: :boolean, default: false, description: 'do not delete job'
57
+ method_option :ttl, type: :numeric, default: 30, description: 'secs to keep job after pod terminates'
58
58
  def runcmd(*cmd)
59
59
  ## use default if not set
60
60
  cmd = Array(helm_run_cmd) if cmd.empty?
61
61
 
62
- ## name of k8s Job to create
62
+ ## name of k8s Job to create, and basic template
63
63
  job = helm_run_job
64
+ template = helm_run_template(job)
64
65
 
65
66
  ## get deployment and extract container spec
66
67
  deployment = kubectl_json(:get, :deployment, helm_run_deployment)
67
- spec = deployment['spec']['template']['spec']['containers'].find do |c|
68
+ spec = deployment.dig('spec', 'template', 'spec', 'containers').find do |c|
68
69
  c['name'] == helm_run_container
69
70
  end
70
71
 
71
72
  ## cleanup the container spec so we can use it in a Job
72
73
  spec.delete('livenessProbe')
73
74
  spec.delete('readinessProbe')
75
+ spec.delete('startupProbe')
74
76
  spec.delete('volumeMounts')
75
77
  spec['name'] = 'run'
76
78
  spec['args'] = ['sleep', options[:sleep]]
77
79
 
80
+ ## add container to Job template
81
+ template[:spec][:template][:spec][:containers] = [ spec ]
82
+
83
+ ## add ttl to Job so it will be cleaned up after Pod terminates
84
+ template[:spec][:ttlSecondsAfterFinished] = options[:ttl]
85
+
86
+ ## get service account and add to template
87
+ service_account = deployment.dig('spec', 'template', 'spec', 'serviceAccountName')
88
+ template[:spec][:template][:spec][:serviceAccountName] = service_account if service_account
89
+
78
90
  ## create new unique Job based on the container spec
79
91
  debug("Creating job #{job}")
80
92
  Open3.popen2('kubectl create -f -') { |stdin, stdout, _|
81
- stdin.print(helm_run_template(job, spec))
93
+ stdin.print(template.to_json)
82
94
  stdin.close
83
95
  puts stdout.gets
84
96
  }
@@ -1,5 +1,5 @@
1
1
  module Stax
2
2
  module Helm
3
- VERSION = '0.0.8'
3
+ VERSION = '0.0.12'
4
4
  end
5
5
  end
data/lib/stax/helm.rb CHANGED
@@ -4,6 +4,8 @@ require 'stax/helm/kubectl'
4
4
  require 'stax/helm/ingress'
5
5
  require 'stax/helm/pod'
6
6
  require 'stax/helm/deployment'
7
+ require 'stax/helm/jobs'
8
+ require 'stax/helm/cronjobs'
7
9
  require 'stax/helm/stern'
8
10
  require 'stax/helm/runcmd'
9
11
  Stax.add_command(:helm, Stax::Helm::Cmd)
data/stax-helm.gemspec CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ['lib']
23
23
 
24
- spec.add_development_dependency 'bundler', '~> 1.14'
24
+ spec.add_development_dependency 'bundler', '~> 2'
25
25
  spec.add_development_dependency 'rake', '>= 12.3.3'
26
26
 
27
27
  spec.add_dependency('stax')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stax-helm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Lister
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-03 00:00:00.000000000 Z
11
+ date: 2021-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.14'
19
+ version: '2'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.14'
26
+ version: '2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -69,8 +69,10 @@ files:
69
69
  - lib/stax/helm.rb
70
70
  - lib/stax/helm/base.rb
71
71
  - lib/stax/helm/cmd.rb
72
+ - lib/stax/helm/cronjobs.rb
72
73
  - lib/stax/helm/deployment.rb
73
74
  - lib/stax/helm/ingress.rb
75
+ - lib/stax/helm/jobs.rb
74
76
  - lib/stax/helm/kubectl.rb
75
77
  - lib/stax/helm/pod.rb
76
78
  - lib/stax/helm/runcmd.rb
@@ -96,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
98
  - !ruby/object:Gem::Version
97
99
  version: '0'
98
100
  requirements: []
99
- rubygems_version: 3.0.3
101
+ rubygems_version: 3.1.4
100
102
  signing_key:
101
103
  specification_version: 4
102
104
  summary: Control helm charts with stax.