kubes 0.7.6 → 0.7.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/docs/_docs/config/reference.md +1 -0
- data/docs/_docs/dsl.md +1 -1
- data/docs/_docs/intro/structure.md +2 -2
- data/docs/_docs/layering/{merge.md → merge-dsl.md} +0 -0
- data/docs/_docs/layering/merge-options.md +76 -0
- data/docs/_docs/layering.md +1 -1
- data/docs/_includes/layering/layers.md +12 -10
- data/docs/_includes/sidebar.html +2 -1
- data/lib/kubes/compiler/decorator/hashable/field.rb +1 -0
- data/lib/kubes/compiler/layering.rb +17 -15
- data/lib/kubes/config.rb +3 -0
- data/lib/kubes/core.rb +1 -1
- data/lib/kubes/util/consider.rb +2 -2
- data/lib/kubes/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f8112935cf2c796869c81fb0ede6a5b6b9589ba5daf981aab7ca2a806217e4c
|
4
|
+
data.tar.gz: d84869a02096b266edc9e0c51ea2ec344f97f96afb0ce1dcc74d80ef71cb7567
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 11e5302088c91d06c41c3f1b3c6774b2361d7a1537d9e9c609152b2de215b35d0dd1f792d54788a557a6d39dcc3816aa7caaa1191c888aed135b2290d72d6355
|
7
|
+
data.tar.gz: 0a47dee57d4ccb4ccd1e9877830328d60ba1a0a49b2d3592a7994f63cbe01cb84ee29ca646d057662a1dba0fafb94bc61c0a4ee84547ed951942d9c35cecf2ed
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,11 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/), even before v1.0.
|
5
5
|
|
6
|
+
## [0.7.7] - 2021-10-21
|
7
|
+
- [#51](https://github.com/boltops-tools/kubes/pull/51) add hash checksum for tls secretName
|
8
|
+
- [#52](https://github.com/boltops-tools/kubes/pull/52) add role all layer to pre_layers
|
9
|
+
- [#53](https://github.com/boltops-tools/kubes/pull/53) Merger options
|
10
|
+
|
6
11
|
## [0.7.6] - 2021-10-12
|
7
12
|
- remove init yaml templates, removed duplication
|
8
13
|
- write full.yaml to .kubes/tmp instead
|
@@ -20,3 +20,4 @@ repo_auto_auth | Whether or not to try to auth authorize docker repo registry if
|
|
20
20
|
skip | List of resources to skip. Can also be set with the `KUBES_SKIP` env var. `KUBES_SKIP` should be a list of strings separated by spaces. It adds onto the `config.skip` option. | []
|
21
21
|
state.path | Where to store the state file with the last build Docker image. | .kubes/state/KUBES_ENV/data.json
|
22
22
|
suffix_hash | Whether or not to append suffix hash to ConfigMap and Secret | true
|
23
|
+
merger.options | Merger options that control how Hashes are merged. More info: [Merger Options]({% link _docs/layering/merge-options.md %}) | `{overwrite_arrays: true}`
|
data/docs/_docs/dsl.md
CHANGED
@@ -63,4 +63,4 @@ In general:
|
|
63
63
|
|
64
64
|
## Merge Behavior
|
65
65
|
|
66
|
-
Generally, the merge should behave as expected. For example, map or Hash fields are merged together from multiple layers. Strings are simply replaced. See more details at [Layering Merge Behavior]({% link _docs/layering/merge.md %})
|
66
|
+
Generally, the merge should behave as expected. For example, map or Hash fields are merged together from multiple layers. Strings are simply replaced. See more details at [Layering Merge Behavior]({% link _docs/layering/merge-dsl.md %})
|
@@ -34,10 +34,10 @@ Here's what a .kubes folder structure can look like this:
|
|
34
34
|
|
35
35
|
Name | Description
|
36
36
|
--- | ---
|
37
|
-
base | The base folder is processed first and can be used to define common fields and resources. Learn more on the [Layering Docs]({% link _docs/layering.md %}).
|
38
37
|
config | The config folder can be used to configure behavior of Kubes. The [docker]({% link _docs/config/docker.md %}) config is used to customize the docker command. The [env]({% link _docs/config/env.md %}) config is used to override `config.rb` settings on a `KUBES_ENV` basis. The [kubectl]({% link _docs/config/kubectl.md %}) config is used to customize the kubectl command.
|
39
38
|
config.rb | The main thing to configure here is the repo to push the docker image to.
|
40
39
|
output | Where kubes builds and writes the Kubernetes YAML to.
|
41
40
|
resources | Where you define your Kubernetes resources.
|
42
|
-
|
41
|
+
resources/base | The base folder is processed first and can be used to define common fields and resources. Learn more on the [Layering Docs]({% link _docs/layering.md %}).
|
42
|
+
resources/shared | The shared folder is where you can put shared resources. This folder gets applied first. More info: [Ordering]({% link _docs/intro/ordering.md %}).
|
43
43
|
state | Temporary state info that stores the built Docker image name.
|
File without changes
|
@@ -0,0 +1,76 @@
|
|
1
|
+
---
|
2
|
+
title: Merge Options
|
3
|
+
---
|
4
|
+
|
5
|
+
Underneath the hood, Kubes uses the [danielsdeleo/deep_merge](https://github.com/danielsdeleo/deep_merge) library to merge layers together. You can control the merge behavior options with [config.merger.options]({% link _docs/config/reference.md %}).
|
6
|
+
|
7
|
+
The default merge options is:
|
8
|
+
|
9
|
+
{overwrite_arrays: true}
|
10
|
+
|
11
|
+
You can control the merge behavior by setting:
|
12
|
+
|
13
|
+
.kubes/config.rb
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
Kubes.configure do |config|
|
17
|
+
# ...
|
18
|
+
config.merger.options = {overwrite_arrays: false}
|
19
|
+
end
|
20
|
+
```
|
21
|
+
|
22
|
+
See the [danielsdeleo/deep_merge](https://github.com/danielsdeleo/deep_merge) docs for the different options.
|
23
|
+
|
24
|
+
## Example of overwrite_arrays false
|
25
|
+
|
26
|
+
An example of where you might want to use `{overwrite_arrays: false}` is if you are using YAML and want a base sidecar container in all of your deployments.
|
27
|
+
|
28
|
+
.kubes/resources/base/deployment.yaml
|
29
|
+
|
30
|
+
```yaml
|
31
|
+
spec:
|
32
|
+
template:
|
33
|
+
spec:
|
34
|
+
containers:
|
35
|
+
- name: sidecar
|
36
|
+
image: sidecar-image
|
37
|
+
```
|
38
|
+
|
39
|
+
.kubes/resources/web/deployment.yaml
|
40
|
+
|
41
|
+
```yaml
|
42
|
+
spec:
|
43
|
+
template:
|
44
|
+
metadata:
|
45
|
+
labels:
|
46
|
+
role: web
|
47
|
+
spec:
|
48
|
+
containers:
|
49
|
+
- name: web
|
50
|
+
image: <%= docker_image %>
|
51
|
+
```
|
52
|
+
|
53
|
+
Produces:
|
54
|
+
|
55
|
+
```yaml
|
56
|
+
# ...
|
57
|
+
spec:
|
58
|
+
template:
|
59
|
+
metadata:
|
60
|
+
labels:
|
61
|
+
role: web
|
62
|
+
spec:
|
63
|
+
containers:
|
64
|
+
- name: sidecar
|
65
|
+
image: sidecar-image
|
66
|
+
- name: web
|
67
|
+
image: gcr.io/boltops-learn/demo:kubes-2021-10-21T18-06-48
|
68
|
+
# ...
|
69
|
+
```
|
70
|
+
|
71
|
+
However, using this merge behavior will also add additional ports if you are assigning a `targetPort` in the DSL. See:
|
72
|
+
|
73
|
+
* [DSL in service creates always default port 80 #45](https://github.com/boltops-tools/kubes/issues/45)
|
74
|
+
* [use deep_merge overwrite_arrays option #48](https://github.com/boltops-tools/kubes/pull/48)
|
75
|
+
|
76
|
+
Will welcome PRs for improvements.
|
data/docs/_docs/layering.md
CHANGED
@@ -7,4 +7,4 @@ Kubes supports layering files together so you can use the same Kubernetes files
|
|
7
7
|
* [YAML Layering]({% link _docs/layering/yaml.md %})
|
8
8
|
* [DSL Layering]({% link _docs/layering/dsl.md %})
|
9
9
|
* [Mix Layering]({% link _docs/layering/mix.md %})
|
10
|
-
* [Merge Behavior]({% link _docs/layering/merge.md %})
|
10
|
+
* [Merge Behavior]({% link _docs/layering/merge-dsl.md %})
|
@@ -11,6 +11,7 @@ Here's an example structure, so we can understand how layering works.
|
|
11
11
|
├── clock
|
12
12
|
│ └── deployment.{{ include.ext }}
|
13
13
|
└── web
|
14
|
+
├── all.{{ include.ext }}
|
14
15
|
├── deployment
|
15
16
|
│ ├── dev.{{ include.ext }}
|
16
17
|
│ └── prod.{{ include.ext }}
|
@@ -34,16 +35,17 @@ Notes
|
|
34
35
|
|
35
36
|
Here's a table showing the the full layering.
|
36
37
|
|
37
|
-
Folder/Pattern
|
38
|
-
|
39
|
-
base/all.{{ include.ext }}
|
40
|
-
base/all/ENV.{{ include.ext }}
|
41
|
-
base/KIND.{{ include.ext }}
|
42
|
-
base/KIND/base.{{ include.ext }}
|
43
|
-
base/KIND/ENV.{{ include.ext }}
|
44
|
-
ROLE/
|
45
|
-
ROLE/KIND
|
46
|
-
ROLE/KIND/
|
38
|
+
Type | Folder/Pattern | Example
|
39
|
+
---|---|---
|
40
|
+
pre | base/all.{{ include.ext }} | base/all.{{ include.ext }}
|
41
|
+
pre | base/all/ENV.{{ include.ext }} | base/all/dev.{{ include.ext }}
|
42
|
+
pre | base/KIND.{{ include.ext }} | base/deployment.{{ include.ext }}
|
43
|
+
pre | base/KIND/base.{{ include.ext }} | base/deployment/base.{{ include.ext }}
|
44
|
+
pre | base/KIND/ENV.{{ include.ext }} | base/deployment/dev.{{ include.ext }}
|
45
|
+
pre | ROLE/all.{{ include.ext }} | web/all.{{ include.ext }}
|
46
|
+
main | ROLE/KIND.{{ include.ext }} | web/deployment.{{ include.ext }}
|
47
|
+
post | ROLE/KIND/base.{{ include.ext }} | web/deployment/base.{{ include.ext }}
|
48
|
+
post | ROLE/KIND/ENV.{{ include.ext }} | web/deployment/dev.{{ include.ext }}
|
47
49
|
|
48
50
|
## Real-World Uses
|
49
51
|
|
data/docs/_includes/sidebar.html
CHANGED
@@ -97,7 +97,8 @@
|
|
97
97
|
<li><a href="{% link _docs/layering/yaml.md %}">YAML</a></li>
|
98
98
|
<li><a href="{% link _docs/layering/dsl.md %}">DSL</a></li>
|
99
99
|
<li><a href="{% link _docs/layering/mix.md %}">Mix</a></li>
|
100
|
-
<li><a href="{% link _docs/layering/merge.md %}">Merge
|
100
|
+
<li><a href="{% link _docs/layering/merge-dsl.md %}">Merge DSL</a></li>
|
101
|
+
<li><a href="{% link _docs/layering/merge-options.md %}">Merge Options</a></li>
|
101
102
|
</ul>
|
102
103
|
</li>
|
103
104
|
<li><a href="{% link _docs/dsl.md %}">DSL</a>
|
@@ -6,29 +6,21 @@ class Kubes::Compiler
|
|
6
6
|
ext = File.extname(@path)
|
7
7
|
kind = File.basename(@path).sub(ext,'') # IE: deployment
|
8
8
|
kind = kind.pluralize if @block_form
|
9
|
+
role = @path.split('/')[-2] # .kubes/resources/web/deployment.yaml
|
9
10
|
layers = [
|
10
|
-
"all",
|
11
|
-
"all/#{Kubes.env}",
|
12
|
-
"
|
13
|
-
"
|
11
|
+
"base/all",
|
12
|
+
"base/all/#{Kubes.env}",
|
13
|
+
"base/#{kind}",
|
14
|
+
"base/#{kind}/#{Kubes.env}",
|
15
|
+
"#{role}/all",
|
14
16
|
]
|
15
17
|
layers = add_exts(layers)
|
16
18
|
layers.map! do |layer|
|
17
|
-
"#{Kubes.root}/.kubes/resources
|
19
|
+
"#{Kubes.root}/.kubes/resources/#{layer}"
|
18
20
|
end
|
19
21
|
layers.select { |layer| File.exist?(layer) }
|
20
22
|
end
|
21
23
|
|
22
|
-
def add_exts(layers)
|
23
|
-
layers.map do |layer|
|
24
|
-
[
|
25
|
-
"#{layer}.rb",
|
26
|
-
"#{layer}.yaml",
|
27
|
-
"#{layer}.yml",
|
28
|
-
]
|
29
|
-
end.flatten
|
30
|
-
end
|
31
|
-
|
32
24
|
def post_layers
|
33
25
|
return [] if Kubes.kustomize?
|
34
26
|
|
@@ -45,5 +37,15 @@ class Kubes::Compiler
|
|
45
37
|
end
|
46
38
|
layers.select { |layer| File.exist?(layer) }
|
47
39
|
end
|
40
|
+
|
41
|
+
def add_exts(*layers)
|
42
|
+
layers.flatten.map do |layer|
|
43
|
+
[
|
44
|
+
"#{layer}.rb",
|
45
|
+
"#{layer}.yaml",
|
46
|
+
"#{layer}.yml",
|
47
|
+
]
|
48
|
+
end.flatten
|
49
|
+
end
|
48
50
|
end
|
49
51
|
end
|
data/lib/kubes/config.rb
CHANGED
data/lib/kubes/core.rb
CHANGED
data/lib/kubes/util/consider.rb
CHANGED
data/lib/kubes/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kubes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tung Nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-10-
|
11
|
+
date: 2021-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -336,7 +336,8 @@ files:
|
|
336
336
|
- docs/_docs/intro/structure.md
|
337
337
|
- docs/_docs/layering.md
|
338
338
|
- docs/_docs/layering/dsl.md
|
339
|
-
- docs/_docs/layering/merge.md
|
339
|
+
- docs/_docs/layering/merge-dsl.md
|
340
|
+
- docs/_docs/layering/merge-options.md
|
340
341
|
- docs/_docs/layering/mix.md
|
341
342
|
- docs/_docs/layering/yaml.md
|
342
343
|
- docs/_docs/learn/dsl.md
|