kubes 0.4.6 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (159) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +28 -0
  3. data/README.md +54 -1
  4. data/docs/_docs/config/reference.md +1 -0
  5. data/docs/_docs/config/skip.md +1 -1
  6. data/docs/_docs/dsl/multiple-resources.md +3 -3
  7. data/docs/_docs/dsl/resources/job.md +62 -0
  8. data/docs/_docs/dsl/resources/secret.md +19 -2
  9. data/docs/_docs/extra-env/dsl.md +2 -2
  10. data/docs/_docs/extra-env/yaml.md +1 -1
  11. data/docs/_docs/generators.md +41 -0
  12. data/docs/_docs/helpers.md +17 -3
  13. data/docs/_docs/helpers/aws.md +1 -0
  14. data/docs/_docs/helpers/aws/advanced.md +10 -0
  15. data/docs/_docs/helpers/aws/advanced/secrets.md +131 -0
  16. data/docs/_docs/helpers/aws/advanced/ssm.md +78 -0
  17. data/docs/_docs/helpers/aws/secrets.md +18 -88
  18. data/docs/_docs/helpers/aws/ssm.md +20 -38
  19. data/docs/_docs/helpers/google.md +1 -1
  20. data/docs/_docs/helpers/google/advanced.md +10 -0
  21. data/docs/_docs/helpers/google/advanced/secrets.md +78 -0
  22. data/docs/_docs/helpers/google/secrets.md +18 -27
  23. data/docs/_docs/helpers/google/service-account.md +8 -0
  24. data/docs/_docs/intro.md +2 -9
  25. data/docs/_docs/intro/docker-image.md +66 -0
  26. data/docs/_docs/intro/how-kubes-works.md +7 -11
  27. data/docs/_docs/layering.md +2 -0
  28. data/docs/_docs/layering/merge.md +1 -1
  29. data/docs/_docs/layering/mix.md +99 -0
  30. data/docs/_docs/learn/dsl/delete.md +10 -2
  31. data/docs/_docs/learn/dsl/review-project.md +2 -2
  32. data/docs/_docs/learn/yaml/delete.md +10 -2
  33. data/docs/_docs/learn/yaml/review-project.md +2 -2
  34. data/docs/_docs/patterns/clock-web-worker.md +3 -3
  35. data/docs/_docs/patterns/migrations.md +1 -1
  36. data/docs/_docs/patterns/multiple-envs.md +55 -0
  37. data/docs/_docs/patterns/secrets.md +0 -2
  38. data/docs/_docs/variables.md +23 -0
  39. data/docs/_docs/variables/advanced.md +62 -0
  40. data/docs/_docs/variables/basic.md +137 -0
  41. data/docs/_docs/vs.md +10 -0
  42. data/docs/_docs/vs/custom.md +109 -0
  43. data/docs/_docs/vs/helm.md +243 -0
  44. data/docs/_docs/vs/kustomize.md +167 -0
  45. data/docs/_docs/yaml.md +2 -2
  46. data/docs/_includes/commands.html +2 -2
  47. data/docs/_includes/intro/features.md +11 -0
  48. data/docs/_includes/layering/layers.md +2 -4
  49. data/docs/_includes/sidebar.html +41 -0
  50. data/docs/_includes/vs/article.md +1 -0
  51. data/docs/_includes/vs/kubes/layering.md +10 -0
  52. data/docs/_includes/vs/kubes/structure.md +24 -0
  53. data/docs/_reference/kubes-delete.md +1 -1
  54. data/docs/_reference/kubes-exec.md +17 -1
  55. data/docs/_reference/kubes-init.md +2 -2
  56. data/docs/_reference/kubes-logs.md +2 -1
  57. data/docs/_reference/kubes-new-help.md +15 -0
  58. data/docs/_reference/kubes-new-helper.md +25 -0
  59. data/docs/_reference/kubes-new-resource.md +56 -0
  60. data/docs/_reference/kubes-new-variable.md +20 -0
  61. data/docs/_reference/kubes-new.md +26 -0
  62. data/docs/_reference/kubes-prune.md +22 -0
  63. data/docs/reference.md +2 -0
  64. data/kubes.gemspec +2 -2
  65. data/lib/kubes.rb +5 -3
  66. data/lib/kubes/auth.rb +4 -1
  67. data/lib/kubes/auth/base.rb +21 -0
  68. data/lib/kubes/auth/ecr.rb +1 -15
  69. data/lib/kubes/auth/gcr.rb +24 -0
  70. data/lib/kubes/cli.rb +9 -1
  71. data/lib/kubes/cli/build.rb +6 -0
  72. data/lib/kubes/cli/compile.rb +7 -0
  73. data/lib/kubes/cli/deploy.rb +1 -6
  74. data/lib/kubes/cli/exec.rb +5 -1
  75. data/lib/kubes/cli/help/exec.md +15 -0
  76. data/lib/kubes/cli/help/new/helper.md +4 -0
  77. data/lib/kubes/cli/help/new/resource.md +30 -0
  78. data/lib/kubes/cli/init.rb +1 -1
  79. data/lib/kubes/cli/new.rb +15 -0
  80. data/lib/kubes/cli/new/helper.rb +24 -0
  81. data/lib/kubes/cli/new/resource.rb +97 -0
  82. data/lib/kubes/cli/new/variable.rb +16 -0
  83. data/lib/kubes/cli/sequence.rb +1 -0
  84. data/lib/kubes/command.rb +7 -0
  85. data/lib/kubes/compiler.rb +19 -21
  86. data/lib/kubes/compiler/decorator/base.rb +1 -1
  87. data/lib/kubes/compiler/dsl/core/base.rb +6 -9
  88. data/lib/kubes/compiler/dsl/syntax/job.rb +217 -0
  89. data/lib/kubes/compiler/layering.rb +21 -7
  90. data/lib/kubes/compiler/shared/custom_variables.rb +38 -0
  91. data/lib/kubes/compiler/shared/helpers.rb +11 -2
  92. data/lib/kubes/compiler/shared/helpers/deprecated.rb +37 -0
  93. data/lib/kubes/compiler/shared/plugin_helpers.rb +14 -0
  94. data/lib/kubes/compiler/strategy.rb +7 -6
  95. data/lib/kubes/compiler/strategy/base.rb +59 -2
  96. data/lib/kubes/compiler/strategy/dsl.rb +0 -29
  97. data/lib/kubes/compiler/strategy/erb.rb +10 -22
  98. data/lib/kubes/compiler/util/normalize.rb +6 -3
  99. data/lib/kubes/compiler/util/yaml_dump.rb +4 -4
  100. data/lib/kubes/config.rb +1 -1
  101. data/lib/kubes/core.rb +6 -0
  102. data/lib/kubes/docker/strategy/image_name.rb +1 -1
  103. data/lib/kubes/kubectl.rb +5 -23
  104. data/lib/kubes/kubectl/batch.rb +27 -33
  105. data/lib/kubes/kubectl/ordering.rb +42 -0
  106. data/lib/kubes/plugin.rb +14 -0
  107. data/lib/kubes/util/sh.rb +1 -1
  108. data/lib/kubes/version.rb +1 -1
  109. data/lib/templates/base/.kubes/config.rb.tt +1 -1
  110. data/lib/templates/base/.kubes/config/env/dev.rb +1 -1
  111. data/lib/templates/base/.kubes/config/env/prod.rb +1 -1
  112. data/lib/templates/dsl/.kubes/resources/web/deployment.rb +1 -1
  113. data/lib/templates/new/helper/file.rb +2 -0
  114. data/lib/templates/new/resource/dsl/backend_config.rb +10 -0
  115. data/lib/templates/new/resource/dsl/config_map.rb +5 -0
  116. data/lib/templates/new/resource/dsl/daemon_set.rb +11 -0
  117. data/lib/templates/new/resource/dsl/deployment.rb +4 -0
  118. data/lib/templates/new/resource/dsl/ingress.rb +3 -0
  119. data/lib/templates/new/resource/dsl/job.rb +2 -0
  120. data/lib/templates/new/resource/dsl/managed_certificate.rb +2 -0
  121. data/lib/templates/new/resource/dsl/namespace.rb +2 -0
  122. data/lib/templates/new/resource/dsl/network_policy.rb +7 -0
  123. data/lib/templates/new/resource/dsl/pod.rb +6 -0
  124. data/lib/templates/new/resource/dsl/role.rb +4 -0
  125. data/lib/templates/new/resource/dsl/role_binding.rb +7 -0
  126. data/lib/templates/new/resource/dsl/secret.rb +5 -0
  127. data/lib/templates/new/resource/dsl/service.rb +2 -0
  128. data/lib/templates/new/resource/dsl/service_account.rb +1 -0
  129. data/lib/templates/new/resource/yaml/backend_config.yaml +10 -0
  130. data/lib/templates/new/resource/yaml/config_map.yaml +9 -0
  131. data/lib/templates/new/resource/yaml/daemon_set.yaml +11 -0
  132. data/lib/templates/new/resource/yaml/deployment.yaml +19 -0
  133. data/lib/templates/new/resource/yaml/ingress.yaml +12 -0
  134. data/lib/templates/new/resource/yaml/job.yaml +19 -0
  135. data/lib/templates/new/resource/yaml/managed_certificate.yaml +7 -0
  136. data/lib/templates/new/resource/yaml/namespace.yaml +6 -0
  137. data/lib/templates/new/resource/yaml/network_policy.yaml +20 -0
  138. data/lib/templates/new/resource/yaml/pod.yaml +11 -0
  139. data/lib/templates/new/resource/yaml/role.yaml +13 -0
  140. data/lib/templates/new/resource/yaml/role_binding.yaml +11 -0
  141. data/lib/templates/new/resource/yaml/secret.yaml +9 -0
  142. data/lib/templates/new/resource/yaml/service.yaml +14 -0
  143. data/lib/templates/new/resource/yaml/service_account.yaml +4 -0
  144. data/lib/templates/new/variable/file.rb +1 -0
  145. data/lib/templates/yaml/.kubes/resources/base/all.yaml.tt +2 -0
  146. data/lib/templates/yaml/.kubes/resources/web/deployment.yaml.tt +1 -1
  147. data/spec/fixtures/multiple-files/{deployment-1.rb → .kubes/resources/web/deployment-1.rb} +0 -0
  148. data/spec/fixtures/multiple-files/{deployment-2.rb → .kubes/resources/web/deployment-2.rb} +0 -0
  149. data/spec/fixtures/project/.kubes/resources/{deployment.rb → web/deployment.rb} +0 -0
  150. data/spec/fixtures/project/.kubes/resources/{foobar.rb → web/empty.rb} +0 -0
  151. data/spec/fixtures/project/.kubes/resources/{service.rb → web/service.rb} +1 -1
  152. data/spec/fixtures/syntax/{network_policy.rb → .kubes/resources/web/network_policy.rb} +0 -0
  153. data/spec/fixtures/syntax/{pod.rb → .kubes/resources/web/pod.rb} +0 -0
  154. data/spec/kubes/cli/prune_spec.rb +1 -0
  155. data/spec/kubes/compiler/strategy/dsl_spec.rb +2 -2
  156. data/spec/kubes/compiler_spec.rb +6 -2
  157. data/spec/kubes/dsl/network_policy_spec.rb +1 -1
  158. data/spec/kubes/dsl/pod_spec.rb +1 -1
  159. metadata +97 -25
