kubes 0.3.0 → 0.3.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +16 -0
- data/docs/_config.yml +1 -1
- data/docs/_docs/ci/cloudbuild.md +2 -0
- data/docs/_docs/config/env.md +1 -1
- data/docs/_docs/config/kubectl.md +3 -54
- data/docs/_docs/config/kubectl/args.md +17 -0
- data/docs/_docs/config/kubectl/hooks.md +39 -0
- data/docs/_docs/dsl/resources/backend_config.md +1 -1
- data/docs/_docs/intro.md +4 -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/_includes/commands.html +2 -0
- data/docs/_includes/sidebar.html +12 -3
- 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 +2 -1
- data/docs/img/logos/kubes-white.png +0 -0
- data/docs/index.html +2 -2
- data/lib/kubes/cli.rb +5 -0
- data/lib/kubes/cli/exec.rb +2 -1
- data/lib/kubes/cli/get.rb +2 -1
- data/lib/kubes/cli/help/exec.md +13 -6
- data/lib/kubes/cli/init.rb +34 -2
- data/lib/kubes/cli/logs.rb +27 -2
- data/lib/kubes/compiler/dsl/syntax/deployment.rb +13 -0
- data/lib/kubes/kubectl/fetch/base.rb +1 -1
- data/lib/kubes/kubectl/fetch/deployment.rb +13 -2
- 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
- metadata +8 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d239ce306b5a9eea427cab3ec5ca5f753f0eae3d1822fce65017c23172779562
|
4
|
+
data.tar.gz: 3d97c8d85e6f5bfd02babaf14140f186ebd22c3981fa8eed76ddcdbe7f24958d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 74b0ad9bc27e15f1b8742d26f6b2c09e11e990a69623a7e0b54d12565dc08e3dec5d0c640bfd4f5457aa09f0069c0010a78d39dedc18bd9a2223ebdb34be9c31
|
7
|
+
data.tar.gz: 7f3508f0d3650677a48f1f0069f71b1801ddd0a760f052f725a81f564fd144b6eecbd8c08e79fd2e9ec571a0ada2308d4f84bdfbc6971f66a80a20eec8ffbaae
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,22 @@
|
|
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.3.5]
|
7
|
+
- #25 small fixes: show pod and fetch items nil
|
8
|
+
|
9
|
+
## [0.3.4]
|
10
|
+
- #24 fix namespace newline and logs for single container
|
11
|
+
- #23 init namespace option
|
12
|
+
|
13
|
+
## [0.3.3]
|
14
|
+
- #22 logs -c option. fix kubes logs for pods with multiple containers
|
15
|
+
|
16
|
+
## [0.3.2]
|
17
|
+
- #21 add namespace to logs command
|
18
|
+
|
19
|
+
## [0.3.1]
|
20
|
+
- #20 improve sidecar support. kubes exec -c option also
|
21
|
+
|
6
22
|
## [0.3.0]
|
7
23
|
- #19 new commands: exec, logs
|
8
24
|
- delete preview
|
data/docs/_config.yml
CHANGED
@@ -9,7 +9,7 @@ meta_author: Tung Nguyen
|
|
9
9
|
|
10
10
|
# Google webmaster tools
|
11
11
|
google_verify:
|
12
|
-
google_analytics: "
|
12
|
+
google_analytics: "UA-98684555-14"
|
13
13
|
|
14
14
|
# https://ssl.bing.com/webmaster/configure/verify/ownership Option 2 content= goes here
|
15
15
|
bing_verify:
|
data/docs/_docs/ci/cloudbuild.md
CHANGED
data/docs/_docs/config/env.md
CHANGED
@@ -1,61 +1,10 @@
|
|
1
1
|
---
|
2
|
-
title: Kubectl
|
2
|
+
title: Kubectl Customizations
|
3
3
|
---
|
4
4
|
|
5
5
|
## General
|
6
6
|
|
7
7
|
Kubes calls out the `kubectl` command. You can customize the command.
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
Here are some examples of customizing the kubectl args.
|
12
|
-
|
13
|
-
.kubes/config/kubectl/args.rb
|
14
|
-
|
15
|
-
```ruby
|
16
|
-
command("apply",
|
17
|
-
args: ["--validate=true"],
|
18
|
-
)
|
19
|
-
|
20
|
-
command("delete",
|
21
|
-
args: ["--grace-period=-1"],
|
22
|
-
)
|
23
|
-
```
|
24
|
-
|
25
|
-
## Hooks
|
26
|
-
|
27
|
-
Here are some examples of running custom hooks before and after the kubectl commands.
|
28
|
-
|
29
|
-
.kubes/config/kubectl/hooks.rb
|
30
|
-
|
31
|
-
```ruby
|
32
|
-
before("apply",
|
33
|
-
execute: "kubectl apply -f .kubes/shared/namespace.yaml",
|
34
|
-
)
|
35
|
-
|
36
|
-
after("delete",
|
37
|
-
execute: "echo 'delete hook',
|
38
|
-
)
|
39
|
-
```
|
40
|
-
|
41
|
-
You can use hooks to do things that may not make sense to do in the `.kubes/resources` definition. Here's an example of automatically creating the namespace.
|
42
|
-
|
43
|
-
.kubes/shared/namespace.yaml
|
44
|
-
|
45
|
-
```yaml
|
46
|
-
apiVersion: v1
|
47
|
-
kind: Namespace
|
48
|
-
metadata:
|
49
|
-
name: demo
|
50
|
-
```
|
51
|
-
|
52
|
-
### exit on fail
|
53
|
-
|
54
|
-
By default, if the hook commands fail, then terraspace will exit with the original hook error code. You can change this behavior with the `exit_on_fail` option.
|
55
|
-
|
56
|
-
```ruby
|
57
|
-
before("apply"
|
58
|
-
execute: "/command/will/fail/but/will/continue",
|
59
|
-
exit_on_fail: false,
|
60
|
-
)
|
61
|
-
```
|
9
|
+
* [Args]({% link _docs/config/kubectl/args.md %}): Customize the CLI args.
|
10
|
+
* [Hooks]({% link _docs/config/kubectl/hooks.md %}): Run hooks before and after the kubectl commands.
|
@@ -0,0 +1,17 @@
|
|
1
|
+
---
|
2
|
+
title: Kubectl Args
|
3
|
+
---
|
4
|
+
|
5
|
+
Here are some examples of customizing the kubectl args.
|
6
|
+
|
7
|
+
.kubes/config/kubectl/args.rb
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
command("apply",
|
11
|
+
args: ["--validate=true"],
|
12
|
+
)
|
13
|
+
|
14
|
+
command("delete",
|
15
|
+
args: ["--grace-period=-1"],
|
16
|
+
)
|
17
|
+
```
|
@@ -0,0 +1,39 @@
|
|
1
|
+
---
|
2
|
+
title: Kubectl Hooks
|
3
|
+
---
|
4
|
+
|
5
|
+
Here are some examples of running custom hooks before and after the kubectl commands.
|
6
|
+
|
7
|
+
.kubes/config/kubectl/hooks.rb
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
before("apply",
|
11
|
+
execute: "kubectl apply -f .kubes/shared/namespace.yaml",
|
12
|
+
)
|
13
|
+
|
14
|
+
after("delete",
|
15
|
+
execute: "echo 'delete hook',
|
16
|
+
)
|
17
|
+
```
|
18
|
+
|
19
|
+
You can use hooks to do things that may not make sense to do in the `.kubes/resources` definition. Here's an example of automatically creating the namespace.
|
20
|
+
|
21
|
+
.kubes/shared/namespace.yaml
|
22
|
+
|
23
|
+
```yaml
|
24
|
+
apiVersion: v1
|
25
|
+
kind: Namespace
|
26
|
+
metadata:
|
27
|
+
name: demo
|
28
|
+
```
|
29
|
+
|
30
|
+
### exit on fail
|
31
|
+
|
32
|
+
By default, if the hook commands fail, then terraspace will exit with the original hook error code. You can change this behavior with the `exit_on_fail` option.
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
before("apply"
|
36
|
+
execute: "/command/will/fail/but/will/continue",
|
37
|
+
exit_on_fail: false,
|
38
|
+
)
|
39
|
+
```
|
@@ -3,7 +3,7 @@ title: BackendConfig
|
|
3
3
|
categories: dsl
|
4
4
|
---
|
5
5
|
|
6
|
-
A BackendConfig is [custom resource definitions (CRDs)](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) that allow you to further customize the load balancer.
|
6
|
+
A [BackendConfig](https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#create_backendconfig) is [custom resource definitions (CRDs)](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) that allow you to further customize the load balancer.
|
7
7
|
|
8
8
|
Here's an example of a BackendConfig.
|
9
9
|
|
data/docs/_docs/intro.md
CHANGED
@@ -9,7 +9,8 @@ title: What is Kubes?
|
|
9
9
|
* Automation: [Builds the Docker image]({% link _docs/config/docker.md %}) and updates the compiled YAML files
|
10
10
|
* 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.
|
11
11
|
* Layering: Use the same Kubernetes YAML to build multiple environments like dev and prod with [layering]({% link _docs/layering.md %}).
|
12
|
-
* CLI Customizations: You can customize the [cli args]({% link _docs/config/kubectl.md %}). You can also run hooks before and after kubectl commands.
|
12
|
+
* CLI Customizations: You can customize the [cli args]({% link _docs/config/kubectl/args.md %}). You can also run [hooks]({% link _docs/config/kubectl/hooks.md %}) before and after kubectl commands.
|
13
13
|
* 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.
|
14
|
-
* Kustomize Support: If you’re a kustomization user, you can use it with Kubes. More details in [Kustomize Support Docs]({% link _docs/kustomize.md %}).
|
15
|
-
* 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/auto-context.md %}).
|
14
|
+
* 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 %}).
|
15
|
+
* 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 %}).
|
16
|
+
* 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 %}).
|
@@ -11,7 +11,6 @@ If you already a project with an existing Dockerfile, you can use that. If you d
|
|
11
11
|
|
12
12
|
Let's generate a starter project:
|
13
13
|
|
14
|
-
$ REPO=$(aws ecr describe-repositories --repository-name demo | jq -r '.repositories[].repositoryUri')
|
15
14
|
$ kubes init --app demo --repo $REPO
|
16
15
|
create Dockerfile
|
17
16
|
create .kubes/config.rb
|
File without changes
|
File without changes
|
@@ -0,0 +1,21 @@
|
|
1
|
+
---
|
2
|
+
title: Separate Steps
|
3
|
+
---
|
4
|
+
|
5
|
+
Sometimes you may want to run the 3 separate kubes steps directly. This may be useful if you are setting up CI/CD and need more control over the build process. Here are the 3 main steps:
|
6
|
+
|
7
|
+
To build and push the docker image:
|
8
|
+
|
9
|
+
kubes docker build
|
10
|
+
kubes docker push
|
11
|
+
|
12
|
+
Note, you must run a `kubes docker build` at least once. As the build step will store the image name in a `.kubes/state/docker_image.txt ` file for later use.
|
13
|
+
|
14
|
+
To compile the Kubernetes YAML files.
|
15
|
+
|
16
|
+
kubes compile
|
17
|
+
|
18
|
+
To apply the Kubernetes YAML files in the correct order and create resources on the cluster:
|
19
|
+
|
20
|
+
kubes apply
|
21
|
+
|
data/docs/_includes/sidebar.html
CHANGED
@@ -55,7 +55,12 @@
|
|
55
55
|
<ul>
|
56
56
|
<li><a href="{% link _docs/config/docker.md %}">Docker</a></li>
|
57
57
|
<li><a href="{% link _docs/config/env.md %}">Env</a></li>
|
58
|
-
<li><a href="{% link _docs/config/kubectl.md %}">Kubectl</a
|
58
|
+
<li><a href="{% link _docs/config/kubectl.md %}">Kubectl</a>
|
59
|
+
<ul>
|
60
|
+
<li><a href="{% link _docs/config/kubectl/args.md %}">Args</a></li>
|
61
|
+
<li><a href="{% link _docs/config/kubectl/hooks.md %}">Hooks</a></li>
|
62
|
+
</ul>
|
63
|
+
</li>
|
59
64
|
<li><a href="{% link _docs/config/builder.md %}">Builder</a></li>
|
60
65
|
</ul>
|
61
66
|
</li>
|
@@ -92,8 +97,12 @@
|
|
92
97
|
<li><a href="{% link _docs/extra-env/dsl.md %}">DSL</a></li>
|
93
98
|
</ul>
|
94
99
|
</li>
|
95
|
-
<li
|
96
|
-
|
100
|
+
<li>Misc
|
101
|
+
<ul>
|
102
|
+
<li><a href="{% link _docs/misc/kustomize.md %}">Kustomize Support</a></li>
|
103
|
+
<li><a href="{% link _docs/misc/separate-steps.md %}">Separate Steps</a></li>
|
104
|
+
<li><a href="{% link _docs/misc/auto-context.md %}">Auto Context</a></li>
|
105
|
+
</ul>
|
97
106
|
<li>CI/CD
|
98
107
|
<ul>
|
99
108
|
<li><a href="{% link _docs/ci/cloudbuild.md %}">CloudBuild</a></li>
|
@@ -21,13 +21,20 @@ The exec command finds the latest pod from the deployment and runs `kubectl exec
|
|
21
21
|
|
22
22
|
## Multiple Deployments
|
23
23
|
|
24
|
-
If you have have multiple deployments in your
|
24
|
+
If you have have multiple deployments in your `.kubes/resources` then the command will use the first deployment by default. You can specify the specfic deployment with the `--name` or `-n` option. Examples:
|
25
25
|
|
26
|
-
kubes exec --name
|
27
|
-
kubes exec
|
28
|
-
kubes exec
|
29
|
-
kubes exec
|
30
|
-
kubes exec
|
26
|
+
kubes exec --name web
|
27
|
+
kubes exec -n web
|
28
|
+
kubes exec -n clock
|
29
|
+
kubes exec -n worker
|
30
|
+
kubes exec -n web sh
|
31
|
+
kubes exec -n web ls -l
|
32
|
+
|
33
|
+
## Multiple Pod Containers
|
34
|
+
|
35
|
+
If you have have multiple containers in your pod. You can specify the specfic container with the `--container` or `-c` option. Examples:
|
36
|
+
|
37
|
+
kubes exec --name web
|
31
38
|
|
32
39
|
|
33
40
|
## Options
|
@@ -36,6 +43,7 @@ If you have have multiple deployments in your ``.kubes/resources` then the comma
|
|
36
43
|
[--compile], [--no-compile] # whether or not to compile the .kube/resources
|
37
44
|
# Default: true
|
38
45
|
n, [--name=NAME] # deployment name to use. IE: demo-web
|
46
|
+
c, [--container=CONTAINER] # Container name. If omitted, the first container in the pod will be chosen
|
39
47
|
[--verbose], [--no-verbose]
|
40
48
|
[--noop], [--no-noop]
|
41
49
|
```
|
@@ -20,6 +20,7 @@ a, --app=APP # Docker repo name. Example: web. Generates .ku
|
|
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 the app option
|
23
24
|
[--verbose], [--no-verbose]
|
24
25
|
[--noop], [--no-noop]
|
25
26
|
```
|
@@ -18,6 +18,7 @@ logs from all deployment pods
|
|
18
18
|
[--compile], [--no-compile] # whether or not to compile the .kube/resources
|
19
19
|
# Default: true
|
20
20
|
n, [--name=NAME] # deployment name to use. IE: demo-web
|
21
|
+
c, [--container=CONTAINER] # Container name. If omitted, the first container in the pod will be chosen
|
21
22
|
f, [--follow], [--no-follow] # Follow logs
|
22
23
|
# Default: true
|
23
24
|
[--verbose], [--no-verbose]
|
data/docs/_sass/theme.scss
CHANGED
@@ -13,12 +13,13 @@
|
|
13
13
|
margin: auto;
|
14
14
|
text-align: center;
|
15
15
|
display: block;
|
16
|
+
width: 80%;
|
16
17
|
padding-bottom: 30px;
|
17
18
|
|
18
19
|
@media (min-width: 575px) {
|
19
20
|
position: absolute;
|
20
21
|
top: 50%;
|
21
|
-
|
22
|
+
width: 100%;
|
22
23
|
margin: 0;
|
23
24
|
transform: translateY(-50%);
|
24
25
|
}
|
Binary file
|
data/docs/index.html
CHANGED
@@ -9,13 +9,13 @@ sidebar: false
|
|
9
9
|
<div class="col-sm-8 col-sm-offset-2">
|
10
10
|
<div class="header-content">
|
11
11
|
<div class="header-content-inner">
|
12
|
-
<h1>Kubes</h1>
|
12
|
+
<h1>Kubes: Kubernetes Deployment Tool</h1>
|
13
13
|
<h2>Kubes is a Kubernetes Deployment Tool. It builds the docker image, creates the Kubernetes YAML, and runs kubectl apply. It automates the deployment process and saves you precious finger-typing energy.</h2>
|
14
14
|
</div>
|
15
15
|
</div>
|
16
16
|
</div>
|
17
17
|
<div class="col-sm-4">
|
18
|
-
<img src="/img/logos/kubes-
|
18
|
+
<img src="/img/logos/kubes-white.png" class="homepage-logo" />
|
19
19
|
</div>
|
20
20
|
</div>
|
21
21
|
</div>
|
data/lib/kubes/cli.rb
CHANGED
@@ -12,6 +12,9 @@ module Kubes
|
|
12
12
|
name_option = Proc.new {
|
13
13
|
option :name, aliases: %w[n], desc: "deployment name to use. IE: demo-web"
|
14
14
|
}
|
15
|
+
container_option = Proc.new {
|
16
|
+
option :container, aliases: %w[c], desc: "Container name. If omitted, the first container in the pod will be chosen"
|
17
|
+
}
|
15
18
|
|
16
19
|
desc "docker SUBCOMMAND", "Docker subcommands"
|
17
20
|
long_desc Help.text(:docker)
|
@@ -67,6 +70,7 @@ module Kubes
|
|
67
70
|
long_desc Help.text(:exec)
|
68
71
|
compile_option.call
|
69
72
|
name_option.call
|
73
|
+
container_option.call
|
70
74
|
def exec(*cmd)
|
71
75
|
Exec.new(options.merge(cmd: cmd)).run
|
72
76
|
end
|
@@ -85,6 +89,7 @@ module Kubes
|
|
85
89
|
long_desc Help.text(:logs)
|
86
90
|
compile_option.call
|
87
91
|
name_option.call
|
92
|
+
container_option.call
|
88
93
|
option :follow, aliases: %w[f], type: :boolean, default: true, desc: "Follow logs"
|
89
94
|
def logs(*cmd)
|
90
95
|
Logs.new(options.merge(cmd: cmd)).run
|
data/lib/kubes/cli/exec.rb
CHANGED
@@ -19,8 +19,9 @@ class Kubes::CLI
|
|
19
19
|
end
|
20
20
|
|
21
21
|
name = pod['metadata']['name']
|
22
|
+
container = " -c #{@options[:container]}" unless @options[:container].nil?
|
22
23
|
cmd = @options[:cmd].empty? ? "bash" : @options[:cmd].join(' ')
|
23
|
-
sh("kubectl exec -n #{ns} -ti #{name} -- #{cmd}")
|
24
|
+
sh("kubectl exec -n #{ns} -ti #{name}#{container} -- #{cmd}")
|
24
25
|
end
|
25
26
|
|
26
27
|
# get latest running pod
|
data/lib/kubes/cli/get.rb
CHANGED
data/lib/kubes/cli/help/exec.md
CHANGED
@@ -8,10 +8,17 @@ The exec command finds the latest pod from the deployment and runs `kubectl exec
|
|
8
8
|
|
9
9
|
## Multiple Deployments
|
10
10
|
|
11
|
-
If you have have multiple deployments in your
|
11
|
+
If you have have multiple deployments in your `.kubes/resources` then the command will use the first deployment by default. You can specify the specfic deployment with the `--name` or `-n` option. Examples:
|
12
12
|
|
13
|
-
kubes exec --name
|
14
|
-
kubes exec
|
15
|
-
kubes exec
|
16
|
-
kubes exec
|
17
|
-
kubes exec
|
13
|
+
kubes exec --name web
|
14
|
+
kubes exec -n web
|
15
|
+
kubes exec -n clock
|
16
|
+
kubes exec -n worker
|
17
|
+
kubes exec -n web sh
|
18
|
+
kubes exec -n web ls -l
|
19
|
+
|
20
|
+
## Multiple Pod Containers
|
21
|
+
|
22
|
+
If you have have multiple containers in your pod. You can specify the specfic container with the `--container` or `-c` option. Examples:
|
23
|
+
|
24
|
+
kubes exec --name web
|
data/lib/kubes/cli/init.rb
CHANGED
@@ -6,6 +6,7 @@ class Kubes::CLI
|
|
6
6
|
[:force, type: :boolean, desc: "Bypass overwrite are you sure prompt for existing files"],
|
7
7
|
[:type, aliases: ["t"], default: "yaml", desc: "Type: dsl or yaml"],
|
8
8
|
[:repo, required: true, desc: "Docker repo name. Example: user/repo. Configures .kubes/config.rb"],
|
9
|
+
[:namespace, aliases: ["n"], desc: "Namespace to use, defaults to the app option"],
|
9
10
|
]
|
10
11
|
end
|
11
12
|
|
@@ -17,6 +18,37 @@ class Kubes::CLI
|
|
17
18
|
@options[:app]
|
18
19
|
end
|
19
20
|
|
21
|
+
def namespace
|
22
|
+
@options[:namespace] || @options[:app]
|
23
|
+
end
|
24
|
+
|
25
|
+
def excludes
|
26
|
+
if namespace == "default"
|
27
|
+
case options[:type]
|
28
|
+
when "dsl"
|
29
|
+
%w[
|
30
|
+
namespace.rb.tt
|
31
|
+
]
|
32
|
+
else
|
33
|
+
%w[
|
34
|
+
all.yaml.tt
|
35
|
+
namespace.yaml.tt
|
36
|
+
]
|
37
|
+
end
|
38
|
+
else
|
39
|
+
[]
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def directory_options
|
44
|
+
if excludes.empty?
|
45
|
+
{}
|
46
|
+
else
|
47
|
+
pattern = Regexp.new(excludes.join('|'))
|
48
|
+
{exclude_pattern: pattern }
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
20
52
|
public
|
21
53
|
def create_dockefile
|
22
54
|
return if File.exist?("Dockerfile")
|
@@ -32,13 +64,13 @@ class Kubes::CLI
|
|
32
64
|
def create_dsl_files
|
33
65
|
return unless @options[:type] == "dsl"
|
34
66
|
set_source("dsl")
|
35
|
-
directory ".", "."
|
67
|
+
directory ".", ".", directory_options
|
36
68
|
end
|
37
69
|
|
38
70
|
def create_yaml_files
|
39
71
|
return if @options[:type] == "dsl"
|
40
72
|
set_source("yaml")
|
41
|
-
directory ".", "."
|
73
|
+
directory ".", ".", directory_options
|
42
74
|
end
|
43
75
|
|
44
76
|
def message
|
data/lib/kubes/cli/logs.rb
CHANGED
@@ -4,10 +4,35 @@ class Kubes::CLI
|
|
4
4
|
|
5
5
|
def run
|
6
6
|
compile
|
7
|
-
|
7
|
+
deployment = Kubes::Kubectl::Fetch::Deployment.new(@options)
|
8
|
+
metadata = deployment.metadata
|
8
9
|
name = metadata['name']
|
10
|
+
ns = metadata['namespace']
|
11
|
+
|
9
12
|
follow = " -f" if @options[:follow]
|
10
|
-
|
13
|
+
container = container(deployment)
|
14
|
+
c = " -c #{container}" if container
|
15
|
+
sh("kubectl logs deployment/#{name}#{follow} -n #{ns}#{c}")
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
def container(deployment)
|
20
|
+
container = @options[:container]
|
21
|
+
return container if container
|
22
|
+
|
23
|
+
spec = deployment.spec
|
24
|
+
containers = spec['template']['spec']['containers']
|
25
|
+
names = containers.map { |c| c['name'] }
|
26
|
+
if containers.size > 1
|
27
|
+
logger.info <<~EOL
|
28
|
+
INFO: More than one container found.
|
29
|
+
Container names: #{names.join(', ')}
|
30
|
+
Using #{names.first}
|
31
|
+
Note: You can specify the container to use with --container or -c
|
32
|
+
EOL
|
33
|
+
|
34
|
+
names.first
|
35
|
+
end
|
11
36
|
end
|
12
37
|
end
|
13
38
|
end
|
@@ -3,6 +3,8 @@ module Kubes::Compiler::Dsl::Syntax
|
|
3
3
|
fields :container, # <Object>
|
4
4
|
"matchLabels:hash", # <map[string]string>
|
5
5
|
:sidecar, # <Object>
|
6
|
+
:sidecar_name, # <string>
|
7
|
+
:sidecar_image, # <string>
|
6
8
|
:templateMetadata, # <Object>
|
7
9
|
:templateSpec # <Object>
|
8
10
|
|
@@ -185,6 +187,17 @@ module Kubes::Compiler::Dsl::Syntax
|
|
185
187
|
[container, sidecar].compact
|
186
188
|
end
|
187
189
|
|
190
|
+
def default_sidecar
|
191
|
+
{
|
192
|
+
name: sidecar_name,
|
193
|
+
image: sidecar_image,
|
194
|
+
}
|
195
|
+
end
|
196
|
+
|
197
|
+
def default_sidecar_name
|
198
|
+
"sidecar" if sidecar_image # othewise will create invalid sidecar field w/o image
|
199
|
+
end
|
200
|
+
|
188
201
|
def default_container
|
189
202
|
{
|
190
203
|
args: args,
|
@@ -18,7 +18,7 @@ module Kubes::Kubectl::Fetch
|
|
18
18
|
kubectl = Kubes::Kubectl.new(:get, @options.merge(o)) # kubes get -f .kubes/output
|
19
19
|
resp = kubectl.run
|
20
20
|
data = JSON.load(resp)
|
21
|
-
data['items']
|
21
|
+
data['items'] || [] # Note: When fetching only 1 resource, items is not part of structure
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -1,6 +1,16 @@
|
|
1
1
|
module Kubes::Kubectl::Fetch
|
2
2
|
class Deployment < Base
|
3
|
+
extend Memoist
|
4
|
+
|
3
5
|
def metadata
|
6
|
+
deployment['metadata']
|
7
|
+
end
|
8
|
+
|
9
|
+
def spec
|
10
|
+
deployment['spec']
|
11
|
+
end
|
12
|
+
|
13
|
+
def deployment
|
4
14
|
items = fetch_items
|
5
15
|
# Not checking if deployment exists because kubes will error on `kubes get` from missing deployments already
|
6
16
|
deployments = items.select { |i| i['kind'] == "Deployment" }
|
@@ -11,7 +21,7 @@ module Kubes::Kubectl::Fetch
|
|
11
21
|
INFO: More than one deployment found.
|
12
22
|
Deployment names: #{names.join(', ')}
|
13
23
|
Using #{names.first}
|
14
|
-
Note: You can specify the deployment to use with --name
|
24
|
+
Note: You can specify the deployment to use with --name or -n
|
15
25
|
EOL
|
16
26
|
end
|
17
27
|
|
@@ -20,8 +30,9 @@ module Kubes::Kubectl::Fetch
|
|
20
30
|
logger.error "ERROR: No deployment found".color(:red)
|
21
31
|
exit 1
|
22
32
|
end
|
23
|
-
deployment
|
33
|
+
deployment
|
24
34
|
end
|
35
|
+
memoize :deployment
|
25
36
|
|
26
37
|
def find_deployment(deployments)
|
27
38
|
if @options[:name]
|
data/lib/kubes/version.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
name "<%=
|
1
|
+
name "<%= namespace %>"
|
2
2
|
labels(app: "<%= app %>")
|
@@ -1,7 +1,7 @@
|
|
1
1
|
name "web"
|
2
2
|
labels(role: "web")
|
3
3
|
|
4
|
-
replicas 1
|
4
|
+
replicas 1 # overridden on a env basis
|
5
5
|
image built_image # IE: user/<%= app %>:kubes-2020-06-13T19-55-16-43afc6e
|
6
6
|
|
7
7
|
# revisionHistoryLimit 1 # uncomment to reduce old ReplicaSets, default is 10 https://bit.ly/3hqrzyP
|
@@ -1,2 +1,2 @@
|
|
1
1
|
metadata:
|
2
|
-
namespace: <%=
|
2
|
+
namespace: <%= namespace %>
|
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.3.
|
4
|
+
version: 0.3.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tung Nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-08-
|
11
|
+
date: 2020-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -232,13 +232,14 @@ files:
|
|
232
232
|
- docs/README.md
|
233
233
|
- docs/Rakefile
|
234
234
|
- docs/_config.yml
|
235
|
-
- docs/_docs/auto-context.md
|
236
235
|
- docs/_docs/ci/cloudbuild.md
|
237
236
|
- docs/_docs/config.md
|
238
237
|
- docs/_docs/config/builder.md
|
239
238
|
- docs/_docs/config/docker.md
|
240
239
|
- docs/_docs/config/env.md
|
241
240
|
- docs/_docs/config/kubectl.md
|
241
|
+
- docs/_docs/config/kubectl/args.md
|
242
|
+
- docs/_docs/config/kubectl/hooks.md
|
242
243
|
- docs/_docs/contributing.md
|
243
244
|
- docs/_docs/dsl.md
|
244
245
|
- docs/_docs/dsl/multiple-resources.md
|
@@ -269,7 +270,6 @@ files:
|
|
269
270
|
- docs/_docs/intro/ordering.md
|
270
271
|
- docs/_docs/intro/ordering/custom.md
|
271
272
|
- docs/_docs/intro/structure.md
|
272
|
-
- docs/_docs/kustomize.md
|
273
273
|
- docs/_docs/layering.md
|
274
274
|
- docs/_docs/layering/dsl.md
|
275
275
|
- docs/_docs/layering/merge.md
|
@@ -294,6 +294,9 @@ files:
|
|
294
294
|
- docs/_docs/learn/yaml/next-steps.md
|
295
295
|
- docs/_docs/learn/yaml/review-project.md
|
296
296
|
- docs/_docs/learn/yaml/update.md
|
297
|
+
- docs/_docs/misc/auto-context.md
|
298
|
+
- docs/_docs/misc/kustomize.md
|
299
|
+
- docs/_docs/misc/separate-steps.md
|
297
300
|
- docs/_docs/next-steps.md
|
298
301
|
- docs/_docs/patterns.md
|
299
302
|
- docs/_docs/patterns/clock-web-worker.md
|
@@ -366,6 +369,7 @@ files:
|
|
366
369
|
- docs/img/logos/filler-logo.png
|
367
370
|
- docs/img/logos/kubes-black.png
|
368
371
|
- docs/img/logos/kubes-sign.png
|
372
|
+
- docs/img/logos/kubes-white.png
|
369
373
|
- docs/index.html
|
370
374
|
- docs/js/app.js
|
371
375
|
- docs/opal/app.rb
|