Skip to content

Commit

Permalink
Use puppet-kmod to manage kernel_modules
Browse files Browse the repository at this point in the history
  • Loading branch information
SimonHoenscheid committed Mar 6, 2023
1 parent 45886d4 commit 2fbc989
Show file tree
Hide file tree
Showing 8 changed files with 53 additions and 21 deletions.
1 change: 1 addition & 0 deletions .fixtures.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ fixtures:
archive: "puppet/archive"
stdlib: "puppetlabs/stdlib"
systemd: "camptocamp/systemd"
kmod: "puppet/kmod"
27 changes: 27 additions & 0 deletions REFERENCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ Sets up a Kubernetes instance - either as a node or as a server

The following parameters are available in the `k8s` class:

* [`manage_kernel_modules`](#-k8s--manage_kernel_modules)
* [`ensure`](#-k8s--ensure)
* [`packaging`](#-k8s--packaging)
* [`native_packaging`](#-k8s--native_packaging)
Expand Down Expand Up @@ -105,6 +106,14 @@ The following parameters are available in the `k8s` class:
* [`cluster_domain`](#-k8s--cluster_domain)
* [`role`](#-k8s--role)

##### <a name="-k8s--manage_kernel_modules"></a>`manage_kernel_modules`

Data type: `Boolean`

A flag to manage required Kernel modules.

Default value: `true`

##### <a name="-k8s--ensure"></a>`ensure`

Data type: `K8s::Ensure`
Expand Down Expand Up @@ -408,6 +417,7 @@ The following parameters are available in the `k8s::node` class:
* [`manage_kubelet`](#-k8s--node--manage_kubelet)
* [`manage_proxy`](#-k8s--node--manage_proxy)
* [`manage_firewall`](#-k8s--node--manage_firewall)
* [`manage_kernel_modules`](#-k8s--node--manage_kernel_modules)
* [`puppetdb_discovery_tag`](#-k8s--node--puppetdb_discovery_tag)
* [`cert_path`](#-k8s--node--cert_path)
* [`ca_cert`](#-k8s--node--ca_cert)
Expand Down Expand Up @@ -474,6 +484,14 @@ Data type: `Boolean`

Default value: `$k8s::manage_firewall`

##### <a name="-k8s--node--manage_kernel_modules"></a>`manage_kernel_modules`

Data type: `Boolean`



Default value: `$k8s::manage_kernel_modules`

##### <a name="-k8s--node--puppetdb_discovery_tag"></a>`puppetdb_discovery_tag`

Data type: `String[1]`
Expand Down Expand Up @@ -690,6 +708,7 @@ The following parameters are available in the `k8s::node::kubelet` class:
* [`auth`](#-k8s--node--kubelet--auth)
* [`rotate_server_tls`](#-k8s--node--kubelet--rotate_server_tls)
* [`manage_firewall`](#-k8s--node--kubelet--manage_firewall)
* [`manage_kernel_modules`](#-k8s--node--kubelet--manage_kernel_modules)
* [`support_dualstack`](#-k8s--node--kubelet--support_dualstack)
* [`cert_path`](#-k8s--node--kubelet--cert_path)
* [`kubeconfig`](#-k8s--node--kubelet--kubeconfig)
Expand Down Expand Up @@ -778,6 +797,14 @@ Data type: `Boolean`

Default value: `$k8s::node::manage_firewall`

##### <a name="-k8s--node--kubelet--manage_kernel_modules"></a>`manage_kernel_modules`

Data type: `Boolean`



Default value: `$k8s::node::manage_kernel_modules`

##### <a name="-k8s--node--kubelet--support_dualstack"></a>`support_dualstack`

Data type: `Boolean`
Expand Down
2 changes: 0 additions & 2 deletions files/etc/modules-load.d/k8s

This file was deleted.

7 changes: 6 additions & 1 deletion manifests/init.pp
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
# @summary Sets up a Kubernetes instance - either as a node or as a server
#
# @param manage_kernel_modules
# A flag to manage required Kernel modules.
#
class k8s (
K8s::Ensure $ensure = 'present',
K8s::Ensure $ensure = 'present',
Enum['container', 'native'] $packaging = 'native',
K8s::Native_packaging $native_packaging = 'loose',
String[1] $version = '1.26.1',
Expand All @@ -16,6 +20,7 @@

Boolean $manage_etcd = true,
Boolean $manage_firewall = false,
Boolean $manage_kernel_modules = true,
Boolean $manage_image = false,
Boolean $manage_repo = true,
Boolean $manage_packages = true,
Expand Down
1 change: 1 addition & 0 deletions manifests/node.pp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
Boolean $manage_kubelet = true,
Boolean $manage_proxy = false,
Boolean $manage_firewall = $k8s::manage_firewall,
Boolean $manage_kernel_modules = $k8s::manage_kernel_modules,
String[1] $puppetdb_discovery_tag = $k8s::puppetdb_discovery_tag,

Stdlib::Unixpath $cert_path = '/var/lib/kubelet/pki',
Expand Down
30 changes: 12 additions & 18 deletions manifests/node/kubelet.pp
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,11 @@
String $runtime_service = $k8s::container_runtime_service,
String[1] $puppetdb_discovery_tag = $k8s::node::puppetdb_discovery_tag,

K8s::Node_auth $auth = $k8s::node::node_auth,
Boolean $rotate_server_tls = $auth == 'bootstrap',
Boolean $manage_firewall = $k8s::node::manage_firewall,
Boolean $support_dualstack = $k8s::cluster_cidr =~ Array[Data, 2],
K8s::Node_auth $auth = $k8s::node::node_auth,
Boolean $rotate_server_tls = $auth == 'bootstrap',
Boolean $manage_firewall = $k8s::node::manage_firewall,
Boolean $manage_kernel_modules = $k8s::node::manage_kernel_modules,
Boolean $support_dualstack = $k8s::cluster_cidr =~ Array[Data, 2],

Stdlib::Unixpath $cert_path = $k8s::node::cert_path,
Stdlib::Unixpath $kubeconfig = '/srv/kubernetes/kubelet.kubeconf',
Expand Down Expand Up @@ -135,21 +136,14 @@
'cgroupDriver' => 'systemd',
} + $_authentication_hash

file { '/etc/modules-load.d/k8s':
ensure => $ensure,
content => file('k8s/etc/modules-load.d/k8s'),
}
exec {
default:
path => ['/bin', '/sbin', '/usr/bin'],
refreshonly => true,
subscribe => File['/etc/modules-load.d/k8s'];
if $manage_kernel_modules {
kmod::load {
default:
ensure => $ensure;

'modprobe overlay':
unless => 'lsmod | grep overlay';

'modprobe br_netfilter':
unless => 'lsmod | grep overlay';
'overlay':;
'br_netfilter':;
}
}

file { '/etc/sysctl.d/99-k8s.conf':
Expand Down
4 changes: 4 additions & 0 deletions metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@
"name": "puppetlabs-stdlib",
"version_requirement": ">= 5.0.0 < 9.0.0"
},
{
"name": "puppet-kmod",
"version_requirement": ">= 3.2.0 < 4.0.0"
},
{
"name": "puppet-systemd",
"version_requirement": ">= 2.0.0 < 4.0.0"
Expand Down
2 changes: 2 additions & 0 deletions spec/classes/node/kubelet_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ class { '::k8s::node':
let(:facts) { os_facts }

it { is_expected.to compile }
it { is_expected.to contain_kmod__load('overlay') }
it { is_expected.to contain_kmod__load('br_netfilter') }
end
end
end

0 comments on commit 2fbc989

Please sign in to comment.