@@ -0,0 +1,78 @@
1
+ ---
2
+ title: AWS SSM Parameters Advanced
3
+ nav_text: SSM
4
+ categories: advanced-helpers-aws
5
+ ---
6
+
7
+ This covers an advanced way so that Kubernetes Secrets are created from AWS SSM Parameter Store in a conventional way.
8
+
9
+ For example if you have these secret values:
10
+
11
+ $ aws ssm get-parameter --name /demo/development/db_user --with-decryption | jq '.Parameter.Value'
12
+ user
13
+ $ aws ssm get-parameter --name /demo/development/db_pass --with-decryption | jq '.Parameter.Value'
14
+ pass
15
+
16
+ Set up a [Kubes hook](https://kubes.guru/docs/config/hooks/kubes/).
17
+
18
+ .kubes/config/hooks/kubes.rb
19
+
20
+ ```ruby
21
+ ssm = KubesAws::SSM.new(upcase: true, prefix: "/demo/development/")
22
+ before("compile",
23
+ label: "Get secrets from AWS SSM Manager",
24
+ execute: ssm,
25
+ )
26
+ ```
27
+
28
+ Then set the secrets in the YAML:
29
+
30
+ .kubes/resources/shared/secret.yaml
31
+
32
+ ```yaml
33
+ apiVersion: v1
34
+ kind: Secret
35
+ metadata:
36
+ name: demo
37
+ labels:
38
+ app: demo
39
+ data:
40
+ <% KubesAws::SSM.data.each do |k,v| -%>
41
+ <%= k %>: <%= base64(v) %>
42
+ <% end -%>
43
+ ```
44
+
45
+ This results in AWS secrets with the prefix the `demo/dev/` being added to the Kubernetes secret data. The values are automatically base64 encoded. Produces:
46
+
47
+ .kubes/output/shared/secret.yaml
48
+
49
+ ```yaml
50
+ metadata:
51
+ namespace: demo
52
+ name: demo-2a78a13682
53
+ labels:
54
+ app: demo
55
+ apiVersion: v1
56
+ kind: Secret
57
+ data:
58
+ db_pass: dGVzdDEK
59
+ db_user: dGVzdDIK
60
+ ```
61
+
62
+ ## Variables
63
+
64
+ These environment variables can be set:
65
+
66
+ Name | Description
67
+ ---|---
68
+ AWS_SSM_PREFIX | Prefixed used to list and filter AWS SSM Parameters. IE: `demo/dev/`.
69
+
70
+ Secrets#initialize options:
71
+
72
+ Variable | Description | Default
73
+ ---|---|---
74
+ base64 | Automatically base64 encode the values. | false
75
+ upcase | Automatically upcase the Kubernetes secret data keys. | false
76
+ prefix | Prefixed used to list and filter AWS secrets. IE: `demo/dev/`. Can also be set with the `AWS_SECRET_PREFIX` env variable. The env variable takes the highest precedence. | nil
77
+
78
+ {% include helpers/base64.md %}
@@ -4,28 +4,9 @@ nav_text: Secrets
4
4
  categories: helpers-aws
5
5
  ---
6
6
 
7
- ## Simple Values
7
+ The `aws_secret` helper fetches secret data from AWS Secrets Manager.
8
8
 
9
- For example if you have these secret values:
10
-
11
- $ aws secretsmanager get-secret-value --secret-id demo/dev/db_user | jq '.SecretString'
12
- user
13
- $ aws secretsmanager get-secret-value --secret-id demo/dev/db_pass | jq '.SecretString'
14
- pass
15
-
16
- Set up a [Kubes hook](https://kubes.guru/docs/config/hooks/kubes/).
17
-
18
- .kubes/config/hooks/kubes.rb
19
-
20
- ```ruby
21
- secrets = KubesAws::Secrets.new(upcase: true, prefix: "demo/dev/")
22
- before("compile",
23
- label: "Get secrets from AWS Secrets Manager",
24
- execute: secrets,
25
- )
26
- ```
27
-
28
- Then set the secrets in the YAML:
9
+ ## Example
29
10
 
30
11
  .kubes/resources/shared/secret.yaml
31
12
 
@@ -37,12 +18,17 @@ metadata:
37
18
  labels:
38
19
  app: demo
39
20
  data:
40
- <% KubesAws::Secrets.data.each do |k,v| -%>
41
- <%= k %>: <%= base64(v) %>
42
- <% end -%>
21
+ PASS: <%= aws_secret("demo-#{Kubes.env}-PASS") %>
22
+ USER: <%= aws_secret("demo-#{Kubes.env}-USER") %>
43
23
  ```
44
24
 
45
- This results in AWS secrets with the prefix the `demo/dev/` being added to the Kubernetes secret data. The values are automatically base64 encoded. Produces:
25
+ For example if you have these secret values:
26
+
27
+ $ aws secretsmanager get-secret-value --secret-id demo-dev-PASS | jq '.SecretString'
28
+ test1
29
+ $ aws secretsmanager get-secret-value --secret-id demo-dev-USER | jq '.SecretString'
30
+ test2
31
+ $
46
32
 
47
33
  .kubes/output/shared/secret.yaml
48
34
 
@@ -55,75 +41,19 @@ metadata:
55
41
  apiVersion: v1
56
42
  kind: Secret
57
43
  data:
58
- db_pass: dGVzdDEK
59
- db_user: dGVzdDIK
44
+ PASS: dGVzdDEK
45
+ USER: dGVzdDIK
60
46
  ```
61
47
 
62
- ## JSON Values
48
+ The values are automatically base64 encoded.
63
49
 
64
- For example if you have these secret values:
50
+ ## Base64 Option
65
51
 
66
- $ aws secretsmanager get-secret-value --secret-id demo/dev/k2 | jq '.SecretString'
67
- {\"a\":1,\"b\":2}"
68
-
69
- Set up a [Kubes hook](https://kubes.guru/docs/config/hooks/kubes/).
70
-
71
- .kubes/config/hooks/kubes.rb
52
+ The value is automatically base64 encoded. You can set the `base64` option to turn on and off the automated base64 encoding.
72
53
 
73
54
  ```ruby
74
- secrets = KubesAws::Secrets.new(prefix: "rails/dev/")
75
- before("compile",
76
- label: "Get secrets from AWS Secrets Manager",
77
- execute: secrets,
78
- )
55
+ aws_secret("demo-#{Kubes.env}-USER", base64: true) # default is base64=true
56
+ aws_secret("demo-#{Kubes.env}-PASS", base64: false)
79
57
  ```
80
58
 
81
- Then set the secrets in the YAML:
82
-
83
- .kubes/resources/shared/secret.yaml
84
-
85
- ```yaml
86
- apiVersion: v1
87
- kind: Secret
88
- metadata:
89
- name: demo
90
- labels:
91
- app: demo
92
- data:
93
- <% k2 = JSON.load(KubesAws::Secrets.data["k2"]) %>
94
- a: <%= base64(k2["a"]) %>
95
- b: <%= base64(k2["b"]) %>
96
- ```
97
-
98
- Produces:
99
-
100
- ```yaml
101
- metadata:
102
- namespace: demo-dev
103
- name: demo-a4cd604a95
104
- labels:
105
- app: demo
106
- apiVersion: v1
107
- kind: Secret
108
- data:
109
- a: MQ==
110
- b: Mg==
111
- ```
112
-
113
- ## Variables
114
-
115
- These environment variables can be set:
116
-
117
- Name | Description
118
- ---|---
119
- AWS_SECRET_PREFIX | Prefixed used to list and filter AWS secrets. IE: `demo/dev/`.
120
-
121
- Secrets#initialize options:
122
-
123
- Variable | Description | Default
124
- ---|---|---
125
- base64 | Automatically base64 encode the values. | false
126
- upcase | Automatically upcase the Kubernetes secret data keys. | false
127
- prefix | Prefixed used to list and filter AWS secrets. IE: `demo/dev/`. Can also be set with the `AWS_SECRET_PREFIX` env variable. The env variable takes the highest precedence. | nil
128
-
129
59
  {% include helpers/base64.md %}
@@ -4,26 +4,9 @@ nav_text: SSM
4
4
  categories: helpers-aws
5
5
  ---
6
6
 
7
- For example if you have these secret values:
7
+ The `aws_ssm` helper fetches data from AWS SSM Parameter Store.
8
8
 
9
- $ aws ssm get-parameter --name /demo/development/db_user --with-decryption | jq '.Parameter.Value'
10
- user
11
- $ aws ssm get-parameter --name /demo/development/db_pass --with-decryption | jq '.Parameter.Value'
12
- pass
13
-
14
- Set up a [Kubes hook](https://kubes.guru/docs/config/hooks/kubes/).
15
-
16
- .kubes/config/hooks/kubes.rb
17
-
18
- ```ruby
19
- ssm = KubesAws::SSM.new(upcase: true, prefix: "/demo/development/")
20
- before("compile",
21
- label: "Get secrets from AWS SSM Manager",
22
- execute: ssm,
23
- )
24
- ```
25
-
26
- Then set the secrets in the YAML:
9
+ ## Example
27
10
 
28
11
  .kubes/resources/shared/secret.yaml
29
12
 
@@ -35,12 +18,16 @@ metadata:
35
18
  labels:
36
19
  app: demo
37
20
  data:
38
- <% KubesAws::SSM.data.each do |k,v| -%>
39
- <%= k %>: <%= base64(v) %>
40
- <% end -%>
21
+ PASS: <%= aws_ssm("/demo/#{Kubes.env}/PASS") %>
22
+ USER: <%= aws_ssm("/demo/#{Kubes.env}/USER") %>
41
23
  ```
42
24
 
43
- This results in AWS secrets with the prefix the `demo/dev/` being added to the Kubernetes secret data. The values are automatically base64 encoded. Produces:
25
+ For example if you have these ssm parameter values:
26
+
27
+ $ aws ssm get-parameter --name /demo/dev/PASS --with-decryption | jq '.Parameter.Value'
28
+ test1
29
+ $ aws ssm get-parameter --name /demo/dev/USER --with-decryption | jq '.Parameter.Value'
30
+ test2
44
31
 
45
32
  .kubes/output/shared/secret.yaml
46
33
 
@@ -53,24 +40,19 @@ metadata:
53
40
  apiVersion: v1
54
41
  kind: Secret
55
42
  data:
56
- db_pass: dGVzdDEK
57
- db_user: dGVzdDIK
43
+ PASS: dGVzdDEK
44
+ USER: dGVzdDIK
58
45
  ```
59
46
 
60
- ## Variables
61
-
62
- These environment variables can be set:
47
+ The values are automatically base64 encoded.
63
48
 
64
- Name | Description
65
- ---|---
66
- AWS_SSM_PREFIX | Prefixed used to list and filter AWS SSM Parameters. IE: `demo/dev/`.
49
+ ## Base64 Option
67
50
 
68
- Secrets#initialize options:
51
+ The value is automatically base64 encoded. You can set the `base64` option to turn on and off the automated base64 encoding.
69
52
 
70
- Variable | Description | Default
71
- ---|---|---
72
- base64 | Automatically base64 encode the values. | false
73
- upcase | Automatically upcase the Kubernetes secret data keys. | false
74
- prefix | Prefixed used to list and filter AWS secrets. IE: `demo/dev/`. Can also be set with the `AWS_SECRET_PREFIX` env variable. The env variable takes the highest precedence. | nil
53
+ ```ruby
54
+ aws_ssm("/demo/#{Kubes.env}/USER", base64: true) # default is base64=true
55
+ aws_ssm("/demo/#{Kubes.env}/PASS", base64: false)
56
+ ```
75
57
 
76
- {% include helpers/base64.md %}
58
+ {% include helpers/base64.md %}
@@ -14,4 +14,4 @@ List of Google helpers:
14
14
  * By default, `KubeGoogle.logger = Kubes.logger`. This means, you can set `logger.level = "debug"` in `.kubes/config.rb` to see more details.
15
15
  * The `gcloud` cli is used to create IAM roles. So `gcloud` is required.
16
16
  * Note: Would like to use the google sdk, but it wasn't obvious how to do so. PRs are welcomed.
17
-
17
+ * The Google helpers are provided by the [boltops-tools/kubes_google](https://github.com/boltops-tools/kubes_google) library.
@@ -0,0 +1,10 @@
1
+ ---
2
+ title: Advanced Google Helpers
3
+ nav_text: Advanced
4
+ categories: helpers-google
5
+ ---
6
+
7
+ {% assign docs = site.docs | where: "categories","advanced-helpers-google" %}
8
+ {% for doc in docs -%}
9
+ * [{{ doc.nav_text }}]({{ doc.url }})
10
+ {% endfor %}
@@ -0,0 +1,78 @@
1
+ ---
2
+ title: Advanced Google Secrets
3
+ nav_text: Secrets
4
+ categories: advanced-helpers-google
5
+ ---
6
+
7
+ This covers an advanced way so that Kubernetes Secrets are created from Google Secrets in a conventional way.
8
+
9
+ Set up a [Kubes hook](https://kubes.guru/docs/config/hooks/kubes/).
10
+
11
+ .kubes/config/hooks/kubes.rb
12
+
13
+ ```ruby
14
+ before("compile",
15
+ execute: KubesGoogle::Secrets.new(upcase: true, prefix: 'projects/686010496118/secrets/demo-dev-')
16
+ )
17
+ ```
18
+
19
+ Then set the secrets in the YAML:
20
+
21
+ .kubes/resources/shared/secret.yaml
22
+
23
+ ```yaml
24
+ apiVersion: v1
25
+ kind: Secret
26
+ metadata:
27
+ name: demo
28
+ labels:
29
+ app: demo
30
+ data:
31
+ <% KubesGoogle::Secrets.data.each do |k,v| -%>
32
+ <%= k %>: <%= base64(v) %>
33
+ <% end -%>
34
+ ```
35
+
36
+ This results in Google secrets with the prefix the `demo-dev-` being added to the Kubernetes secret data. The values are automatically base64 encoded.
37
+
38
+ For example if you have these secret values:
39
+
40
+ $ gcloud secrets versions access latest --secret demo-dev-db_user
41
+ test1
42
+ $ gcloud secrets versions access latest --secret demo-dev-db_pass
43
+ test2
44
+ $
45
+
46
+ .kubes/output/shared/secret.yaml
47
+
48
+ ```yaml
49
+ metadata:
50
+ namespace: demo
51
+ name: demo-2a78a13682
52
+ labels:
53
+ app: demo
54
+ apiVersion: v1
55
+ kind: Secret
56
+ data:
57
+ db_pass: dGVzdDEK
58
+ db_user: dGVzdDIK
59
+ ```
60
+
61
+ ## Variables
62
+
63
+ These environment variables can be set:
64
+
65
+ Name | Description
66
+ ---|---
67
+ GCP_SECRET_PREFIX | Prefixed used to list and filter Google secrets. IE: `projects/686010496118/secrets/demo-dev-`.
68
+ GOOGLE_PROJECT | Google project id.
69
+
70
+ Secrets#initialize options:
71
+
72
+ Variable | Description | Default
73
+ ---|---|---
74
+ base64 | Automatically base64 encode the values. | false
75
+ upcase | Automatically upcase the Kubernetes secret data keys. | false
76
+ prefix | Prefixed used to list and filter Google secrets. IE: `projects/686010496118/secrets/demo-dev-`. Can also be set with the `GCP_SECRET_PREFIX` env variable. The env variable takes the highest precedence. | nil
77
+
78
+ {% include helpers/base64.md %}
@@ -4,17 +4,9 @@ nav_text: Secrets
4
4
  categories: helpers-google
5
5
  ---
6
6
 
7
- Set up a [Kubes hook](https://kubes.guru/docs/config/hooks/kubes/).
7
+ The `google_secret` helper fetches secret data from Google Secrets.
8
8
 
9
- .kubes/config/hooks/kubes.rb
10
-
11
- ```ruby
12
- before("compile",
13
- execute: KubesGoogle::Secrets.new(upcase: true, prefix: 'projects/686010496118/secrets/demo-dev-')
14
- )
15
- ```
16
-
17
- Then set the secrets in the YAML:
9
+ ## Example
18
10
 
19
11
  .kubes/resources/shared/secret.yaml
20
12
 
@@ -26,18 +18,17 @@ metadata:
26
18
  labels:
27
19
  app: demo
28
20
  data:
29
- <% KubesGoogle::Secrets.data.each do |k,v| -%>
30
- <%= k %>: <%= base64(v) %>
31
- <% end -%>
21
+ PASS: <%= google_secret("demo-#{Kubes.env}-PASS") %>
22
+ USER: <%= google_secret("demo-#{Kubes.env}-USER") %>
32
23
  ```
33
24
 
34
- This results in Google secrets with the prefix the `demo-dev-` being added to the Kubernetes secret data. The values are automatically base64 encoded.
25
+ The values are automatically base64 encoded.
35
26
 
36
27
  For example if you have these secret values:
37
28
 
38
- $ gcloud secrets versions access latest --secret demo-dev-db_user
29
+ $ gcloud secrets versions access latest --secret demo-dev-USER
39
30
  test1
40
- $ gcloud secrets versions access latest --secret demo-dev-db_pass
31
+ $ gcloud secrets versions access latest --secret demo-dev-PASS
41
32
  test2
42
33
  $
43
34
 
@@ -52,8 +43,8 @@ metadata:
52
43
  apiVersion: v1
53
44
  kind: Secret
54
45
  data:
55
- db_pass: dGVzdDEK
56
- db_user: dGVzdDIK
46
+ PASS: dGVzdDEK
47
+ USER: dGVzdDIK
57
48
  ```
58
49
 
59
50
  ## Variables
@@ -62,15 +53,15 @@ These environment variables can be set:
62
53
 
63
54
  Name | Description
64
55
  ---|---
65
- GCP_SECRET_PREFIX | Prefixed used to list and filter Google secrets. IE: `projects/686010496118/secrets/demo-dev-`.
66
- GOOGLE_PROJECT | Google project id.
56
+ GOOGLE_PROJECT | Google project id. This is required.
67
57
 
68
- Secrets#initialize options:
58
+ ## Base64 Option
69
59
 
70
- Variable | Description | Default
71
- ---|---|---
72
- base64 | Automatically base64 encode the values. | false
73
- upcase | Automatically upcase the Kubernetes secret data keys. | false
74
- prefix | Prefixed used to list and filter Google secrets. IE: `projects/686010496118/secrets/demo-dev-`. Can also be set with the `GCP_SECRET_PREFIX` env variable. The env variable takes the highest precedence. | nil
60
+ The value is automatically base64 encoded. You can set the `base64` option to turn on and off the automated base64 encoding.
61
+
62
+ ```ruby
63
+ google_secret("demo-#{Kubes.env}-USER", base64: true) # default is base64=true
64
+ google_secret("demo-#{Kubes.env}-PASS", base64: false)
65
+ ```
75
66
 
76
- {% include helpers/base64.md %}
67
+ {% include helpers/base64.md %}