kubes 0.4.6 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +28 -0
- data/README.md +54 -1
- data/docs/_docs/config/reference.md +1 -0
- data/docs/_docs/config/skip.md +1 -1
- data/docs/_docs/dsl/multiple-resources.md +3 -3
- 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.md +1 -0
- 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.md +1 -1
- data/docs/_docs/helpers/google/advanced.md +10 -0
- data/docs/_docs/helpers/google/advanced/secrets.md +78 -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/patterns/secrets.md +0 -2
- 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/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/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 +1 -1
- data/lib/kubes/core.rb +6 -0
- data/lib/kubes/docker/strategy/image_name.rb +1 -1
- data/lib/kubes/kubectl.rb +5 -23
- data/lib/kubes/kubectl/batch.rb +27 -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 +97 -25
@@ -35,5 +35,47 @@ class Kubes::Kubectl
|
|
35
35
|
i = index.to_s.rjust(3, "0") # pad with 0
|
36
36
|
"#{i}-#{value}" # append name so that terms with same index get order alphabetically
|
37
37
|
end
|
38
|
+
|
39
|
+
# kubes apply # {role: nil, resource: nil}
|
40
|
+
# kubes apply clock # {role: "clock", resource: nil}
|
41
|
+
# kubes apply clock deployment # {role: "clock", resource: "deployment"}
|
42
|
+
def search_expr
|
43
|
+
role, resource = @options[:role], @options[:resource]
|
44
|
+
if role && resource
|
45
|
+
"#{Kubes.root}/.kubes/output/#{role}/#{resource}.yaml"
|
46
|
+
elsif role
|
47
|
+
"#{Kubes.root}/.kubes/output/#{role}/*.yaml"
|
48
|
+
else
|
49
|
+
"#{Kubes.root}/.kubes/output/**/*.yaml"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def files
|
54
|
+
files = []
|
55
|
+
Dir.glob(search_expr).each do |path|
|
56
|
+
next unless process?(path)
|
57
|
+
file = path.sub("#{Kubes.root}/", '')
|
58
|
+
files << file
|
59
|
+
end
|
60
|
+
files
|
61
|
+
end
|
62
|
+
|
63
|
+
# Only considering files 2 layers deep. So:
|
64
|
+
#
|
65
|
+
# Yes = web/deployment.yaml
|
66
|
+
# No = web/deployment/dev.yaml
|
67
|
+
#
|
68
|
+
def process?(path)
|
69
|
+
if Kubes.kustomize?
|
70
|
+
File.file?(path)
|
71
|
+
else
|
72
|
+
consider?(path) && two_levels_deep?(path)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def two_levels_deep?(path)
|
77
|
+
rel_path = path.sub(%r{.*\.kubes/(resources|output)/},'')
|
78
|
+
rel_path.split('/').size == 2
|
79
|
+
end
|
38
80
|
end
|
39
81
|
end
|
data/lib/kubes/plugin.rb
ADDED
data/lib/kubes/util/sh.rb
CHANGED
@@ -32,7 +32,7 @@ module Kubes::Util
|
|
32
32
|
|
33
33
|
def sh_capture(command, options={})
|
34
34
|
exit_on_fail = options[:exit_on_fail].nil? ? true : options[:exit_on_fail]
|
35
|
-
logger.
|
35
|
+
logger.debug "=> #{command}"
|
36
36
|
out = `#{command}`.strip
|
37
37
|
unless $?.success?
|
38
38
|
logger.error "ERROR: running #{command}".color(:red)
|
data/lib/kubes/version.rb
CHANGED
@@ -2,7 +2,7 @@ Kubes.configure do |config|
|
|
2
2
|
config.repo = "<%= @options[:repo] %>"
|
3
3
|
config.logger.level = "info"
|
4
4
|
# auto-switching
|
5
|
-
# config.kubectl.context = "dev-
|
5
|
+
# config.kubectl.context = "dev-cluster"
|
6
6
|
# config.kubectl.context_keep = true # keep context after switching
|
7
7
|
# config.kubectl.exit_on_fail_for_apply = true # whether or not continue if the kubectl command fails
|
8
8
|
# config.kubectl.exit_on_fail_for_delete = false # whether or not continue if the kubectl command fails
|
@@ -2,7 +2,7 @@ name "web"
|
|
2
2
|
labels(role: "web")
|
3
3
|
|
4
4
|
replicas 1 # overridden on a env basis
|
5
|
-
image
|
5
|
+
image docker_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
|
8
8
|
# maxUnavailable 25
|
@@ -0,0 +1 @@
|
|
1
|
+
name "<%= app %>"
|
@@ -0,0 +1,19 @@
|
|
1
|
+
apiVersion: apps/v1
|
2
|
+
kind: Deployment
|
3
|
+
metadata:
|
4
|
+
name: <%= role %>
|
5
|
+
labels:
|
6
|
+
role: <%= role %>
|
7
|
+
spec:
|
8
|
+
replicas: 1 # overridden on a env basis
|
9
|
+
selector:
|
10
|
+
matchLabels:
|
11
|
+
role: <%= role %>
|
12
|
+
template:
|
13
|
+
metadata:
|
14
|
+
labels:
|
15
|
+
role: <%= role %>
|
16
|
+
spec:
|
17
|
+
containers:
|
18
|
+
- name: <%= role %>
|
19
|
+
image: <%%= docker_image %>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
apiVersion: batch/v1
|
2
|
+
kind: Job
|
3
|
+
metadata:
|
4
|
+
name: <%= app %>
|
5
|
+
spec:
|
6
|
+
template:
|
7
|
+
spec:
|
8
|
+
restartPolicy: Never
|
9
|
+
serviceAccountName: <%= app %>
|
10
|
+
containers:
|
11
|
+
- name: <%= app %>
|
12
|
+
image: <%%= docker_image %>
|
13
|
+
command: ["uptime"] # IE: ["bin/job/migrate.sh"]
|
14
|
+
# envFrom:
|
15
|
+
# - secretRef:
|
16
|
+
# name: <%= app %>
|
17
|
+
# - configMapRef:
|
18
|
+
# name: <%= app %>
|
19
|
+
backoffLimit: 1
|
@@ -0,0 +1,20 @@
|
|
1
|
+
apiVersion: networking.k8s.io/v1
|
2
|
+
kind: NetworkPolicy
|
3
|
+
metadata:
|
4
|
+
name: <%= role %>
|
5
|
+
labels:
|
6
|
+
app: <%= app %> # IE: backend
|
7
|
+
namespace: <%= app %> # IE: backend
|
8
|
+
spec:
|
9
|
+
podSelector:
|
10
|
+
matchLabels:
|
11
|
+
app: <%= app %> # IE: backend
|
12
|
+
role: <%= role %>
|
13
|
+
ingress:
|
14
|
+
- from:
|
15
|
+
- namespaceSelector:
|
16
|
+
matchLabels:
|
17
|
+
app: <%= app %> # IE: frontend
|
18
|
+
- podSelector:
|
19
|
+
matchLabels:
|
20
|
+
app: <%= app %> # IE: backend
|
@@ -0,0 +1 @@
|
|
1
|
+
@example = "<%= Kubes.env %>-value"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|