Skip to content

Commit 85c1cea

Browse files
author
scott coulton
committed
final commit for cri-containerd
1 parent d37ac1d commit 85c1cea

File tree

13 files changed

+117
-37
lines changed

13 files changed

+117
-37
lines changed

README.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ The kube_tools help menu:
4848

4949
```puppet
5050
Usage: kube_tool [options]
51+
-o, --os-type os-type the os that kubernetes will run on
52+
-v, --version version the kubernetes version to install
53+
-r container runtime, the container runtime to use. this can only be docker or cri_containerd
54+
--container_runtime
5155
-f, --fqdn fqdn fqdn
5256
-i, --ip ip ip
5357
-b bootstrap, the bootstrap controller ip address
@@ -64,11 +68,14 @@ Usage: kube_tool [options]
6468
So to generate the hiera file for my cluster I use:
6569

6670
```puppet
67-
./kube_tool.rb -f kubernetes -i 172.17.10.101 -b 172.17.10.101 -e "etcd-kube-master=http://172.17.10.101:2380,etcd-kube-replica-master-01=http://172.17.10.210:2380,etcd-kube-replica-master-02=http://172.17.10.220:2380" -t "%{::ipaddress_enp0s8}" -a "%{::ipaddress_enp0s8}" -d true
71+
./kube_tool.rb -o debian -v 1.8.4 -r docker -f kubernetes -i 172.17.10.101 -b 172.17.10.101 -e "etcd-kube-master=http://172.17.10.101:2380,etcd-kube-replica-master-01=http://172.17.10.210:2380,etcd-kube-replica-master-02=http://172.17.10.220:2380" -t "%{::ipaddress_enp0s8}" -a "%{::ipaddress_enp0s8}" -d true
6872
```
6973

7074
The parameters are:
7175

76+
* `OS`: the os kubernetes will run on.
77+
* `VERSION`: the version of kubernetes you want to deploy
78+
* 'CONTAINER_RUNTIME`: the container runtime kubernetes will use, this can only be set to `docker` or `cri_containerd`
7279
* `FQDN`: the cluster fqdn.
7380
* `BOOTSTRAP_CONTROLLER_IP`: the ip address of the controller puppet will use to create things like cluster role bindings, kube dns, and the Kubernetes dashboard.
7481
* `ETCD_INITIAL_CLUSTER`: the server addresses. When in production, include three, five, or seven nodes for etcd.

