kubes 0.3.1 → 0.4.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/CHANGELOG.md +27 -0
- data/README.md +6 -5
- data/docs/_config.yml +1 -1
- data/docs/_docs/ci/cloudbuild.md +2 -0
- data/docs/_docs/config/args.md +10 -0
- data/docs/_docs/config/args/docker.md +19 -0
- data/docs/_docs/config/args/kubectl.md +19 -0
- data/docs/_docs/config/docker.md +4 -40
- data/docs/_docs/config/env.md +1 -1
- data/docs/_docs/config/hooks.md +10 -0
- data/docs/_docs/config/hooks/docker.md +70 -0
- data/docs/_docs/config/hooks/kubectl.md +83 -0
- data/docs/_docs/config/hooks/kubes.md +67 -0
- data/docs/_docs/config/hooks/ruby.md +74 -0
- data/docs/_docs/config/kubectl.md +3 -54
- data/docs/_docs/config/reference.md +20 -0
- data/docs/_docs/config/skip.md +58 -0
- data/docs/_docs/dsl/resources.md +1 -1
- data/docs/_docs/dsl/resources/backend_config.md +1 -1
- data/docs/_docs/intro.md +6 -3
- data/docs/_docs/learn/yaml/new-project.md +0 -1
- data/docs/_docs/{auto-context.md → misc/auto-context.md} +0 -0
- data/docs/_docs/{kustomize.md → misc/kustomize.md} +0 -0
- data/docs/_docs/misc/separate-steps.md +21 -0
- data/docs/_docs/patterns/migrations.md +121 -0
- data/docs/_includes/commands.html +2 -0
- data/docs/_includes/config/hooks/options.md +20 -0
- data/docs/_includes/sidebar.html +32 -10
- data/docs/_reference/kubes-exec.md +14 -6
- data/docs/_reference/kubes-init.md +1 -0
- data/docs/_reference/kubes-logs.md +1 -0
- data/docs/_sass/theme.scss +27 -2
- data/docs/img/logos/kubes-white.png +0 -0
- data/docs/index.html +2 -2
- data/lib/kubes/cli.rb +25 -6
- data/lib/kubes/cli/apply.rb +2 -1
- data/lib/kubes/cli/base.rb +11 -0
- data/lib/kubes/cli/delete.rb +1 -1
- data/lib/kubes/cli/exec.rb +37 -6
- data/lib/kubes/cli/get.rb +3 -2
- data/lib/kubes/cli/init.rb +34 -2
- data/lib/kubes/cli/logs.rb +52 -3
- data/lib/kubes/cli/prune.rb +95 -0
- data/lib/kubes/compiler.rb +18 -7
- data/lib/kubes/compiler/decorator/base.rb +7 -1
- data/lib/kubes/compiler/decorator/{resources/secret.rb → hashable.rb} +5 -4
- data/lib/kubes/compiler/decorator/hashable/field.rb +53 -0
- data/lib/kubes/compiler/decorator/hashable/storage.rb +19 -0
- data/lib/kubes/compiler/decorator/post.rb +77 -0
- data/lib/kubes/compiler/decorator/pre.rb +12 -0
- data/lib/kubes/compiler/strategy.rb +2 -2
- data/lib/kubes/compiler/strategy/base.rb +1 -1
- data/lib/kubes/compiler/strategy/result.rb +4 -6
- data/lib/kubes/config.rb +16 -11
- data/lib/kubes/docker/strategy/build/docker.rb +1 -1
- data/lib/kubes/docker/strategy/build/gcloud.rb +1 -1
- data/lib/kubes/docker/strategy/image_name.rb +1 -1
- data/lib/kubes/docker/strategy/push/docker.rb +1 -1
- data/lib/kubes/docker/strategy/push/gcloud.rb +1 -1
- data/lib/kubes/docker/strategy/utils.rb +1 -1
- data/lib/kubes/hooks/builder.rb +29 -15
- data/lib/kubes/hooks/concern.rb +10 -0
- data/lib/kubes/hooks/dsl.rb +2 -1
- data/lib/kubes/hooks/runner.rb +22 -0
- data/lib/kubes/kubectl.rb +21 -18
- data/lib/kubes/kubectl/batch.rb +8 -5
- data/lib/kubes/kubectl/{decider.rb → dispatcher.rb} +1 -1
- data/lib/kubes/kubectl/fetch/base.rb +13 -10
- data/lib/kubes/kubectl/fetch/deployment.rb +21 -11
- data/lib/kubes/kubectl/fetch/pods.rb +4 -15
- data/lib/kubes/kubectl/kustomize.rb +1 -1
- data/lib/kubes/kubectl/ordering.rb +12 -0
- data/lib/kubes/util/consider.rb +2 -1
- data/lib/kubes/util/sh.rb +1 -1
- data/lib/kubes/version.rb +1 -1
- data/lib/templates/dsl/.kubes/resources/base/all.rb.tt +6 -1
- data/lib/templates/dsl/.kubes/resources/shared/namespace.rb.tt +1 -1
- data/lib/templates/dsl/.kubes/resources/web/deployment.rb +1 -1
- data/lib/templates/yaml/.kubes/resources/base/all.yaml.tt +1 -1
- data/lib/templates/yaml/.kubes/resources/shared/namespace.yaml.tt +1 -1
- data/lib/templates/yaml/.kubes/resources/web/deployment.yaml.tt +1 -1
- data/spec/fixtures/decorators/deployment/both/envFrom.yaml +31 -0
- data/spec/fixtures/prune/capture.yaml +57 -0
- data/spec/fixtures/prune/fetch_items.yaml +268 -0
- data/spec/kubes/cli/prune_spec.rb +38 -0
- data/spec/kubes/compiler/decorator/{resources → post}/deployment_spec.rb +25 -6
- data/spec/kubes/compiler/decorator/{resources → post}/pod_spec.rb +2 -11
- metadata +39 -19
- data/lib/kubes/compiler/decorator.rb +0 -17
- data/lib/kubes/compiler/decorator/compile.rb +0 -12
- data/lib/kubes/compiler/decorator/resources/base.rb +0 -13
- data/lib/kubes/compiler/decorator/resources/container.rb +0 -76
- data/lib/kubes/compiler/decorator/resources/container/mapping.rb +0 -28
- data/lib/kubes/compiler/decorator/resources/deployment.rb +0 -10
- data/lib/kubes/compiler/decorator/resources/pod.rb +0 -10
- data/lib/kubes/compiler/decorator/write.rb +0 -14
- data/lib/kubes/docker/strategy/hooks.rb +0 -9
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
module Kubes::Compiler::Decorator::Resources
|
|
2
|
-
class Container
|
|
3
|
-
include Mapping
|
|
4
|
-
|
|
5
|
-
def initialize(data, kind:, fields_for:)
|
|
6
|
-
@data = data
|
|
7
|
-
# These methods are defined in Mapping
|
|
8
|
-
kind == "Deployment" ? deployment_keys : pod_keys
|
|
9
|
-
fields_for == "Secret" ? secrets_fields : configMaps_fields
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def run
|
|
13
|
-
envFrom!
|
|
14
|
-
valueFrom!
|
|
15
|
-
volumes!
|
|
16
|
-
@data
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
# spec.envFrom.configMapRef
|
|
20
|
-
# spec.envFrom.secretRef
|
|
21
|
-
def envFrom!
|
|
22
|
-
return @data unless containers
|
|
23
|
-
|
|
24
|
-
containers.each do |container|
|
|
25
|
-
next unless envFrom_list = container.dig('envFrom') # intentional assignment
|
|
26
|
-
|
|
27
|
-
envFrom_list.each do |envFrom|
|
|
28
|
-
next unless name = envFrom.dig(@envFrom_field, 'name') # intentional assignment
|
|
29
|
-
|
|
30
|
-
md5 = Kubes::Compiler::Decorator.fetch(name)
|
|
31
|
-
envFrom[@envFrom_field]['name'] = [name, md5].compact.join('-')
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
# spec.valueFrom.configMapKeyRef
|
|
37
|
-
# spec.valueFrom.secretKeyRef
|
|
38
|
-
def valueFrom!
|
|
39
|
-
return @data unless containers
|
|
40
|
-
|
|
41
|
-
containers.each do |container|
|
|
42
|
-
next unless env_list = container.dig('env') # intentional assignment
|
|
43
|
-
|
|
44
|
-
env_list.each do |env|
|
|
45
|
-
next unless name = env.dig('valueFrom',@valueFrom_field,'name') # intentional assignment
|
|
46
|
-
|
|
47
|
-
md5 = Kubes::Compiler::Decorator.fetch(name)
|
|
48
|
-
env['valueFrom'][@valueFrom_field]['name'] = [name, md5].compact.join('-')
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
# spec.volumes.configMap.name
|
|
54
|
-
# spec.volumes.secret.secretName
|
|
55
|
-
def volumes!
|
|
56
|
-
volumes = @data.dig(*@volumes_key.split('.'))
|
|
57
|
-
return @data unless volumes
|
|
58
|
-
|
|
59
|
-
volumes.each do |volume|
|
|
60
|
-
# Example:
|
|
61
|
-
# next unless field = volume.dig('secret') # intentional assignment
|
|
62
|
-
# next unless name = field['secretName'] # intentional assignment
|
|
63
|
-
next unless field = volume.dig(@volume_field) # intentional assignment
|
|
64
|
-
next unless name = field[@volume_field_name] # intentional assignment
|
|
65
|
-
|
|
66
|
-
md5 = Kubes::Compiler::Decorator.fetch(name)
|
|
67
|
-
field[@volume_field_name] = [name, md5].compact.join('-')
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
private
|
|
72
|
-
def containers
|
|
73
|
-
@data.dig(*@containers_key.split('.'))
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
class Kubes::Compiler::Decorator::Resources::Container
|
|
2
|
-
# Nice to group the mapping logic in ones spot, making a pattern of this is not worth it.
|
|
3
|
-
module Mapping
|
|
4
|
-
def deployment_keys
|
|
5
|
-
@containers_key = 'spec.template.spec.containers'
|
|
6
|
-
@volumes_key = 'spec.template.spec.volumes'
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def pod_keys
|
|
10
|
-
@containers_key = 'spec.containers'
|
|
11
|
-
@volumes_key = 'spec.volumes'
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def configMaps_fields
|
|
15
|
-
@envFrom_field = 'configMapRef'
|
|
16
|
-
@valueFrom_field = 'configMapKeyRef'
|
|
17
|
-
@volume_field = 'configMap'
|
|
18
|
-
@volume_field_name = 'name'
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def secrets_fields
|
|
22
|
-
@envFrom_field = 'secretRef'
|
|
23
|
-
@valueFrom_field = 'secretKeyRef'
|
|
24
|
-
@volume_field = 'secret'
|
|
25
|
-
@volume_field_name = 'secretName'
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
module Kubes::Compiler::Decorator::Resources
|
|
2
|
-
class Deployment < Base
|
|
3
|
-
def perform
|
|
4
|
-
container = Container.new(@data, kind: "Deployment", fields_for: "Secret")
|
|
5
|
-
@data = container.run
|
|
6
|
-
container = Container.new(@data, kind: "Deployment", fields_for: "ConfigMap")
|
|
7
|
-
@data = container.run
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
module Kubes::Compiler::Decorator::Resources
|
|
2
|
-
class Pod < Base
|
|
3
|
-
def perform
|
|
4
|
-
container = Container.new(@data, kind: "Pod", fields_for: "Secret")
|
|
5
|
-
@data = container.run
|
|
6
|
-
container = Container.new(@data, kind: "Pod", fields_for: "ConfigMap")
|
|
7
|
-
@data = container.run
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
end
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
module Kubes::Compiler::Decorator
|
|
2
|
-
class Write < Base
|
|
3
|
-
def process(item)
|
|
4
|
-
case item['kind']
|
|
5
|
-
when "Deployment"
|
|
6
|
-
Resources::Deployment.new(item).run
|
|
7
|
-
when "Pod"
|
|
8
|
-
Resources::Pod.new(item).run
|
|
9
|
-
else
|
|
10
|
-
item # pass through
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|