Class: PicsolveDockerBuilder::Helpers::KubernetesManager
- Inherits:
-
Object
- Object
- PicsolveDockerBuilder::Helpers::KubernetesManager
show all
- Includes:
- Base
- Defined in:
- lib/picsolve_docker_builder/helpers/kubernetes_manager.rb
Overview
Ruby representation of a kuberentes cluster
Instance Method Summary
collapse
Methods included from Base
#base_dir, #config, #config_path, #create_logger, #default_config, #log, #read_config, #validate_config
Instance Method Details
#client ⇒ Object
36
37
38
|
# File 'lib/picsolve_docker_builder/helpers/kubernetes_manager.rb', line 36
def client
@client ||= create_client
end
|
#config_service(s, i) ⇒ Object
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/picsolve_docker_builder/helpers/kubernetes_manager.rb', line 62
def config_service(s, i)
s.name = i.name
s.metadata = {} unless s.metadata
s.metadata.name = i.name
s.metadata.namespace = i.composer.namespace
s.metadata.labels = template_labels(i)
s.spec = {} unless s.spec
s.spec.ports = i.ports
s.spec.selector = {
'name' => i.name
}
end
|
#create_client ⇒ Object
14
15
16
|
# File 'lib/picsolve_docker_builder/helpers/kubernetes_manager.rb', line 14
def create_client
Kubeclient::Client.new kubernetes_url, 'v1beta3'
end
|
#deploy_service(i) ⇒ Object
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
# File 'lib/picsolve_docker_builder/helpers/kubernetes_manager.rb', line 78
def deploy_service(i)
existing = false
begin
s = client.get_service i.name, i.composer.namespace
existing = true
rescue KubeException
s = Kubeclient::Service.new
end
config_service(s, i)
if existing
log.debug \
"update service '#{i.composer.namespace}/#{i.name}' on kubernetes"
client.update_service s
else
log.debug \
"create service '#{i.composer.namespace}/#{i.name}' on kubernetes"
client.create_service s
end
end
|
#kubernetes_host ⇒ Object
31
32
33
34
|
# File 'lib/picsolve_docker_builder/helpers/kubernetes_manager.rb', line 31
def kubernetes_host
config['compose']['clusters'].first
end
|
#kubernetes_url ⇒ Object
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/picsolve_docker_builder/helpers/kubernetes_manager.rb', line 18
def kubernetes_url
@ssh_forward = SshForward.new(
ssh_host: kubernetes_host,
remote_host: '127.0.0.1',
remote_port: 8080
)
port = @ssh_forward.start
at_exit do
@ssh_forward.stop unless @ssh_forward.nil?
end
"http://127.0.0.1:#{port}"
end
|
#rc(image) ⇒ Object
44
45
46
|
# File 'lib/picsolve_docker_builder/helpers/kubernetes_manager.rb', line 44
def rc(image)
Kubernetes::Rc.new(image, self)
end
|
#service(image) ⇒ Object
40
41
42
|
# File 'lib/picsolve_docker_builder/helpers/kubernetes_manager.rb', line 40
def service(image)
Kubernetes::Service.new(image, self)
end
|
#template_labels(i) ⇒ Object
54
55
56
57
58
59
60
|
# File 'lib/picsolve_docker_builder/helpers/kubernetes_manager.rb', line 54
def template_labels(i)
{
'name' => i.name,
'app_name' => i.composer.app_name,
'stage' => i.composer.stage
}
end
|
#template_labels_pods(i) ⇒ Object
48
49
50
51
52
|
# File 'lib/picsolve_docker_builder/helpers/kubernetes_manager.rb', line 48
def template_labels_pods(i)
c = template_labels(i)
c['deployment'] = i.composer.hash
c
end
|