manifests/config.pp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
class kubernetes::config (
44

55
$kubernetes_version = $kubernetes::kubernetes_version,
6+
$container_runtime = $kubernetes::container_runtime,
67
$kube_dns_version = $kubernetes::kube_dns_version,
78
$kubernetes_fqdn = $kubernetes::kubernetes_fqdn,
89
$controller = $kubernetes::controller,

manifests/init.pp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,12 @@
1414
# The version of the packages the Kubernetes os packages to install
1515
# ie kubectl and kubelet
1616
# Defaults to 1.7.3
17-
#
17+
#
18+
# [*container_runtime]
19+
# This is the runtime that the Kubernetes cluster will use.
20+
# It can only be set to "cri_containerd" or "docker"
21+
# Defaults to docker
22+
#
1823
# [*cni_version*]
1924
# The version of the cni package you would like to install
2025
# Defaults to 0.5.1
@@ -203,6 +208,7 @@
203208
$kubernetes_version = $kubernetes::params::kubernetes_version,
204209
$kubernetes_package_version = $kubernetes::params::kubernetes_package_version,
205210
$kubernetes_fqdn = $kubernetes::params::kubernetes_fqdn,
211+
$container_runtime = $kubernetes::params::container_runtime,
206212
$cni_version = $kubernetes::params::cni_version,
207213
$kube_dns_version = $kubernetes::params::kube_dns_version,
208214
$controller = $kubernetes::params::controller,

manifests/packages.pp

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,54 @@
33
class kubernetes::packages (
44

55
$kubernetes_package_version = $kubernetes::kubernetes_package_version,
6+
$container_runtime = $kubernetes::container_runtime,
67
$cni_version = $kubernetes::cni_version,
78
) {
89

910
$kube_packages = ['kubelet', 'kubectl']
1011

11-
case $::osfamily {
12-
'Debian' : {
13-
package { 'docker-engine':
12+
if $container_runtime == 'docker' {
13+
case $::osfamily {
14+
'Debian' : {
15+
package { 'docker-engine':
1416
ensure => '1.12.0-0~xenial',
17+
}
1518
}
16-
}
1719

18-
'RedHat' : {
19-
package { 'docker-engine':
20-
ensure => '1.12.6',
20+
'RedHat' : {
21+
package { 'docker-engine':
22+
ensure => '1.12.6',
23+
}
2124
}
22-
}
25+
2326
default: { notify {"The OS family ${::os_family} is not supported by this module":} }
27+
}
28+
29+
package { 'kubernetes-cni':
30+
ensure => $cni_version,
31+
}
2432
}
2533

26-
package { $kube_packages:
27-
ensure => $kubernetes_package_version,
34+
elsif $container_runtime == 'cri_containerd' {
35+
wget::fetch { 'wget cri-containerd':
36+
source => 'https://github.com/kubernetes-incubator/cri-containerd/releases/download/v1.0.0-alpha.1/cri-containerd-1.0.0-alpha.1.tar.gz',
37+
destination => '/',
38+
timeout => 0,
39+
verbose => false,
2840
}
2941

30-
package { 'kubernetes-cni':
31-
ensure => $cni_version,
42+
-> archive { 'cri-containerd-1.0.0-alpha.1.tar.gz':
43+
ensure => present,
44+
path => '/cri-containerd-1.0.0-alpha.1.tar.gz',
45+
extract => true,
46+
extract_command => 'tar xfz %s --strip-components=1',
47+
extract_path => '/',
48+
cleanup => true,
49+
creates => '/usr/local/bin/cri-containerd'
50+
}
51+
}
52+
53+
package { $kube_packages:
54+
ensure => $kubernetes_package_version,
3255
}
3356
}

manifests/params.pp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,17 @@
55
case $::osfamily {
66
'Debian' : {
77
$kubernetes_package_version = '1.7.3-01'
8-
$cni_version = '0.5.1-00'
8+
$cni_version = '0.6.0-00'
99
}
1010
'RedHat' : {
1111
$kubernetes_package_version = '1.7.3'
12-
$cni_version = '0.5.1'
12+
$cni_version = '0.6.0'
1313
}
1414
default: { notify {"The OS family ${::os_family} is not supported by this module":} }
1515
}
1616
$kubernetes_version = '1.7.3'
1717
$kube_dns_version = '1.14.2'
18+
$container_runtime = 'docker'
1819
$kubernetes_fqdn = 'kubernetes'
1920
$controller = false
2021
$bootstrap_controller = false

manifests/repos.pp

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
## kubernetes repos
22

33
class kubernetes::repos (
4+
$container_runtime = $kubernetes::container_runtime,
45
$manage_epel = $kubernetes::manage_epel,
56
){
67

@@ -18,26 +19,30 @@
1819
},
1920
}
2021

21-
apt::source { 'docker':
22-
location => 'https://apt.dockerproject.org/repo',
23-
repos => 'main',
24-
release => 'ubuntu-xenial',
25-
key => {
26-
'id' => '9DC858229FC7DD38854AE2D88D81803C0EBFCD88',
27-
'source' => 'https://download.docker.com/linux/ubuntu/gpg',
28-
},
22+
if $container_runtime == 'docker' {
23+
apt::source { 'docker':
24+
location => 'https://apt.dockerproject.org/repo',
25+
repos => 'main',
26+
release => 'ubuntu-xenial',
27+
key => {
28+
'id' => '9DC858229FC7DD38854AE2D88D81803C0EBFCD88',
29+
'source' => 'https://download.docker.com/linux/ubuntu/gpg',
30+
},
31+
}
2932
}
3033
}
3134
'RedHat': {
3235
if $manage_epel {
3336
include epel
3437
}
3538

36-
yumrepo { 'docker':
37-
descr => 'docker',
38-
baseurl => "https://yum.dockerproject.org/repo/main/${repo}/7",
39-
gpgkey => 'https://yum.dockerproject.org/gpg',
40-
gpgcheck => true,
39+
if $container_runtime == 'docker' {
40+
yumrepo { 'docker':
41+
descr => 'docker',
42+
baseurl => "https://yum.dockerproject.org/repo/main/${repo}/7",
43+
gpgkey => 'https://yum.dockerproject.org/gpg',
44+
gpgcheck => true,
45+
}
4146
}
4247

4348
yumrepo { 'kubernetes':

manifests/service.pp

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,25 @@
44

55
$controller = $kubernetes::controller,
66
$bootstrap_controller = $kubernetes::bootstrap_controller,
7+
$container_runtime = $kubernetes::container_runtime,
78
$etcd_ip = $kubernetes::etcd_ip,
89
){
910

1011
$peeruls = inline_template("'{\"peerURLs\":[\"http://${etcd_ip}:2380\"]}'")
1112

13+
if $container_runtime == 'docker' {
14+
1215
service { 'docker':
1316
ensure => running,
1417
enable => true,
18+
}
19+
20+
service {'kubelet':
21+
ensure => running,
22+
enable => true,
23+
subscribe => File['/etc/systemd/system/kubelet.service.d/kubernetes.conf'],
24+
require => Service['docker'],
25+
}
1526
}
1627

1728
file {'/etc/systemd/system/kubelet.service.d':
@@ -34,13 +45,30 @@
3445
refreshonly => true,
3546
}
3647

48+
if $container_runtime == 'cri_containerd' {
49+
50+
service {'containerd':
51+
ensure => running,
52+
enable => true,
53+
require => Exec['Reload systemd'],
54+
before => Service['kubelet'],
55+
}
56+
57+
service {'cri-containerd':
58+
ensure => running,
59+
enable => true,
60+
require => Exec['Reload systemd'],
61+
before => Service['kubelet'],
62+
}
63+
3764
service {'kubelet':
3865
ensure => running,
3966
enable => true,
4067
subscribe => File['/etc/systemd/system/kubelet.service.d/kubernetes.conf'],
41-
require => Service['docker'],
68+
require => [Service['containerd'], Service['cri-containerd']],
4269
}
4370

71+
}
4472
if $bootstrap_controller {
4573

4674
exec {'Checking for the Kubernets cluster to be ready':

spec/classes/config_spec.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
let(:params) do
1616
{
1717
'kubernetes_version' => '1.7.3',
18+
'container_runtime' => 'docker',
1819
'kube_dns_version' => '1.14.2',
1920
'controller' => true,
2021
'bootstrap_controller' => false,

spec/classes/init_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,4 @@
4848
it { should contain_class('kubernetes::config')}
4949
it { should contain_class('kubernetes::service')}
5050
end
51-
end
51+
end

spec/classes/packages_spec.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
let(:facts) { { :osfamily => 'Debian' } }
44
let(:params) do
55
{
6+
'container_runtime' => 'docker',
67
'kubernetes_package_version' => '1.7.3-01',
78
'cni_version' => '0.5.1-00',
89
}

0 commit comments

Comments
 (0)