-
Notifications
You must be signed in to change notification settings - Fork 131
/
service.pp
129 lines (117 loc) · 4.38 KB
/
service.pp
1
2
3
4
5
6
7
8
9
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
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# Puppet class that controls the Kubelet service
class kubernetes::service (
String $container_runtime = $kubernetes::container_runtime,
Enum['archive','package'] $containerd_install_method = $kubernetes::containerd_install_method,
Boolean $controller = $kubernetes::controller,
Boolean $manage_docker = $kubernetes::manage_docker,
Boolean $manage_etcd = $kubernetes::manage_etcd,
String $etcd_install_method = $kubernetes::etcd_install_method,
String $kubernetes_version = $kubernetes::kubernetes_version,
Optional[String] $cloud_provider = $kubernetes::cloud_provider,
Optional[String] $cloud_config = $kubernetes::cloud_config,
) {
file { '/etc/systemd/system/kubelet.service.d':
ensure => directory,
}
exec { 'kubernetes-systemd-reload':
path => '/bin',
command => 'systemctl daemon-reload',
refreshonly => true,
}
case $container_runtime {
'docker': {
if $manage_docker == true {
service { 'docker':
ensure => running,
enable => true,
}
}
}
'cri_containerd': {
if $containerd_install_method == 'package' {
$containerd_service_require = undef
} else {
$containerd_service_require = Exec['kubernetes-systemd-reload']
file { '/etc/systemd/system/kubelet.service.d/0-containerd.conf':
ensure => file,
owner => 'root',
group => 'root',
mode => '0644',
content => template('kubernetes/0-containerd.conf.erb'),
require => File['/etc/systemd/system/kubelet.service.d'],
notify => [Exec['kubernetes-systemd-reload'], Service['containerd']],
}
file { '/etc/systemd/system/containerd.service':
ensure => file,
owner => 'root',
group => 'root',
mode => '0644',
content => template('kubernetes/containerd.service.erb'),
notify => [Exec['kubernetes-systemd-reload'], Service['containerd']],
}
}
service { 'containerd':
ensure => running,
enable => true,
require => $containerd_service_require,
}
}
default: {
fail('Please specify a valid container runtime')
}
}
if $controller and $manage_etcd {
service { 'etcd':
ensure => running,
enable => true,
}
File <|
path == '/etc/systemd/system/kubelet.service.d' or
path == '/etc/default/etcd' or
path == '/etc/systemd/system/etcd.service'
|> ~> Service['etcd']
if $etcd_install_method == 'wget' {
exec { 'systemctl-daemon-reload-etcd':
path => '/usr/bin:/bin:/usr/sbin:/sbin',
command => 'systemctl daemon-reload',
refreshonly => true,
subscribe => File['/etc/systemd/system/etcd.service'],
notify => Service['etcd'],
}
}
}
# RedHat needs to have CPU and Memory accounting enabled to avoid systemd proc errors
if $facts['os']['family'] == 'RedHat' {
file { '/etc/systemd/system/kubelet.service.d/11-cgroups.conf':
ensure => file,
owner => 'root',
group => 'root',
mode => '0644',
content => "[Service]\nCPUAccounting=true\nMemoryAccounting=true\n",
require => File['/etc/systemd/system/kubelet.service.d'],
notify => Exec['kubernetes-systemd-reload'],
}
}
# v1.12 and up get the cloud config parameters from config file
if $kubernetes_version =~ /1.1(0|1)/ and !empty($cloud_provider) {
# Cloud config is not used by all providers, but will cause service startup fail if specified but missing
if empty($cloud_config) {
$kubelet_extra_args = "--cloud-provider=${cloud_provider}"
} else {
$kubelet_extra_args = "--cloud-provider=${cloud_provider} --cloud-config=${cloud_config}"
}
file { '/etc/systemd/system/kubelet.service.d/20-cloud.conf':
ensure => file,
owner => 'root',
group => 'root',
mode => '0644',
content => template('kubernetes/20-cloud.conf.erb'),
require => File['/etc/systemd/system/kubelet.service.d'],
notify => Exec['kubernetes-systemd-reload'],
}
}
service { 'kubelet':
ensure => running,
enable => true,
}
}