ky 0.3.2 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/ky.rb +7 -8
- data/lib/ky/cli.rb +13 -12
- data/lib/ky/deploy_generation.rb +10 -9
- data/lib/ky/env_generation.rb +8 -7
- data/lib/ky/manipulation.rb +1 -1
- data/lib/ky/template.rb +18 -16
- data/lib/ky/version.rb +2 -2
- data/spec/ky_bin_spec.rb +92 -57
- data/spec/support/web-env.yml +3 -12
- data/spec/support/web-merged.yml +3 -12
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2533ddef5c84d343f63a450906ff204af9d8fba3
|
4
|
+
data.tar.gz: fa69c9106ed34e68b7d37b0ae42d6a038133967d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 56c897b7045750693622757feeac1920b395a17258d92096151811a5df8f6dc59dcd1f2447a83c5733a92a630c84410174fe65216ee6d68c06b654d27e5d5254
|
7
|
+
data.tar.gz: 3bd1693ec6df03cd29733abdda68369b85e6ee5442402a2a2331e14a666f46df874d9ad7655974753287698fed631ada2d5968601dd6fc1cdfab0d9551ef39a0
|
data/README.md
CHANGED
@@ -7,7 +7,7 @@ The primary purpose is to automate/DRY up duplication and agreement between mult
|
|
7
7
|
The full/hopeful use of the tool may be enabled with the new `compile` command which is very much a rough draft at present, but which takes a crack at generating a complete deployment yaml file for every line of a Procfile such as used for Heroku, and a pair of config and secrets files. The secret file can be non-base64 encoded, and compile will generate deployments and a base64 encoded secrets file to a target directory specified. This command uses all the below commands in combination, one other command not exposed via CLI independently.
|
8
8
|
|
9
9
|
The command is invoked as:
|
10
|
-
`ky compile Procfile.file config.yml secrets.yml output_dir` and the output directory will be created if necessary. You may pass a namespace to compile which will be reflected in the deployments (and should agree with the config and secrets, though it's not checking they agree at present). The arguments are all configurable via the configuration file as well, so it can in practice be invoked as `ky compile` or `
|
10
|
+
`ky compile Procfile.file config.yml secrets.yml output_dir` and the output directory will be created if necessary. You may pass a namespace to compile which will be reflected in the deployments (and should agree with the config and secrets, though it's not checking they agree at present). The arguments are all configurable via the configuration file as well, so it can in practice be invoked as `ky compile` or `ky compile --envioronment stg` if you have a configuration file correctly present as described below.
|
11
11
|
|
12
12
|
Configuration begins with a config file in the project working directory, or in your home directory if you wish to share across several projects. Unfortunately there are several competing conventions for configuration files, the traditional dot-file configuration convention and newer, more visible Capitalfile configuration. KY is a lubricant, and has no opinion, and therefore currently supports naming your configuration file `.ky.yml`, `.ky.yaml`, or `Lubefile` or `Kyfile`. The default configuration, if this file is not found, is as follows:
|
13
13
|
```
|
data/lib/ky.rb
CHANGED
@@ -9,7 +9,7 @@ require_relative 'ky/template'
|
|
9
9
|
require_relative 'ky/deploy_generation'
|
10
10
|
|
11
11
|
|
12
|
-
|
12
|
+
class KY
|
13
13
|
CONFIG_FILE_NAMES = [".ky.yml", ".ky.yaml", "Lubefile", "Kyfile"]
|
14
14
|
CONFIG_LOCATIONS = ["#{Dir.pwd}/", "#{Dir.home}/"]
|
15
15
|
DEFAULT_CONFIG = {
|
@@ -23,10 +23,9 @@ module KY
|
|
23
23
|
inline_config: true,
|
24
24
|
inline_secret: false,
|
25
25
|
project_name: "global"
|
26
|
-
}.
|
26
|
+
}.with_indifferent_access
|
27
27
|
|
28
|
-
|
29
|
-
cattr_accessor :environment, :image_tag
|
28
|
+
attr_accessor :environment, :image_tag
|
30
29
|
|
31
30
|
def decode(output, input)
|
32
31
|
output << Manipulation.code_yaml(input, :decode)
|
@@ -41,7 +40,7 @@ module KY
|
|
41
40
|
end
|
42
41
|
|
43
42
|
def env(output, input1, input2)
|
44
|
-
output << EnvGeneration.generate_env(input1, input2).to_yaml
|
43
|
+
output << EnvGeneration.generate_env(self, input1, input2).to_yaml
|
45
44
|
rescue KY::EnvGeneration::ConflictingProjectError => e
|
46
45
|
$stderr << "Error processing yml files, please provide a config and a secrets file from the same kubernetes project/name"
|
47
46
|
exit(1)
|
@@ -50,12 +49,12 @@ module KY
|
|
50
49
|
def compile(proc_path, env1path, env2path, base_output_dir, namespace=DeployGeneration::DEFAULT_NAMESPACE)
|
51
50
|
full_output_dir = Pathname.new(base_output_dir).join(environment.to_s).to_s
|
52
51
|
FileUtils.mkdir_p(full_output_dir)
|
53
|
-
env_obj = EnvGeneration.new(env1path, env2path)
|
54
|
-
deploys_hash = DeployGeneration.new(proc_path, full_output_dir, env_obj.project, namespace).to_h
|
52
|
+
env_obj = EnvGeneration.new(self, env1path, env2path)
|
53
|
+
deploys_hash = DeployGeneration.new(self, proc_path, full_output_dir, env_obj.project, namespace).to_h
|
55
54
|
deploys_hash.each do |file_path, deploy_hash|
|
56
55
|
File.write(file_path, Manipulation.merge_hash(deploy_hash, env_obj.to_h).to_yaml)
|
57
56
|
end
|
58
|
-
Manipulation.write_configs_encode_if_needed(env_obj.config_hsh, env_obj.secret_hsh, full_output_dir, configuration[
|
57
|
+
Manipulation.write_configs_encode_if_needed(env_obj.config_hsh, env_obj.secret_hsh, full_output_dir, configuration[:project_name])
|
59
58
|
end
|
60
59
|
|
61
60
|
def configuration
|
data/lib/ky/cli.rb
CHANGED
@@ -1,33 +1,33 @@
|
|
1
1
|
require_relative '../ky'
|
2
2
|
require 'thor'
|
3
|
-
|
3
|
+
class KY
|
4
4
|
class Cli < Thor
|
5
5
|
MissingParametersError = Class.new(StandardError)
|
6
6
|
desc "encode secrets.yml", "base64 encoded yaml version of data attributes in secrets.yml"
|
7
7
|
def encode(input_source=$stdin, output_source=$stdout)
|
8
8
|
input_output(input_source, output_source) do |input_object, output_object|
|
9
|
-
KY.encode(output_object, input_object)
|
9
|
+
KY.new.encode(output_object, input_object)
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
13
|
desc "decode secrets.yml", "decoded yaml version of secrets.yml with base64 encoded data attributes"
|
14
14
|
def decode(input_source=$stdin, output_source=$stdout)
|
15
15
|
input_output(input_source, output_source) do |input_object, output_object|
|
16
|
-
KY.decode(output_object, input_object)
|
16
|
+
KY.new.decode(output_object, input_object)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
20
|
desc "merge base.yml env.yml", "deep merged/combined yaml of two seperate files"
|
21
21
|
def merge(input_source1, input_source2=$stdin, output_source=$stdout)
|
22
22
|
input_output(input_source1, output_source) do |input_object1, output_object|
|
23
|
-
with(input_source2, 'r') {|input_object2| KY.merge(output_object, input_object1, input_object2) }
|
23
|
+
with(input_source2, 'r') {|input_object2| KY.new.merge(output_object, input_object1, input_object2) }
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
27
|
desc "env config.yml secrets.yml", "generate env variables section of a deployment from a config and a secrets file"
|
28
28
|
def env(input_source1, input_source2=$stdin, output_source=$stdout)
|
29
29
|
input_output(input_source1, output_source) do |input_object1, output_object|
|
30
|
-
with(input_source2, 'r') {|input_object2| KY.env(output_object, input_object1, input_object2) }
|
30
|
+
with(input_source2, 'r') {|input_object2| KY.new.env(output_object, input_object1, input_object2) }
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
@@ -43,15 +43,16 @@ module KY
|
|
43
43
|
method_option :environment, type: :string, aliases: "-e"
|
44
44
|
method_option :image_tag, type: :string, aliases: "-t"
|
45
45
|
def compile(procfile_path=nil, config_or_secrets_path=nil, secrets_or_config_path=nil, output_dir=nil)
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
46
|
+
instance = KY.new
|
47
|
+
instance.environment = options[:environment]
|
48
|
+
instance.image_tag = options[:image_tag]
|
49
|
+
procfile_path ||= instance.configuration['procfile_path']
|
50
|
+
config_or_secrets_path ||= instance.configuration['config_path'] || instance.configuration['secret_path']
|
51
|
+
secrets_or_config_path ||= instance.configuration['secret_path'] || instance.configuration['config_path']
|
52
|
+
output_dir ||= instance.configuration['output_dir']
|
52
53
|
raise MissingParametersError unless procfile_path && config_or_secrets_path && secrets_or_config_path && output_dir
|
53
54
|
input_input(config_or_secrets_path, secrets_or_config_path) do |input1, input2|
|
54
|
-
|
55
|
+
instance.compile(procfile_path, input1, input2, output_dir, options[:namespace])
|
55
56
|
end
|
56
57
|
end
|
57
58
|
|
data/lib/ky/deploy_generation.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
|
-
|
1
|
+
class KY
|
2
2
|
class DeployGeneration
|
3
|
-
def initialize(proc_path, full_output_dir, project_name=nil, current_namespace=nil)
|
3
|
+
def initialize(instance, proc_path, full_output_dir, project_name=nil, current_namespace=nil)
|
4
|
+
@instance = instance
|
4
5
|
@proc_commands = File.read(proc_path).split("\n")
|
5
6
|
.map {|line| line.split(':', 2) }
|
6
7
|
.map {|k, v| [k, ["/bin/bash","-c", v]] }
|
7
8
|
.to_h
|
8
9
|
@full_output_dir = full_output_dir
|
9
|
-
@project_name = project_name ||
|
10
|
-
@current_namespace = current_namespace ||
|
10
|
+
@project_name = project_name || instance.configuration[:project_name]
|
11
|
+
@current_namespace = current_namespace || instance.configuration[:namespace]
|
11
12
|
@deployment_yaml = read_deployment_yaml
|
12
13
|
end
|
13
14
|
|
@@ -24,11 +25,11 @@ module KY
|
|
24
25
|
end
|
25
26
|
|
26
27
|
private
|
27
|
-
attr_reader :proc_commands, :full_output_dir, :project_name, :current_namespace, :deployment_yaml
|
28
|
+
attr_reader :proc_commands, :full_output_dir, :project_name, :current_namespace, :deployment_yaml, :instance
|
28
29
|
|
29
30
|
def read_deployment_yaml
|
30
|
-
if
|
31
|
-
File.read(
|
31
|
+
if instance.configuration['deployment']
|
32
|
+
File.read(instance.configuration['deployment'])
|
32
33
|
else
|
33
34
|
File.read(default_deployment_template)
|
34
35
|
end
|
@@ -39,13 +40,13 @@ module KY
|
|
39
40
|
end
|
40
41
|
|
41
42
|
def template_hash(id, command_array)
|
42
|
-
app_name =
|
43
|
+
app_name = instance.configuration['app_name'] || "#{project_name}-#{id}"
|
43
44
|
template_context = Template.context(app_name: app_name, id: id, command_array: command_array)
|
44
45
|
Manipulation.merge_hash(
|
45
46
|
YAML.load(
|
46
47
|
ERB.new(deployment_yaml).result(template_context)
|
47
48
|
),
|
48
|
-
|
49
|
+
instance.deploy_merge(id)
|
49
50
|
)
|
50
51
|
end
|
51
52
|
end
|
data/lib/ky/env_generation.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'active_support'
|
2
2
|
require 'active_support/core_ext'
|
3
|
-
|
3
|
+
class KY
|
4
4
|
class EnvGeneration
|
5
5
|
ConflictingProjectError = Class.new(StandardError)
|
6
6
|
|
@@ -9,13 +9,14 @@ module KY
|
|
9
9
|
define_method(raw_string.underscore) { raw_string }
|
10
10
|
end
|
11
11
|
|
12
|
-
def self.generate_env(input1, input2)
|
13
|
-
new(input1, input2).to_h
|
12
|
+
def self.generate_env(instance, input1, input2)
|
13
|
+
new(instance, input1, input2).to_h
|
14
14
|
end
|
15
15
|
|
16
|
-
attr_reader :config_hsh, :secret_hsh
|
17
|
-
def initialize(input1, input2)
|
16
|
+
attr_reader :config_hsh, :secret_hsh, :instance
|
17
|
+
def initialize(instance, input1, input2)
|
18
18
|
input_hashes = YAML.load(input1.read), YAML.load(input2.read)
|
19
|
+
@instance = instance
|
19
20
|
@config_hsh = input_hashes.find {|h| h[kind] == config_map }
|
20
21
|
@secret_hsh = input_hashes.find {|h| h[kind] == secret }
|
21
22
|
raise ConflictingProjectError.new("Config and Secret metadata names do not agree") unless secret_hsh[metadata][name] == project
|
@@ -41,12 +42,12 @@ module KY
|
|
41
42
|
end
|
42
43
|
|
43
44
|
def inline_config?
|
44
|
-
|
45
|
+
instance.configuration[:inline_config]
|
45
46
|
end
|
46
47
|
|
47
48
|
|
48
49
|
def inline_secret?
|
49
|
-
|
50
|
+
instance.configuration[:inline_secret]
|
50
51
|
end
|
51
52
|
|
52
53
|
def inline_env_map(type, kebab_version, env_value)
|
data/lib/ky/manipulation.rb
CHANGED
data/lib/ky/template.rb
CHANGED
@@ -1,22 +1,24 @@
|
|
1
|
-
class
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
class KY
|
2
|
+
class Template
|
3
|
+
def self.context(hsh)
|
4
|
+
new(hsh).context
|
5
|
+
end
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
attr_reader :context_hash
|
8
|
+
def initialize(hsh)
|
9
|
+
@context_hash = hsh
|
10
|
+
end
|
10
11
|
|
11
|
-
|
12
|
-
|
13
|
-
|
12
|
+
def environment
|
13
|
+
KY.environment
|
14
|
+
end
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
def context
|
17
|
+
template_context = binding
|
18
|
+
context_hash.each do |var, value|
|
19
|
+
template_context.local_variable_set(var, value)
|
20
|
+
end
|
21
|
+
template_context
|
19
22
|
end
|
20
|
-
template_context
|
21
23
|
end
|
22
24
|
end
|
data/lib/ky/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
|
2
|
-
VERSION = "0.3.
|
1
|
+
class KY
|
2
|
+
VERSION = "0.3.3"
|
3
3
|
end
|
data/spec/ky_bin_spec.rb
CHANGED
@@ -1,79 +1,114 @@
|
|
1
1
|
require 'ky/cli'
|
2
|
-
describe "cli
|
3
|
-
|
4
|
-
|
5
|
-
normal_config = KY::DEFAULT_CONFIG
|
6
|
-
KY.define_methods_from_config(normal_config)
|
7
|
-
allow(KY).to receive(:configuration).and_return(normal_config.merge(inline_config: false))
|
8
|
-
end
|
2
|
+
describe "ky cli" do
|
3
|
+
describe "legacy/component cli commands" do
|
4
|
+
let(:tmpfile_path) { "spec/support/tmpfile.yml" }
|
9
5
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
6
|
+
after { `rm #{tmpfile_path}` if File.exists?(tmpfile_path) }
|
7
|
+
describe "works with stdout" do
|
8
|
+
it "decodes" do
|
9
|
+
output = File.read('spec/support/decoded.yml')
|
10
|
+
expect($stdout).to receive(:<<).with(output)
|
11
|
+
KY::Cli.new.decode("spec/support/encoded.yml")
|
12
|
+
end
|
17
13
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
14
|
+
it "encodes" do
|
15
|
+
output = File.read('spec/support/encoded.yml')
|
16
|
+
expect($stdout).to receive(:<<).with(output)
|
17
|
+
KY::Cli.new.encode("spec/support/decoded.yml")
|
18
|
+
end
|
22
19
|
end
|
23
|
-
end
|
24
20
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
21
|
+
describe "works with files" do
|
22
|
+
it "decodes" do
|
23
|
+
output = File.read('spec/support/decoded.yml')
|
24
|
+
KY::Cli.new.decode("spec/support/encoded.yml", tmpfile_path)
|
25
|
+
expect(File.read(tmpfile_path)).to eq(output)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "encodes" do
|
29
|
+
output = File.read('spec/support/encoded.yml')
|
30
|
+
KY::Cli.new.encode("spec/support/decoded.yml", tmpfile_path)
|
31
|
+
expect(File.read(tmpfile_path)).to eq(output)
|
32
|
+
end
|
30
33
|
end
|
31
34
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
35
|
+
describe "merges yml files" do
|
36
|
+
it "to stdout" do
|
37
|
+
output = File.read('spec/support/web-merged.yml')
|
38
|
+
expect($stdout).to receive(:<<).with(output)
|
39
|
+
KY::Cli.new.merge('spec/support/web-base.yml', 'spec/support/web-env.yml')
|
40
|
+
end
|
36
41
|
end
|
37
|
-
end
|
38
42
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
43
|
+
describe "generates env section" do
|
44
|
+
it "to stdout" do
|
45
|
+
output = File.read('spec/support/web-env.yml')
|
46
|
+
expect($stdout).to receive(:<<).with(output)
|
47
|
+
KY::Cli.new.env('spec/support/decoded.yml', 'spec/support/config.yml')
|
48
|
+
end
|
49
|
+
|
50
|
+
it "config and secret are order independent" do
|
51
|
+
output = File.read('spec/support/web-env.yml')
|
52
|
+
expect($stdout).to receive(:<<).with(output)
|
53
|
+
KY::Cli.new.env('spec/support/config.yml', 'spec/support/decoded.yml')
|
54
|
+
end
|
55
|
+
|
56
|
+
it "to file" do
|
57
|
+
output = File.read('spec/support/web-env.yml')
|
58
|
+
KY::Cli.new.env('spec/support/config.yml', 'spec/support/decoded.yml', tmpfile_path)
|
59
|
+
expect(File.read(tmpfile_path)).to eq(output)
|
60
|
+
end
|
44
61
|
end
|
45
62
|
end
|
46
63
|
|
47
|
-
describe "
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
64
|
+
describe "primary cli command" do
|
65
|
+
let(:instance) { KY.new }
|
66
|
+
let(:fake_tag) { 'fake_tag' }
|
67
|
+
let(:tmpdir) { 'spec/support/tmpdir' }
|
68
|
+
after { `rm -r #{tmpdir}` ; instance.environment = nil ; instance.image_tag = nil }
|
69
|
+
describe "compiles Procfile and env secrets/configs into entire deployments" do
|
70
|
+
it "to directory" do
|
71
|
+
KY::Cli.new.compile('spec/support/Procfile', 'spec/support/config.yml', 'spec/support/decoded.yml', tmpdir)
|
72
|
+
expect(File.exists?("#{tmpdir}/web.deployment.yml")).to be true
|
73
|
+
expect(File.exists?("#{tmpdir}/worker.deployment.yml")).to be true
|
74
|
+
expect(File.exists?("#{tmpdir}/jobs.deployment.yml")).to be true
|
75
|
+
end
|
52
76
|
end
|
53
77
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
78
|
+
describe "encodes secrets.yml when compiling from Procfile without image_tag" do
|
79
|
+
it "to directory" do
|
80
|
+
instance = KY::Cli.new
|
81
|
+
instance.compile('spec/support/Procfile', 'spec/support/config.yml', 'spec/support/decoded.yml', tmpdir)
|
82
|
+
expect(File.exists?("#{tmpdir}/global.secret.yml")).to be true
|
83
|
+
YAML.load(File.read("#{tmpdir}/global.secret.yml"))['data'].each do |_k, v|
|
84
|
+
expect(v).to match(KY::Manipulation::BASE_64_DETECTION_REGEX)
|
85
|
+
end
|
86
|
+
end
|
58
87
|
end
|
59
88
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
89
|
+
describe "encodes secrets.yml when compiling from Procfile with image_tag" do
|
90
|
+
it "to directory" do
|
91
|
+
instance = KY::Cli.new
|
92
|
+
instance.options = {image_tag: fake_tag}
|
93
|
+
instance.compile('spec/support/Procfile', 'spec/support/config.yml', 'spec/support/decoded.yml', tmpdir)
|
94
|
+
expect(File.exists?("#{tmpdir}/global.secret.yml")).to be true
|
95
|
+
YAML.load(File.read("#{tmpdir}/global.secret.yml"))['data'].each do |_k, v|
|
96
|
+
expect(v).to match(KY::Manipulation::BASE_64_DETECTION_REGEX)
|
97
|
+
end
|
98
|
+
end
|
64
99
|
end
|
65
|
-
end
|
66
100
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
101
|
+
describe "uses image_tag when passed in as option" do
|
102
|
+
let(:tmpdir) { 'spec/support/tmp2dir' }
|
103
|
+
it "to directory" do
|
104
|
+
instance = KY::Cli.new
|
105
|
+
instance.options = {image_tag: fake_tag}
|
106
|
+
instance.compile('spec/support/Procfile', 'spec/support/config.yml', 'spec/support/decoded.yml', tmpdir)
|
107
|
+
expect(File.exists?("#{tmpdir}/web.deployment.yml")).to be true
|
108
|
+
expect(File.read("#{tmpdir}/web.deployment.yml")).to match(fake_tag)
|
109
|
+
end
|
75
110
|
end
|
76
|
-
end
|
77
111
|
|
112
|
+
end
|
78
113
|
end
|
79
114
|
|
data/spec/support/web-env.yml
CHANGED
@@ -5,20 +5,11 @@ spec:
|
|
5
5
|
containers:
|
6
6
|
- env:
|
7
7
|
- name: TZ
|
8
|
-
|
9
|
-
configMapKeyRef:
|
10
|
-
name: test
|
11
|
-
key: tz
|
8
|
+
value: EST
|
12
9
|
- name: REST_API_ID
|
13
|
-
|
14
|
-
configMapKeyRef:
|
15
|
-
name: test
|
16
|
-
key: rest-api-id
|
10
|
+
value: 1234abcd
|
17
11
|
- name: USE_SSL
|
18
|
-
|
19
|
-
configMapKeyRef:
|
20
|
-
name: test
|
21
|
-
key: use-ssl
|
12
|
+
value: true
|
22
13
|
- name: DATABASE_URL
|
23
14
|
valueFrom:
|
24
15
|
secretKeyRef:
|
data/spec/support/web-merged.yml
CHANGED
@@ -23,20 +23,11 @@ spec:
|
|
23
23
|
- bundle exec rake assets:precompile && bundle exec puma -C ./config/puma.rb
|
24
24
|
env:
|
25
25
|
- name: TZ
|
26
|
-
|
27
|
-
configMapKeyRef:
|
28
|
-
name: test
|
29
|
-
key: tz
|
26
|
+
value: EST
|
30
27
|
- name: REST_API_ID
|
31
|
-
|
32
|
-
configMapKeyRef:
|
33
|
-
name: test
|
34
|
-
key: rest-api-id
|
28
|
+
value: 1234abcd
|
35
29
|
- name: USE_SSL
|
36
|
-
|
37
|
-
configMapKeyRef:
|
38
|
-
name: test
|
39
|
-
key: use-ssl
|
30
|
+
value: true
|
40
31
|
- name: DATABASE_URL
|
41
32
|
valueFrom:
|
42
33
|
secretKeyRef:
|