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.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +27 -0
  3. data/README.md +6 -5
  4. data/docs/_config.yml +1 -1
  5. data/docs/_docs/ci/cloudbuild.md +2 -0
  6. data/docs/_docs/config/args.md +10 -0
  7. data/docs/_docs/config/args/docker.md +19 -0
  8. data/docs/_docs/config/args/kubectl.md +19 -0
  9. data/docs/_docs/config/docker.md +4 -40
  10. data/docs/_docs/config/env.md +1 -1
  11. data/docs/_docs/config/hooks.md +10 -0
  12. data/docs/_docs/config/hooks/docker.md +70 -0
  13. data/docs/_docs/config/hooks/kubectl.md +83 -0
  14. data/docs/_docs/config/hooks/kubes.md +67 -0
  15. data/docs/_docs/config/hooks/ruby.md +74 -0
  16. data/docs/_docs/config/kubectl.md +3 -54
  17. data/docs/_docs/config/reference.md +20 -0
  18. data/docs/_docs/config/skip.md +58 -0
  19. data/docs/_docs/dsl/resources.md +1 -1
  20. data/docs/_docs/dsl/resources/backend_config.md +1 -1
  21. data/docs/_docs/intro.md +6 -3
  22. data/docs/_docs/learn/yaml/new-project.md +0 -1
  23. data/docs/_docs/{auto-context.md → misc/auto-context.md} +0 -0
  24. data/docs/_docs/{kustomize.md → misc/kustomize.md} +0 -0
  25. data/docs/_docs/misc/separate-steps.md +21 -0
  26. data/docs/_docs/patterns/migrations.md +121 -0
  27. data/docs/_includes/commands.html +2 -0
  28. data/docs/_includes/config/hooks/options.md +20 -0
  29. data/docs/_includes/sidebar.html +32 -10
  30. data/docs/_reference/kubes-exec.md +14 -6
  31. data/docs/_reference/kubes-init.md +1 -0
  32. data/docs/_reference/kubes-logs.md +1 -0
  33. data/docs/_sass/theme.scss +27 -2
  34. data/docs/img/logos/kubes-white.png +0 -0
  35. data/docs/index.html +2 -2
  36. data/lib/kubes/cli.rb +25 -6
  37. data/lib/kubes/cli/apply.rb +2 -1
  38. data/lib/kubes/cli/base.rb +11 -0
  39. data/lib/kubes/cli/delete.rb +1 -1
  40. data/lib/kubes/cli/exec.rb +37 -6
  41. data/lib/kubes/cli/get.rb +3 -2
  42. data/lib/kubes/cli/init.rb +34 -2
  43. data/lib/kubes/cli/logs.rb +52 -3
  44. data/lib/kubes/cli/prune.rb +95 -0
  45. data/lib/kubes/compiler.rb +18 -7
  46. data/lib/kubes/compiler/decorator/base.rb +7 -1
  47. data/lib/kubes/compiler/decorator/{resources/secret.rb → hashable.rb} +5 -4
  48. data/lib/kubes/compiler/decorator/hashable/field.rb +53 -0
  49. data/lib/kubes/compiler/decorator/hashable/storage.rb +19 -0
  50. data/lib/kubes/compiler/decorator/post.rb +77 -0
  51. data/lib/kubes/compiler/decorator/pre.rb +12 -0
  52. data/lib/kubes/compiler/strategy.rb +2 -2
  53. data/lib/kubes/compiler/strategy/base.rb +1 -1
  54. data/lib/kubes/compiler/strategy/result.rb +4 -6
  55. data/lib/kubes/config.rb +16 -11
  56. data/lib/kubes/docker/strategy/build/docker.rb +1 -1
  57. data/lib/kubes/docker/strategy/build/gcloud.rb +1 -1
  58. data/lib/kubes/docker/strategy/image_name.rb +1 -1
  59. data/lib/kubes/docker/strategy/push/docker.rb +1 -1
  60. data/lib/kubes/docker/strategy/push/gcloud.rb +1 -1
  61. data/lib/kubes/docker/strategy/utils.rb +1 -1
  62. data/lib/kubes/hooks/builder.rb +29 -15
  63. data/lib/kubes/hooks/concern.rb +10 -0
  64. data/lib/kubes/hooks/dsl.rb +2 -1
  65. data/lib/kubes/hooks/runner.rb +22 -0
  66. data/lib/kubes/kubectl.rb +21 -18
  67. data/lib/kubes/kubectl/batch.rb +8 -5
  68. data/lib/kubes/kubectl/{decider.rb → dispatcher.rb} +1 -1
  69. data/lib/kubes/kubectl/fetch/base.rb +13 -10
  70. data/lib/kubes/kubectl/fetch/deployment.rb +21 -11
  71. data/lib/kubes/kubectl/fetch/pods.rb +4 -15
  72. data/lib/kubes/kubectl/kustomize.rb +1 -1
  73. data/lib/kubes/kubectl/ordering.rb +12 -0
  74. data/lib/kubes/util/consider.rb +2 -1
  75. data/lib/kubes/util/sh.rb +1 -1
  76. data/lib/kubes/version.rb +1 -1
  77. data/lib/templates/dsl/.kubes/resources/base/all.rb.tt +6 -1
  78. data/lib/templates/dsl/.kubes/resources/shared/namespace.rb.tt +1 -1
  79. data/lib/templates/dsl/.kubes/resources/web/deployment.rb +1 -1
  80. data/lib/templates/yaml/.kubes/resources/base/all.yaml.tt +1 -1
  81. data/lib/templates/yaml/.kubes/resources/shared/namespace.yaml.tt +1 -1
  82. data/lib/templates/yaml/.kubes/resources/web/deployment.yaml.tt +1 -1
  83. data/spec/fixtures/decorators/deployment/both/envFrom.yaml +31 -0
  84. data/spec/fixtures/prune/capture.yaml +57 -0
  85. data/spec/fixtures/prune/fetch_items.yaml +268 -0
  86. data/spec/kubes/cli/prune_spec.rb +38 -0
  87. data/spec/kubes/compiler/decorator/{resources → post}/deployment_spec.rb +25 -6
  88. data/spec/kubes/compiler/decorator/{resources → post}/pod_spec.rb +2 -11
  89. metadata +39 -19
  90. data/lib/kubes/compiler/decorator.rb +0 -17
  91. data/lib/kubes/compiler/decorator/compile.rb +0 -12
  92. data/lib/kubes/compiler/decorator/resources/base.rb +0 -13
  93. data/lib/kubes/compiler/decorator/resources/container.rb +0 -76
  94. data/lib/kubes/compiler/decorator/resources/container/mapping.rb +0 -28
  95. data/lib/kubes/compiler/decorator/resources/deployment.rb +0 -10
  96. data/lib/kubes/compiler/decorator/resources/pod.rb +0 -10
  97. data/lib/kubes/compiler/decorator/write.rb +0 -14
  98. data/lib/kubes/docker/strategy/hooks.rb +0 -9
