Class: Kamal::Configuration::Loadbalancer

Inherits:
Proxy
  • Object
show all
Defined in:
lib/kamal/configuration/loadbalancer.rb

Constant Summary collapse

CONTAINER_NAME =
"load-balancer".freeze
SHARED_CONTAINER_NAME =
"kamal-proxy".freeze

Constants inherited from Proxy

Proxy::DEFAULT_LOG_REQUEST_HEADERS, Proxy::LOADBALANCER_CONTAINER_NAME

Instance Attribute Summary

Attributes inherited from Proxy

#config, #proxy_config, #role_name, #run, #secrets

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Proxy

#app_port, #certificate_pem_content, #container_tls_cert, #container_tls_key, #custom_ssl_certificate?, #deploy_command_args, #effective_loadbalancer, #host_tls_cert, #host_tls_key, #hosts, #load_balancing?, #loadbalancer, #loadbalancer_on_proxy_host?, #merge, #path_prefixes, #private_key_pem_content, #ssl?, #stop_command_args, #stop_options

Methods included from Validation

#validate!, #validation_yml

Constructor Details

#initialize(config:, proxy_config:, secrets:) ⇒ Loadbalancer

Returns a new instance of Loadbalancer.



9
10
11
# File 'lib/kamal/configuration/loadbalancer.rb', line 9

def initialize(config:, proxy_config:, secrets:)
  super
end

Class Method Details

.validation_config_keyObject



5
6
7
# File 'lib/kamal/configuration/loadbalancer.rb', line 5

def self.validation_config_key
  "proxy"
end

Instance Method Details

#container_nameObject



26
27
28
# File 'lib/kamal/configuration/loadbalancer.rb', line 26

def container_name
  on_proxy_host? ? SHARED_CONTAINER_NAME : CONTAINER_NAME
end

#deploy_optionsObject



13
14
15
16
17
18
19
20
# File 'lib/kamal/configuration/loadbalancer.rb', line 13

def deploy_options
  opts = super

  opts[:host] = hosts if hosts.present?
  opts[:tls] = proxy_config["ssl"].presence

  opts
end

#directoryObject



22
23
24
# File 'lib/kamal/configuration/loadbalancer.rb', line 22

def directory
  File.join config.run_directory, "loadbalancer"
end

#on_proxy_host?Boolean

When loadbalancer is on a proxy host, it takes over the proxy role

Returns:

  • (Boolean)


31
32
33
# File 'lib/kamal/configuration/loadbalancer.rb', line 31

def on_proxy_host?
  config.proxy_hosts.include?(config.proxy.effective_loadbalancer)
end