kubes 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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