kubes 0.4.7 → 0.6.2
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 +28 -0
- data/README.md +54 -8
- data/docs/_docs/config/hooks/kubes.md +1 -0
- data/docs/_docs/config/reference.md +1 -0
- data/docs/_docs/config/skip.md +1 -1
- data/docs/_docs/dsl/multiple-resources.md +6 -4
- data/docs/_docs/dsl/resources/job.md +62 -0
- data/docs/_docs/dsl/resources/secret.md +19 -2
- data/docs/_docs/extra-env/dsl.md +2 -2
- data/docs/_docs/extra-env/yaml.md +1 -1
- data/docs/_docs/generators.md +41 -0
- data/docs/_docs/helpers.md +17 -3
- data/docs/_docs/helpers/aws/advanced.md +10 -0
- data/docs/_docs/helpers/aws/advanced/secrets.md +131 -0
- data/docs/_docs/helpers/aws/advanced/ssm.md +78 -0
- data/docs/_docs/helpers/aws/secrets.md +18 -88
- data/docs/_docs/helpers/aws/ssm.md +20 -38
- data/docs/_docs/helpers/google/advanced.md +10 -0
- data/docs/_docs/helpers/google/advanced/secrets.md +78 -0
- data/docs/_docs/helpers/google/gke.md +33 -0
- data/docs/_docs/helpers/google/secrets.md +18 -27
- data/docs/_docs/helpers/google/service-account.md +8 -0
- data/docs/_docs/intro.md +2 -9
- data/docs/_docs/intro/docker-image.md +66 -0
- data/docs/_docs/intro/how-kubes-works.md +7 -11
- data/docs/_docs/layering.md +2 -0
- data/docs/_docs/layering/merge.md +1 -1
- data/docs/_docs/layering/mix.md +99 -0
- data/docs/_docs/learn/dsl/delete.md +10 -2
- data/docs/_docs/learn/dsl/review-project.md +2 -2
- data/docs/_docs/learn/yaml/delete.md +10 -2
- data/docs/_docs/learn/yaml/review-project.md +2 -2
- data/docs/_docs/patterns/clock-web-worker.md +3 -3
- data/docs/_docs/patterns/migrations.md +1 -1
- data/docs/_docs/patterns/multiple-envs.md +55 -0
- data/docs/_docs/variables.md +23 -0
- data/docs/_docs/variables/advanced.md +62 -0
- data/docs/_docs/variables/basic.md +137 -0
- data/docs/_docs/vs.md +10 -0
- data/docs/_docs/vs/custom.md +109 -0
- data/docs/_docs/vs/helm.md +243 -0
- data/docs/_docs/vs/kustomize.md +167 -0
- data/docs/_docs/yaml.md +2 -2
- data/docs/_includes/commands.html +2 -2
- data/docs/_includes/intro/features.md +11 -0
- data/docs/_includes/layering/layers.md +2 -4
- data/docs/_includes/sidebar.html +41 -0
- data/docs/_includes/vs/article.md +1 -0
- data/docs/_includes/vs/kubes/layering.md +10 -0
- data/docs/_includes/vs/kubes/structure.md +24 -0
- data/docs/_reference/kubes-delete.md +1 -1
- data/docs/_reference/kubes-exec.md +17 -1
- data/docs/_reference/kubes-init.md +2 -2
- data/docs/_reference/kubes-logs.md +2 -1
- data/docs/_reference/kubes-new-help.md +15 -0
- data/docs/_reference/kubes-new-helper.md +25 -0
- data/docs/_reference/kubes-new-resource.md +56 -0
- data/docs/_reference/kubes-new-variable.md +20 -0
- data/docs/_reference/kubes-new.md +26 -0
- data/docs/_reference/kubes-prune.md +22 -0
- data/docs/reference.md +2 -0
- data/kubes.gemspec +2 -2
- data/lib/kubes.rb +5 -3
- data/lib/kubes/auth.rb +4 -1
- data/lib/kubes/auth/base.rb +21 -0
- data/lib/kubes/auth/ecr.rb +1 -15
- data/lib/kubes/auth/gcr.rb +24 -0
- data/lib/kubes/cli.rb +9 -1
- data/lib/kubes/cli/apply.rb +0 -1
- data/lib/kubes/cli/build.rb +6 -0
- data/lib/kubes/cli/compile.rb +7 -0
- data/lib/kubes/cli/deploy.rb +1 -6
- data/lib/kubes/cli/exec.rb +5 -1
- data/lib/kubes/cli/help/exec.md +15 -0
- data/lib/kubes/cli/help/new/helper.md +4 -0
- data/lib/kubes/cli/help/new/resource.md +30 -0
- data/lib/kubes/cli/init.rb +1 -1
- data/lib/kubes/cli/new.rb +15 -0
- data/lib/kubes/cli/new/helper.rb +24 -0
- data/lib/kubes/cli/new/resource.rb +97 -0
- data/lib/kubes/cli/new/variable.rb +16 -0
- data/lib/kubes/cli/prune.rb +4 -2
- data/lib/kubes/cli/sequence.rb +1 -0
- data/lib/kubes/command.rb +7 -0
- data/lib/kubes/compiler.rb +19 -21
- data/lib/kubes/compiler/decorator/base.rb +1 -1
- data/lib/kubes/compiler/dsl/core/base.rb +6 -9
- data/lib/kubes/compiler/dsl/syntax/job.rb +217 -0
- data/lib/kubes/compiler/layering.rb +21 -7
- data/lib/kubes/compiler/shared/custom_variables.rb +38 -0
- data/lib/kubes/compiler/shared/helpers.rb +11 -2
- data/lib/kubes/compiler/shared/helpers/deprecated.rb +37 -0
- data/lib/kubes/compiler/shared/plugin_helpers.rb +14 -0
- data/lib/kubes/compiler/strategy.rb +7 -6
- data/lib/kubes/compiler/strategy/base.rb +59 -2
- data/lib/kubes/compiler/strategy/dsl.rb +0 -29
- data/lib/kubes/compiler/strategy/erb.rb +10 -22
- data/lib/kubes/compiler/util/normalize.rb +6 -3
- data/lib/kubes/compiler/util/yaml_dump.rb +4 -4
- data/lib/kubes/config.rb +14 -1
- data/lib/kubes/core.rb +6 -0
- data/lib/kubes/docker/strategy/image_name.rb +1 -1
- data/lib/kubes/hooks/builder.rb +20 -4
- data/lib/kubes/hooks/concern.rb +1 -1
- data/lib/kubes/kubectl/batch.rb +7 -33
- data/lib/kubes/kubectl/ordering.rb +42 -0
- data/lib/kubes/plugin.rb +14 -0
- data/lib/kubes/util/sh.rb +1 -1
- data/lib/kubes/version.rb +1 -1
- data/lib/templates/base/.kubes/config.rb.tt +1 -1
- data/lib/templates/base/.kubes/config/env/dev.rb +1 -1
- data/lib/templates/base/.kubes/config/env/prod.rb +1 -1
- data/lib/templates/dsl/.kubes/resources/web/deployment.rb +1 -1
- data/lib/templates/new/helper/file.rb +2 -0
- data/lib/templates/new/resource/dsl/backend_config.rb +10 -0
- data/lib/templates/new/resource/dsl/config_map.rb +5 -0
- data/lib/templates/new/resource/dsl/daemon_set.rb +11 -0
- data/lib/templates/new/resource/dsl/deployment.rb +4 -0
- data/lib/templates/new/resource/dsl/ingress.rb +3 -0
- data/lib/templates/new/resource/dsl/job.rb +2 -0
- data/lib/templates/new/resource/dsl/managed_certificate.rb +2 -0
- data/lib/templates/new/resource/dsl/namespace.rb +2 -0
- data/lib/templates/new/resource/dsl/network_policy.rb +7 -0
- data/lib/templates/new/resource/dsl/pod.rb +6 -0
- data/lib/templates/new/resource/dsl/role.rb +4 -0
- data/lib/templates/new/resource/dsl/role_binding.rb +7 -0
- data/lib/templates/new/resource/dsl/secret.rb +5 -0
- data/lib/templates/new/resource/dsl/service.rb +2 -0
- data/lib/templates/new/resource/dsl/service_account.rb +1 -0
- data/lib/templates/new/resource/yaml/backend_config.yaml +10 -0
- data/lib/templates/new/resource/yaml/config_map.yaml +9 -0
- data/lib/templates/new/resource/yaml/daemon_set.yaml +11 -0
- data/lib/templates/new/resource/yaml/deployment.yaml +19 -0
- data/lib/templates/new/resource/yaml/ingress.yaml +12 -0
- data/lib/templates/new/resource/yaml/job.yaml +19 -0
- data/lib/templates/new/resource/yaml/managed_certificate.yaml +7 -0
- data/lib/templates/new/resource/yaml/namespace.yaml +6 -0
- data/lib/templates/new/resource/yaml/network_policy.yaml +20 -0
- data/lib/templates/new/resource/yaml/pod.yaml +11 -0
- data/lib/templates/new/resource/yaml/role.yaml +13 -0
- data/lib/templates/new/resource/yaml/role_binding.yaml +11 -0
- data/lib/templates/new/resource/yaml/secret.yaml +9 -0
- data/lib/templates/new/resource/yaml/service.yaml +14 -0
- data/lib/templates/new/resource/yaml/service_account.yaml +4 -0
- data/lib/templates/new/variable/file.rb +1 -0
- data/lib/templates/yaml/.kubes/resources/base/all.yaml.tt +2 -0
- data/lib/templates/yaml/.kubes/resources/web/deployment.yaml.tt +1 -1
- data/spec/fixtures/multiple-files/{deployment-1.rb → .kubes/resources/web/deployment-1.rb} +0 -0
- data/spec/fixtures/multiple-files/{deployment-2.rb → .kubes/resources/web/deployment-2.rb} +0 -0
- data/spec/fixtures/project/.kubes/resources/{deployment.rb → web/deployment.rb} +0 -0
- data/spec/fixtures/project/.kubes/resources/{foobar.rb → web/empty.rb} +0 -0
- data/spec/fixtures/project/.kubes/resources/{service.rb → web/service.rb} +1 -1
- data/spec/fixtures/syntax/{network_policy.rb → .kubes/resources/web/network_policy.rb} +0 -0
- data/spec/fixtures/syntax/{pod.rb → .kubes/resources/web/pod.rb} +0 -0
- data/spec/kubes/cli/prune_spec.rb +1 -0
- data/spec/kubes/compiler/strategy/dsl_spec.rb +2 -2
- data/spec/kubes/compiler_spec.rb +6 -2
- data/spec/kubes/dsl/network_policy_spec.rb +1 -1
- data/spec/kubes/dsl/pod_spec.rb +1 -1
- metadata +98 -25
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Kubes vs Kustomize
|
|
3
|
+
nav_text: Kustomize
|
|
4
|
+
categories: vs
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Though both Kubes and Kustomize build YAML files, they are quite different beasts. Kustomize is more like a `kubectl` feature that decorates YAML. Kubes is more like a tool. Kubes also builds YAML, but it also provides additional features.
|
|
8
|
+
|
|
9
|
+
Kustomize lets you customize your Kubernetes YAML files with additional `kustomization.yaml` files. The kustomization.yaml files contain configs that tell `kubectl` how to decorate existing Kubernetes YAML files in a template-free way.
|
|
10
|
+
|
|
11
|
+
Kubes lets you create Kubernetes files more directly. It handles layering and merging YAML files via a conventional structure. It also supports additional conveniences like building Docker images, CLI Customizations, Hooks, etc.
|
|
12
|
+
|
|
13
|
+
{% include vs/article.md %}
|
|
14
|
+
|
|
15
|
+
## Project Structures
|
|
16
|
+
|
|
17
|
+
### Kustomize Project Structure
|
|
18
|
+
|
|
19
|
+
Kustomize doesn't define a strict a project folder structure. You define any project structure you wish and use `kustomization.yaml` files to connect things together. Here's a possible Kustomize example project structure:
|
|
20
|
+
|
|
21
|
+
├── base
|
|
22
|
+
│ ├── deployment.yaml
|
|
23
|
+
│ ├── kustomization.yaml
|
|
24
|
+
│ └── service.yaml
|
|
25
|
+
└── overlays
|
|
26
|
+
├── dev
|
|
27
|
+
│ ├── deployment.yaml
|
|
28
|
+
│ ├── kustomization.yaml
|
|
29
|
+
│ └── namespace.yaml
|
|
30
|
+
└── prod
|
|
31
|
+
├── deployment.yaml
|
|
32
|
+
├── kustomization.yaml
|
|
33
|
+
└── namespace.yaml
|
|
34
|
+
|
|
35
|
+
The provided structure allows you to use the same code to create different environments with overlays. The `overlays/dev/kustomization.yaml` file stitches the structure together.
|
|
36
|
+
|
|
37
|
+
overlays/dev/kustomization.yaml:
|
|
38
|
+
|
|
39
|
+
```yaml
|
|
40
|
+
apiVersion: kustomize.config.k8s.io/v1beta1
|
|
41
|
+
kind: Kustomization
|
|
42
|
+
bases:
|
|
43
|
+
- ../../base
|
|
44
|
+
patchesStrategicMerge:
|
|
45
|
+
- deployment.yaml
|
|
46
|
+
namespace: demo-dev
|
|
47
|
+
resources:
|
|
48
|
+
- ./namespace.yaml
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
{% include vs/kubes/structure.md %}
|
|
52
|
+
|
|
53
|
+
## Multiple Environments: Overlays vs Layering
|
|
54
|
+
|
|
55
|
+
Both Kustomize and Kubes allow you to use the same code to create multiple environments. They take different approaches, though.
|
|
56
|
+
|
|
57
|
+
### Kustomize Overlays
|
|
58
|
+
|
|
59
|
+
Kustomize achieves multiple environments via `kustomization.yaml` and manually specifying and wiring how the files should merge. To create different dev and prod environments, we use overlays:
|
|
60
|
+
|
|
61
|
+
kubectl apply -k overlays/dev
|
|
62
|
+
kubectl apply -k overlays/prod
|
|
63
|
+
|
|
64
|
+
{% include vs/kubes/layering.md %}
|
|
65
|
+
|
|
66
|
+
## DRY Differences
|
|
67
|
+
|
|
68
|
+
## DRY with Kustomize
|
|
69
|
+
|
|
70
|
+
Both Kubes and Kustomize try to achieve DRY YAML code. It tries to avoid YAML duplication.
|
|
71
|
+
|
|
72
|
+
Kustomize takes a purist viewpoint. You use `kustomization.yaml` to decorate original YAML. The original files are untouched and left as-is. Here are example overlays files.
|
|
73
|
+
|
|
74
|
+
overlays/dev/kustomization.yaml:
|
|
75
|
+
|
|
76
|
+
```yaml
|
|
77
|
+
apiVersion: kustomize.config.k8s.io/v1beta1
|
|
78
|
+
kind: Kustomization
|
|
79
|
+
bases:
|
|
80
|
+
- ../../base
|
|
81
|
+
patchesStrategicMerge:
|
|
82
|
+
- deployment.yaml
|
|
83
|
+
namespace: demo-dev
|
|
84
|
+
resources:
|
|
85
|
+
- ./namespace.yaml
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
overlays/prod/kustomization.yaml:
|
|
89
|
+
|
|
90
|
+
```yaml
|
|
91
|
+
apiVersion: kustomize.config.k8s.io/v1beta1
|
|
92
|
+
kind: Kustomization
|
|
93
|
+
bases:
|
|
94
|
+
- ../../base
|
|
95
|
+
patchesStrategicMerge:
|
|
96
|
+
- deployment.yaml
|
|
97
|
+
namespace: demo-prod
|
|
98
|
+
resources:
|
|
99
|
+
- ./namespace.yaml
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
While duplication is reduced since the original `base/deployment.yaml` is left untouched, there is duplication in the `kustomization.yaml` files.
|
|
103
|
+
|
|
104
|
+
## DRY with Kubes
|
|
105
|
+
|
|
106
|
+
With Kubes, DRY has handled by layering and templating support. Let's first take a look at how layering removes duplication.
|
|
107
|
+
|
|
108
|
+
Let's focus on `deployment.yaml` to explain and understand layering. Here are the files that get layered.
|
|
109
|
+
|
|
110
|
+
.kubes/resources/base/all.yaml # common YAML for all files
|
|
111
|
+
.kubes/resources/base/deployment.yaml # common YAML for deployment kind
|
|
112
|
+
.kubes/resources/web/deployment.yaml
|
|
113
|
+
.kubes/resources/web/deployment/dev.yaml # env-specific that overrides YAML
|
|
114
|
+
|
|
115
|
+
Each file is merged together and produces a resulting YAML file:
|
|
116
|
+
|
|
117
|
+
.kubes/output/web/deployment.yaml
|
|
118
|
+
|
|
119
|
+
Additionally, you can use ERB templating to keep things DRY. Here's an example:
|
|
120
|
+
|
|
121
|
+
.kubes/resources/shared/namespace.yaml
|
|
122
|
+
|
|
123
|
+
```yaml
|
|
124
|
+
apiVersion: v1
|
|
125
|
+
kind: Namespace
|
|
126
|
+
metadata:
|
|
127
|
+
name: demo-<%= Kubes.env %>
|
|
128
|
+
labels:
|
|
129
|
+
app: demo
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Notice the `<%= Kubes.env %>` templating logic. When is `KUBES_ENV=dev`, then `name: demo-dev`. When is `KUBES_ENV=prod`, then `name: demo-prod`.
|
|
133
|
+
|
|
134
|
+
You can even define your own custom helpers for even more control. See: [Helpers Docs](https://kubes.guru/docs/helpers/custom/)
|
|
135
|
+
|
|
136
|
+
## Kubes Features
|
|
137
|
+
|
|
138
|
+
Kubes does a lot more than build YAML files. Here's a list of features:
|
|
139
|
+
|
|
140
|
+
{% include intro/features.md %}
|
|
141
|
+
|
|
142
|
+
## Kubes Kustomize Support
|
|
143
|
+
|
|
144
|
+
All of that being said, Kubes also supports Kustomize. So if you’re a Kustomize user, you can use it with Kubes. Here's an example Kustomize structure with Kubes.
|
|
145
|
+
|
|
146
|
+
.kubes/resources
|
|
147
|
+
├── base
|
|
148
|
+
│ ├── deployment.yaml
|
|
149
|
+
│ ├── kustomization.yaml
|
|
150
|
+
│ └── service.yaml
|
|
151
|
+
└── overlays
|
|
152
|
+
├── dev
|
|
153
|
+
│ └── kustomization.yaml
|
|
154
|
+
└── prod
|
|
155
|
+
└── kustomization.yaml
|
|
156
|
+
|
|
157
|
+
In Kustomize mode, Kubes will call `kubectl apply -k`. Here's an example:
|
|
158
|
+
|
|
159
|
+
kubes deploy overlays/dev
|
|
160
|
+
|
|
161
|
+
This calls:
|
|
162
|
+
|
|
163
|
+
kubectl apply -k .kubes/output/overlays/dev
|
|
164
|
+
|
|
165
|
+
## Summary
|
|
166
|
+
|
|
167
|
+
Kustomize and Kubes are quite different. Kustomize is more of a feature to kubectl and takes on a purist view on changing YAML files for deployment. Kubes has similar merging concepts as Kustomize in the form of layering. Kustomize is more about control things with additional `kustomization.yaml` configurations. Whereas, Kubes takes more of a convention-over-configuration approach, so it just works without having to do extra prewiring work. Kubes additionally helps you build your Docker images.
|
data/docs/_docs/yaml.md
CHANGED
|
@@ -12,7 +12,7 @@ You can write your Kubernetes resources in YAML format.
|
|
|
12
12
|
|
|
13
13
|
## YAML and Templating
|
|
14
14
|
|
|
15
|
-
Kubes provides a little extra power for the YAML format. The YAML files are processed through an ERB templating language. So you have dynamic control. Here's an example with `Kubes.env` and the `
|
|
15
|
+
Kubes provides a little extra power for the YAML format. The YAML files are processed through an ERB templating language. So you have dynamic control. Here's an example with `Kubes.env` and the `docker_image` helper.
|
|
16
16
|
|
|
17
17
|
.kubes/resources/web/deployment.yaml
|
|
18
18
|
|
|
@@ -37,5 +37,5 @@ spec:
|
|
|
37
37
|
spec:
|
|
38
38
|
containers:
|
|
39
39
|
- name: demo-web
|
|
40
|
-
image: <%=
|
|
40
|
+
image: <%= docker_image %>
|
|
41
41
|
```
|
|
@@ -108,7 +108,7 @@ spec:
|
|
|
108
108
|
spec:
|
|
109
109
|
containers:
|
|
110
110
|
- name: demo-web
|
|
111
|
-
image: <%=
|
|
111
|
+
image: <%= docker_image %>
|
|
112
112
|
{% endhighlight %}
|
|
113
113
|
</div>
|
|
114
114
|
</div>
|
|
@@ -121,7 +121,7 @@ namespace "default"
|
|
|
121
121
|
labels(role: "web")
|
|
122
122
|
|
|
123
123
|
replicas 2
|
|
124
|
-
image
|
|
124
|
+
image docker_image # IE: user/demo-web:kubes-2020-06-13T19-55-16-43afc6e
|
|
125
125
|
{% endhighlight %}
|
|
126
126
|
</div>
|
|
127
127
|
</div>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
* Automation: [Builds the Docker image]({% link _docs/config/docker.md %}) and updates the compiled YAML files
|
|
2
|
+
* Syntactic Sugar: Use an [ERB/YAML]({% link _docs/yaml.md %}) or a [DSL]({% link _docs/dsl.md %}) to write your Kubernetes YAML files. You can use a mix of DSL and YAML definitions in the `.kubes/resources` folder.
|
|
3
|
+
* Layering: Use the same Kubernetes YAML to build multiple environments like dev and prod with [layering]({% link _docs/layering.md %}).
|
|
4
|
+
* Secrets: Use helpers like [aws_secret]({% link _docs/helpers/aws/secrets.md %}), [aws_ssm]({% link _docs/helpers/aws/ssm.md %}), and [google_secret]({% link _docs/helpers/google/secrets.md %}) to build Kubernetes secrets.yaml from secret providers designed for it.
|
|
5
|
+
* Generators: Kubes ships with a few generators to help you get building with Kubernetes quickly. See: [Generator Docs]({% link _docs/generators.md %}).
|
|
6
|
+
* CLI Customizations: You can customize the [cli args]({% link _docs/config/args/kubectl.md %}).
|
|
7
|
+
* Hooks: You can also run [hooks]({% link _docs/config/hooks.md %}) before and after [kubes]({% link _docs/config/hooks/kubes.md %}) and [kubectl]({% link _docs/config/hooks/kubectl.md %}) commands.
|
|
8
|
+
* Automated Suffix Hashes: Automatically appends a suffix hash to ConfigMap and Secret resources. More details in [ConfigMap]({% link _docs/dsl/resources/config_map.md %}) and [Secret]({% link _docs/dsl/resources/secret.md %}) docs.
|
|
9
|
+
* Kustomize Support: If you're a kustomization user, you can use it with Kubes. More details in [Kustomize Support Docs]({% link _docs/misc/kustomize.md %}).
|
|
10
|
+
* Auto Context Switching: Map dev to a specific kubectl context and prod to another kubectl context and Kubes can switch them automatically so you won't have to remember. More details in [Auto Context Docs]({% link _docs/misc/auto-context.md %}).
|
|
11
|
+
* Ordering: Kubes run kubectl apply to create resources in the [correct order]({% link _docs/intro/ordering.md %}). For deleting, it kubes will run `kubectl delete` in the correct reverse order. The order is also [customizable]({% link _docs/intro/ordering/custom.md %}).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Kubes Layering in it's full form allows you to keep your resource definitions DRY and create different environments with the same code.
|
|
2
2
|
|
|
3
|
-
## Structure
|
|
3
|
+
## Project Structure
|
|
4
4
|
|
|
5
5
|
Here's an example structure, so we can understand how layering works.
|
|
6
6
|
|
|
@@ -25,9 +25,7 @@ To explain the layering, here's the general processing order that Kubes takes.
|
|
|
25
25
|
2. Then Kubes will process your `.kubes/resources/ROLE` definitions.
|
|
26
26
|
3. Lastly, Kubes processes any post-layers in the `.kubes/resources/ROLE/KIND` folders.
|
|
27
27
|
|
|
28
|
-
Note, both YAML and DSL forms support layering.
|
|
29
|
-
|
|
30
|
-
Layering only combines resources definitions with the same form. For example, the DSL form `base/all.rb` will not be combined with YAML form `web/deployment.yaml`.
|
|
28
|
+
Note, both YAML and DSL forms support layering. They can be mixed together.
|
|
31
29
|
|
|
32
30
|
## Full Layering
|
|
33
31
|
|
data/docs/_includes/sidebar.html
CHANGED
|
@@ -28,6 +28,14 @@
|
|
|
28
28
|
<li><a href="{% link _docs/learn/dsl/next-steps.md %}">Next Steps</a></li>
|
|
29
29
|
</ul>
|
|
30
30
|
</li>
|
|
31
|
+
<li><a href="{% link _docs/vs.md %}">Kubes vs Others</a>
|
|
32
|
+
<ul>
|
|
33
|
+
{% assign docs = site.docs | where: "categories","vs" %}
|
|
34
|
+
{% for doc in docs -%}
|
|
35
|
+
<li><a href="{{ doc.url }}">{{ doc.nav_text }}</a></li>
|
|
36
|
+
{% endfor %}
|
|
37
|
+
</ul>
|
|
38
|
+
</li>
|
|
31
39
|
</ul>
|
|
32
40
|
<h2><a href="{% link docs.md %}">Docs</a></h2>
|
|
33
41
|
<ul id="docs">
|
|
@@ -42,6 +50,7 @@
|
|
|
42
50
|
</ul>
|
|
43
51
|
</li>
|
|
44
52
|
<li><a href="{% link _docs/intro/install.md %}">Install</a></li>
|
|
53
|
+
<li><a href="{% link _docs/intro/docker-image.md %}">Docker Image</a></li>
|
|
45
54
|
</ul>
|
|
46
55
|
</li>
|
|
47
56
|
<li><a href="{% link _docs/resources.md %}">Resources</a>
|
|
@@ -76,11 +85,13 @@
|
|
|
76
85
|
<li><a href="{% link _docs/config/reference.md %}">Reference</a></li>
|
|
77
86
|
</ul>
|
|
78
87
|
</li>
|
|
88
|
+
<li><a href="{% link _docs/generators.md %}">Generators</a></li>
|
|
79
89
|
<li><a href="{% link _docs/yaml.md %}">YAML</a></li>
|
|
80
90
|
<li><a href="{% link _docs/layering.md %}">Layering</a>
|
|
81
91
|
<ul>
|
|
82
92
|
<li><a href="{% link _docs/layering/yaml.md %}">YAML</a></li>
|
|
83
93
|
<li><a href="{% link _docs/layering/dsl.md %}">DSL</a></li>
|
|
94
|
+
<li><a href="{% link _docs/layering/mix.md %}">Mix</a></li>
|
|
84
95
|
<li><a href="{% link _docs/layering/merge.md %}">Merge Behavior</a></li>
|
|
85
96
|
</ul>
|
|
86
97
|
</li>
|
|
@@ -97,6 +108,14 @@
|
|
|
97
108
|
<li><a href="{% link _docs/dsl/multiple-resources.md %}">Multiple Resources</a>
|
|
98
109
|
</ul>
|
|
99
110
|
</li>
|
|
111
|
+
<li><a href="{% link _docs/variables.md %}">Variables</a>
|
|
112
|
+
<ul>
|
|
113
|
+
{% assign docs = site.docs | where: "categories","variables" %}
|
|
114
|
+
{% for doc in docs -%}
|
|
115
|
+
<li><a href="{{ doc.url }}">{{ doc.nav_text }}</a></li>
|
|
116
|
+
{% endfor %}
|
|
117
|
+
</ul>
|
|
118
|
+
</li>
|
|
100
119
|
<li><a href="{% link _docs/helpers.md %}">Helpers</a>
|
|
101
120
|
<ul>
|
|
102
121
|
<li><a href="{% link _docs/helpers/custom.md %}">Custom</a></li>
|
|
@@ -104,7 +123,18 @@
|
|
|
104
123
|
<ul>
|
|
105
124
|
{% assign docs = site.docs | where: "categories","helpers-aws" %}
|
|
106
125
|
{% for doc in docs -%}
|
|
126
|
+
{% if doc.nav_text == "Advanced" %}
|
|
127
|
+
<li><a href='{{ doc.url }}'>{{ doc.nav_text }}</a>
|
|
128
|
+
<ul>
|
|
129
|
+
{% assign docs = site.docs | where: "categories","advanced-helpers-aws" %}
|
|
130
|
+
{% for doc in docs -%}
|
|
131
|
+
<li><a href="{{ doc.url }}">{{ doc.nav_text }}</a></li>
|
|
132
|
+
{% endfor %}
|
|
133
|
+
</ul>
|
|
134
|
+
</li>
|
|
135
|
+
{% else %}
|
|
107
136
|
<li><a href="{{ doc.url }}">{{ doc.nav_text }}</a></li>
|
|
137
|
+
{% endif %}
|
|
108
138
|
{% endfor %}
|
|
109
139
|
</ul>
|
|
110
140
|
</li>
|
|
@@ -112,7 +142,18 @@
|
|
|
112
142
|
<ul>
|
|
113
143
|
{% assign docs = site.docs | where: "categories","helpers-google" %}
|
|
114
144
|
{% for doc in docs -%}
|
|
145
|
+
{% if doc.nav_text == "Advanced" %}
|
|
146
|
+
<li><a href='{{ doc.url }}'>{{ doc.nav_text }}</a>
|
|
147
|
+
<ul>
|
|
148
|
+
{% assign docs = site.docs | where: "categories","advanced-helpers-google" %}
|
|
149
|
+
{% for doc in docs -%}
|
|
150
|
+
<li><a href="{{ doc.url }}">{{ doc.nav_text }}</a></li>
|
|
151
|
+
{% endfor %}
|
|
152
|
+
</ul>
|
|
153
|
+
</li>
|
|
154
|
+
{% else %}
|
|
115
155
|
<li><a href="{{ doc.url }}">{{ doc.nav_text }}</a></li>
|
|
156
|
+
{% endif %}
|
|
116
157
|
{% endfor %}
|
|
117
158
|
</ul>
|
|
118
159
|
</li>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This article also covers more differences in detail: [Kustomize vs Helm vs Kubes: Kubernetes Deploy Tools](https://blog.boltops.com/2020/11/05/kustomize-vs-helm-vs-kubes-kubernetes-deploy-tools)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
### Kubes Layering
|
|
2
|
+
|
|
3
|
+
To deploy and create multiple environments like dev and prod with the same YAML, we use a different KUBES_ENV setting:
|
|
4
|
+
|
|
5
|
+
KUBES_ENV=dev kubes deploy
|
|
6
|
+
KUBES_ENV=prod kubes deploy
|
|
7
|
+
|
|
8
|
+
The layering is achieved thanks to the conventional project structure. You don't have to do any extra work, you just create pre-process base layer files or post-process environment specific layer files.
|
|
9
|
+
|
|
10
|
+
* [Kubes Layering Docs]({% link _docs/layering.md %})
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
### Kubes Project Structure
|
|
2
|
+
|
|
3
|
+
On the other hand, Kubes defines a conventional project structure. Here's a project directory example:
|
|
4
|
+
|
|
5
|
+
.kubes
|
|
6
|
+
└── resources
|
|
7
|
+
├── base
|
|
8
|
+
│ ├── all.yaml
|
|
9
|
+
│ └── deployment.yaml
|
|
10
|
+
├── shared
|
|
11
|
+
│ └── namespace.yaml
|
|
12
|
+
└── web
|
|
13
|
+
├── deployment
|
|
14
|
+
│ ├── dev.yaml
|
|
15
|
+
│ └── prod.yaml
|
|
16
|
+
├── deployment.yaml
|
|
17
|
+
└── service.yaml
|
|
18
|
+
|
|
19
|
+
A Kubes project structure also supports introduces a role concept or folder. The folder structure only shows a web role for simplicity. You can always add more roles. For example:
|
|
20
|
+
|
|
21
|
+
.kubes/resources/ROLE/deployment.yaml
|
|
22
|
+
.kubes/resources/clock/deployment.yaml
|
|
23
|
+
.kubes/resources/web/deployment.yaml
|
|
24
|
+
.kubes/resources/worker/deployment.yaml
|
|
@@ -36,13 +36,29 @@ If you have have multiple containers in your pod. You can specify the specfic co
|
|
|
36
36
|
|
|
37
37
|
kubes exec --name web
|
|
38
38
|
|
|
39
|
+
## Default Exec Command
|
|
40
|
+
|
|
41
|
+
The default exec command is `sh`. Example:
|
|
42
|
+
|
|
43
|
+
$ kubes exec
|
|
44
|
+
=> kubectl exec -n demo-dev -ti web-568645f665-62j8f -- sh
|
|
45
|
+
/app #
|
|
46
|
+
|
|
47
|
+
You can override the default with `KUBES_DEFAULT_EXEC`. Example:
|
|
48
|
+
|
|
49
|
+
$ export KUBES_DEFAULT_EXEC=bash
|
|
50
|
+
$ kubes exec
|
|
51
|
+
=> kubectl exec -n demo-dev -ti web-568645f665-62j8f -- bash
|
|
52
|
+
/app #
|
|
53
|
+
|
|
39
54
|
|
|
40
55
|
## Options
|
|
41
56
|
|
|
42
57
|
```
|
|
43
58
|
[--compile], [--no-compile] # whether or not to compile the .kube/resources
|
|
44
59
|
# Default: true
|
|
45
|
-
|
|
60
|
+
p, [--pod=POD] # pod to use. IE: web
|
|
61
|
+
d, [--deployment=DEPLOYMENT] # deployment name to use. IE: demo-web
|
|
46
62
|
c, [--container=CONTAINER] # Container name. If omitted, the first container in the pod will be chosen
|
|
47
63
|
[--verbose], [--no-verbose]
|
|
48
64
|
[--noop], [--no-noop]
|
|
@@ -16,11 +16,11 @@ Init project
|
|
|
16
16
|
|
|
17
17
|
```
|
|
18
18
|
a, --app=APP # Docker repo name. Example: web. Generates .kubes/APP/resources folder
|
|
19
|
-
|
|
19
|
+
y, [--force] # Bypass overwrite are you sure prompt for existing files
|
|
20
20
|
t, [--type=TYPE] # Type: dsl or yaml
|
|
21
21
|
# Default: yaml
|
|
22
22
|
--repo=REPO # Docker repo name. Example: user/repo. Configures .kubes/config.rb
|
|
23
|
-
n, [--namespace=NAMESPACE] # Namespace to use, defaults to
|
|
23
|
+
n, [--namespace=NAMESPACE] # Namespace to use, defaults to APP-ENV. IE: demo-dev
|
|
24
24
|
[--verbose], [--no-verbose]
|
|
25
25
|
[--noop], [--no-noop]
|
|
26
26
|
```
|
|
@@ -17,7 +17,8 @@ logs from all deployment pods
|
|
|
17
17
|
```
|
|
18
18
|
[--compile], [--no-compile] # whether or not to compile the .kube/resources
|
|
19
19
|
# Default: true
|
|
20
|
-
|
|
20
|
+
p, [--pod=POD] # pod to use. IE: web
|
|
21
|
+
d, [--deployment=DEPLOYMENT] # deployment name to use. IE: demo-web
|
|
21
22
|
c, [--container=CONTAINER] # Container name. If omitted, the first container in the pod will be chosen
|
|
22
23
|
f, [--follow], [--no-follow] # Follow logs
|
|
23
24
|
# Default: true
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: kubes new helper
|
|
3
|
+
reference: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Usage
|
|
7
|
+
|
|
8
|
+
kubes new helper
|
|
9
|
+
|
|
10
|
+
## Description
|
|
11
|
+
|
|
12
|
+
Generates kubes helper file.
|
|
13
|
+
|
|
14
|
+
## Examples
|
|
15
|
+
|
|
16
|
+
$ kubes new helper custom
|
|
17
|
+
create .kubes/helpers/custom_helper.rb
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
## Options
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
y, [--force] # Bypass overwrite are you sure prompt for existing files
|
|
24
|
+
```
|
|
25
|
+
|