10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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
|
# File 'lib/kube/cluster/standard/deployment_with_service.rb', line 10
def initialize(
name:,
image:,
port:,
namespace: 'default',
env: {},
command: nil,
init_containers: [],
security_context: nil,
pod_security_context: nil,
volume_mounts: {},
service_port: nil,
&block
)
@_limits = {}
@_probes = {}
processed_env = EnvProcessing.process(env)
processed_volumes = VolumeProcessing.process(volume_mounts)
service_ports = Array(service_port || port)
service = Kube::Cluster::Standard::Service.new(
name: name,
namespace: namespace,
ports: service_ports
)
deployment = Kube::Cluster['Deployment'].new do
metadata.name = name
metadata.namespace = namespace
metadata.labels = { 'app' => name }
spec.replicas = 1
spec.selector.matchLabels = { 'app' => name }
spec.template.metadata.labels = { 'app' => name }
spec.template.spec.securityContext = pod_security_context if pod_security_context
container = {
name: name,
image: image,
ports: [{ name: 'http', containerPort: port, protocol: 'TCP' }],
env: processed_env
}
container[:command] = command if command
container[:securityContext] = security_context if security_context
container[:volumeMounts] = processed_volumes[:volume_mounts] unless processed_volumes[:volume_mounts].empty?
spec.template.spec.containers = [container]
spec.template.spec.initContainers = init_containers unless init_containers.empty?
spec.template.spec.volumes = processed_volumes[:volumes] unless processed_volumes[:volumes].empty?
end
super(deployment, service)
instance_exec(&block) if block
_apply_limits(deployment)
_apply_probes(deployment)
end
|