26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
# File 'lib/kdep/commands/helm_install.rb', line 26
def execute
deploy_name = @args[0]
env = @args[1]
@env = env
@dry_run = @command_options[:"dry-run"]
discovery = Kdep::Discovery.new
kdep_dir = discovery.find_kdep_dir
unless kdep_dir
@ui.error("No kdep/ directory found")
exit 1
end
@deploy_dir = resolve_deploy_dir(kdep_dir, deploy_name, discovery)
unless @deploy_dir
exit 1
end
config = Kdep::Config.new(@deploy_dir, env).load
@namespace = config["namespace"]
@kdep_dir = kdep_dir
@resolver = Kdep::PathResolver.new(
deploy_dir: @deploy_dir,
kdep_dir: @kdep_dir,
paths_from: config["paths_from"],
)
@tracker = Kdep::RolloutTracker.new(
rollout_on: config["rollout_on"],
namespace: @namespace,
ui: @ui,
dry_run: @dry_run,
)
unless config["preset"] == "helm"
@ui.error("#{deploy_name} is not a helm preset (preset: #{config["preset"]})")
exit 1
end
begin
Kdep::ContextGuard.new(config["context"]).validate!
rescue Kdep::Kubectl::Error => e
@ui.error(e.message)
exit 1
end
@secrets = load_secrets(@deploy_dir)
repos = config["helm_repos"] || {}
if config["helm_repo"]
repo_name, repo_url = config["helm_repo"].split("=", 2)
repos[repo_name] = repo_url if repo_name && repo_url
end
repos.each do |repo_name, repo_url|
@ui.info("Adding helm repo: #{repo_name} -> #{repo_url}")
Kdep::Helm.repo_add(repo_name, repo_url) unless @dry_run
end
charts = build_chart_list(config)
if charts.empty?
@ui.error("app.yml has no chart or charts defined")
exit 1
end
charts.each do |chart_conf|
install_chart(chart_conf)
end
apply_configmap_overlays(config)
(config, kdep_dir)
ok = @tracker.flush!
exit 1 if @tracker.errors? && !ok
end
|