Class: PicsolveDockerBuilder::Helpers::Kubernetes::Service

Inherits:
Resource
  • Object
show all
Defined in:
lib/picsolve_docker_builder/helpers/kubernetes/service.rb

Overview

A generic kuberntes resource

Instance Method Summary collapse

Methods inherited from Resource

#client, #initialize, #template_labels

Methods included from Base

#base_dir, #config_file, #config_path, #config_paths, #create_logger, #default_config, #log, #read_config, #validate_config

Constructor Details

This class inherits a constructor from PicsolveDockerBuilder::Helpers::Kubernetes::Resource

Instance Method Details

#configObject



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/picsolve_docker_builder/helpers/kubernetes/service.rb', line 8

def config
  # workaround a bug on updating TODO: remove when fixed upstream
  @service.name = @image.name

  # configure the service
  @service. = {} unless @service.
  @service..name = @image.name
  @service..namespace = @image.composer.namespace
  @service..labels = template_labels
  @service.spec = {} unless @service.spec
  @service.spec.ports = @image.ports
  @service.spec.selector = {
    'name' => @image.name
  }
end

#deployObject



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/picsolve_docker_builder/helpers/kubernetes/service.rb', line 24

def deploy
  @existing = false
  begin
    @service = client.get_service @image.name, @image.composer.namespace
    @existing = true
  rescue KubeException
    @service = Kubeclient::Service.new
  end
  # config service
  config

  if @existing
    log.debug \
      "update service '#{@image.composer.namespace}/#{@image.name}' " \
      'on kubernetes'
    client.update_service @service
  else
    log.debug \
      "create service '#{@image.composer.namespace}/#{@image.name}' " \
      'on kubernetes'
    client.create_service @service
  end
end