kube_deploy_tools 3.0.5 → 3.0.9
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/README.md +12 -14
- data/lib/kube_deploy_tools/artifact_registry/driver_gcs.rb +22 -1
- data/lib/kube_deploy_tools/deploy/options.rb +17 -3
- data/lib/kube_deploy_tools/deploy.rb +3 -4
- data/lib/kube_deploy_tools/deploy_config_file/util.rb +1 -0
- data/lib/kube_deploy_tools/deploy_config_file.rb +4 -0
- data/lib/kube_deploy_tools/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 647bca1b43df72e42a02b1177678afd9f05c1c14f923a924ae62a573080928fa
|
4
|
+
data.tar.gz: 98d5c912c3890ad176b2b57035ff63b677cf44728bce05b34b7e9853ba8a21fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d5d4d909e52925fcda3b36878f8ab9540efe2675814214e5ec8e5b5c0536fc2be629122b704c3a9bd009d8d612853f3ee22c9f37e91c51cdd77d713da8341dcb
|
7
|
+
data.tar.gz: a63cda5c818c5e0930745adcd67747c8d46ab4635ebd9adbbb1b84306fb24067bdc4a5633c34f06b3f91099008593c46fb4c709fac7ed6901e6d50875d603650
|
data/README.md
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
[](https://badge.fury.io/rb/kube_deploy_tools)
|
2
|
+
|
1
3
|
# kube_deploy_tools (kdt)
|
2
4
|
|
3
5
|
`kube_deploy_tools` (kdt) is a tool to simplify kubernetes manifest generation
|
@@ -28,6 +30,7 @@ a complete production lifecycle, they are also designed to be used
|
|
28
30
|
individually.
|
29
31
|
|
30
32
|
[Helm]: https://helm.sh
|
33
|
+
[ERB]: https://ruby-doc.org/stdlib-2.7.1/libdoc/erb/rdoc/ERB.html
|
31
34
|
|
32
35
|
# Getting Started
|
33
36
|
|
@@ -103,7 +106,7 @@ To explore further,
|
|
103
106
|
* Run `kdt deploy -f build/kubernetes/prod_default --context my-kube-context` to send your generated
|
104
107
|
manifests to a Kubernetes API server.
|
105
108
|
|
106
|
-
[complete description]:
|
109
|
+
[complete description]: schemas/v2.schema.json
|
107
110
|
|
108
111
|
# FAQ
|
109
112
|
|
@@ -118,19 +121,6 @@ For breaking changes, new features, and new fixes, see
|
|
118
121
|
|
119
122
|
# Contribute
|
120
123
|
|
121
|
-
```bash
|
122
|
-
# Install ruby w/ Homebrew
|
123
|
-
brew install ruby
|
124
|
-
|
125
|
-
# Or install ruby w/ rbenv
|
126
|
-
brew install rbenv ruby-build
|
127
|
-
rbenv install 2.3.0
|
128
|
-
rbenv global 2.3.0
|
129
|
-
|
130
|
-
# Install gem
|
131
|
-
gem install bundler
|
132
|
-
```
|
133
|
-
|
134
124
|
```bash
|
135
125
|
bundle install --with development
|
136
126
|
|
@@ -140,3 +130,11 @@ bundle exec rake test
|
|
140
130
|
# Exec a binary in bin/
|
141
131
|
bundle exec kdt generate
|
142
132
|
```
|
133
|
+
|
134
|
+
We accept [pull requests]. They will be reviewed by a member of the LiveRamp development team as soon as possible.
|
135
|
+
Once the PR is merged, GitHub will auto-draft the release. Be sure to
|
136
|
+
add the same version as a tag (vX.Y.Z) and then publish it.
|
137
|
+
[GitHub Workflow] will then publish the gems.
|
138
|
+
|
139
|
+
[GitHub Workflow]: https://github.com/LiveRamp/kube_deploy_tools/blob/master/.github/workflows/release.yml
|
140
|
+
[pull requests]: https://github.com/LiveRamp/kube_deploy_tools/pulls
|
@@ -29,12 +29,21 @@ module KubeDeployTools
|
|
29
29
|
local_artifact_path
|
30
30
|
end
|
31
31
|
|
32
|
+
def get_registry_build_path(project:)
|
33
|
+
# NOTE: If the naming format changes, it represents a breaking change
|
34
|
+
# where all past clients will not be able to list/download new builds
|
35
|
+
# and new clients will not be able to list/download old builds. Change
|
36
|
+
# with caution.
|
37
|
+
#
|
38
|
+
"#{@bucket}/project/#{project}/build"
|
39
|
+
end
|
40
|
+
|
32
41
|
def get_registry_artifact_path(name:, flavor:, project:, build_number:)
|
33
42
|
# NOTE(joshk): If the naming format changes, it represents a breaking
|
34
43
|
# change where all past clients will not be able to download new builds and
|
35
44
|
# new clients will not be able to download old builds. Change with caution.
|
36
45
|
#
|
37
|
-
"#{
|
46
|
+
"#{get_registry_build_path(project: project)}/#{build_number}/artifact/#{get_artifact_name(name: name, flavor: flavor)}"
|
38
47
|
end
|
39
48
|
|
40
49
|
def get_artifact_name(name:, flavor:)
|
@@ -84,6 +93,18 @@ module KubeDeployTools
|
|
84
93
|
output_path
|
85
94
|
end
|
86
95
|
|
96
|
+
def get_latest_build_number(project)
|
97
|
+
out = Shellrunner.check_call('gsutil', 'ls', get_registry_build_path(project: project))
|
98
|
+
|
99
|
+
# pick out the build numbers from the list
|
100
|
+
build_regex = /([0-9]+)\/$/
|
101
|
+
build_entries = out.scan(build_regex)
|
102
|
+
|
103
|
+
build_entries.
|
104
|
+
map { |x| x[0].to_s.to_i }.
|
105
|
+
max.to_s
|
106
|
+
end
|
107
|
+
|
87
108
|
def upload(local_dir:, name:, flavor:, project:, build_number:)
|
88
109
|
# Pack up contents of each flavor_dir to a correctly named artifact.
|
89
110
|
flavor_dir = File.join(local_dir, "#{name}_#{flavor}")
|
@@ -2,6 +2,9 @@ require 'optparse'
|
|
2
2
|
|
3
3
|
require 'kube_deploy_tools/object'
|
4
4
|
|
5
|
+
# As of kubernetes 1.23 valid dry-run options are: none, client, server.
|
6
|
+
VALID_DRY_RUN_VALUES = %w[none client server].freeze
|
7
|
+
|
5
8
|
module KubeDeployTools
|
6
9
|
class Deploy::Optparser
|
7
10
|
class Options
|
@@ -21,7 +24,7 @@ module KubeDeployTools
|
|
21
24
|
def initialize
|
22
25
|
self.project = File.basename(`git config remote.origin.url`.chomp, '.git')
|
23
26
|
self.flavor = 'default'
|
24
|
-
self.dry_run =
|
27
|
+
self.dry_run = 'client'
|
25
28
|
self.glob_files = []
|
26
29
|
end
|
27
30
|
|
@@ -54,8 +57,19 @@ module KubeDeployTools
|
|
54
57
|
self.build_number = p
|
55
58
|
end
|
56
59
|
|
57
|
-
|
58
|
-
|
60
|
+
# As of kubernetes 1.23 valid dry-run options are: none, client, server.
|
61
|
+
# Legacy values map accordingly: true => client, false => none
|
62
|
+
parser.on('--dry-run DRY_RUN', "Will only dry-run apply Kubernetes manifests without sending them to the apiserver. Default is dry-run mode: #{dry_run}. Must be '#{VALID_DRY_RUN_VALUES}'") do |p|
|
63
|
+
legacy_mapping = { 'true' => 'client', 'false' => 'none' }
|
64
|
+
|
65
|
+
if legacy_mapping.include?(p) then
|
66
|
+
self.dry_run = legacy_mapping[p]
|
67
|
+
Logger.warn("#{p} is no longer a supported dry-run value. Setting to value '#{self.dry_run}'.")
|
68
|
+
elsif VALID_DRY_RUN_VALUES.include?(p)
|
69
|
+
self.dry_run = p
|
70
|
+
else
|
71
|
+
raise ArgumentError, "#{p} is not a valid dry-run value. Expect one of '#{VALID_DRY_RUN_VALUES.join(', ')}'"
|
72
|
+
end
|
59
73
|
end
|
60
74
|
|
61
75
|
parser.on('--include INCLUDE', "Include glob pattern. Example: --include=**/* will include every file. Default is ''.") do |p|
|
@@ -64,10 +64,9 @@ module KubeDeployTools
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def do_deploy(dry_run)
|
67
|
-
success = false
|
68
67
|
Logger.reset
|
69
68
|
Logger.phase_heading('Initializing deploy')
|
70
|
-
Logger.warn('Running in dry-run mode') if dry_run
|
69
|
+
Logger.warn('Running in dry-run mode') if dry_run != 'none'
|
71
70
|
|
72
71
|
if !@namespace.nil? && @namespace != 'default'
|
73
72
|
Logger.warn("Deploying to non-default Namespace: #{@namespace}")
|
@@ -98,7 +97,7 @@ module KubeDeployTools
|
|
98
97
|
success
|
99
98
|
end
|
100
99
|
|
101
|
-
def run(dry_run:
|
100
|
+
def run(dry_run: 'client')
|
102
101
|
do_deploy(dry_run)
|
103
102
|
end
|
104
103
|
|
@@ -161,7 +160,7 @@ module KubeDeployTools
|
|
161
160
|
raise FatalDeploymentError, "Template '#{filepath}' cannot be parsed"
|
162
161
|
end
|
163
162
|
|
164
|
-
def kubectl_apply(resources, dry_run:
|
163
|
+
def kubectl_apply(resources, dry_run: 'client')
|
165
164
|
resources.each do |resource|
|
166
165
|
@max_retries.times do |try|
|
167
166
|
args = ['apply', '-f', resource.filepath, "--dry-run=#{dry_run}"]
|
@@ -248,6 +248,10 @@ module KubeDeployTools
|
|
248
248
|
# the 'other' hash wins.
|
249
249
|
@image_registries = other.image_registries.merge(@image_registries)
|
250
250
|
|
251
|
+
@artifact_registries = other.artifact_registries.merge(@artifact_registries)
|
252
|
+
|
253
|
+
@artifact_registry = other.artifact_registry if @artifact_registry.empty?
|
254
|
+
|
251
255
|
# Same behavior as above for #default_flags.
|
252
256
|
@default_flags = other.default_flags.merge(@default_flags)
|
253
257
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kube_deploy_tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fabien Goncalves
|
@@ -16,7 +16,7 @@ authors:
|
|
16
16
|
autorequire:
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
|
-
date:
|
19
|
+
date: 2022-01-07 00:00:00.000000000 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: colorize
|
@@ -184,7 +184,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
184
184
|
- !ruby/object:Gem::Version
|
185
185
|
version: '0'
|
186
186
|
requirements: []
|
187
|
-
rubygems_version: 3.0.3
|
187
|
+
rubygems_version: 3.0.3.1
|
188
188
|
signing_key:
|
189
189
|
specification_version: 4
|
190
190
|
summary: Kubernetes Deploy Tools
|