@@ -1,17 +0,0 @@
1
- class Kubes::Compiler
2
- module Decorator
3
- @@md5s = {}
4
- def store(name, md5)
5
- @@md5s[name] = md5
6
- end
7
-
8
- def fetch(name)
9
- @@md5s[name]
10
- end
11
-
12
- def md5s
13
- @@md5s
14
- end
15
- extend self
16
- end
17
- end
@@ -1,12 +0,0 @@
1
- module Kubes::Compiler::Decorator
2
- class Compile < Base
3
- def process(item)
4
- case item['kind']
5
- when "ConfigMap", "Secret"
6
- Resources::Secret.new(item).run
7
- else
8
- item # pass through
9
- end
10
- end
11
- end
12
- end
@@ -1,13 +0,0 @@
1
- module Kubes::Compiler::Decorator::Resources
2
- class Base
3
- attr_reader :data
4
- def initialize(data)
5
- @data = data
6
- end
7
-
8
- def run
9
- return @data unless Kubes.config.suffix_hash
10
- perform
11
- end
12
- end
13
- end
@@ -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
@@ -1,9 +0,0 @@
1
- module Kubes::Docker::Strategy
2
- module Hooks
3
- def run_hooks(name, &block)
4
- hooks = Kubes::Hooks::Builder.new(name, "#{Kubes.root}/.kubes/config/docker/hooks.rb")
5
- hooks.build # build hooks
6
- hooks.run_hooks(&block)
7
- end
8
- end
9
- end