2 changes: 1 addition & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"settings": {
"terminal.integrated.profiles.linux": {
"bash": {
"path": "bash",
"path": "bash"
}
}
},
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/auto_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
persist-credentials: false

- name: "PDK Release prep"
uses: docker://puppet/iac_release:ci
uses: docker://puppet/pdk:2.6.1.0
with:
args: 'release prep --force'
env:
Expand Down
5 changes: 1 addition & 4 deletions .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ require:
- rubocop-rspec
AllCops:
DisplayCopNames: true
TargetRubyVersion: '2.4'
TargetRubyVersion: '2.5'
Include:
- "**/*.rb"
Exclude:
Expand All @@ -20,10 +20,7 @@ AllCops:
- "**/Guardfile"
- tooling/kube_tool/*
- tooling/*
- spec/defines/*
- spec/classes/*
- spec/*
- spec/acceptance/*
- rakelib/*
- plans/*.pp
- tasks/*
Expand Down
6 changes: 2 additions & 4 deletions .sync.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ Gemfile:
optional:
':development':
- gem: 'github_changelog_generator'
version: '= 1.15.2'

Rakefile:
changelog_user: puppetlabs
Expand All @@ -35,14 +36,11 @@ Rakefile:
strict:
configs:
AllCops:
TargetRubyVersion: '2.4'
TargetRubyVersion: '2.5'
Exclude:
- tooling/kube_tool/*
- tooling/*
- spec/defines/*
- spec/classes/*
- spec/*
- spec/acceptance/*
- rakelib/*
- plans/*.pp
- tasks/*
Expand Down
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@

All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org).

## [v7.1.0](https://github.com/puppetlabs/puppetlabs-kubernetes/tree/v7.1.0) (2023-01-27)

[Full Changelog](https://github.com/puppetlabs/puppetlabs-kubernetes/compare/v7.0.0...v7.1.0)

### Added

- Reproducible kube-tool build [\#605](https://github.com/puppetlabs/puppetlabs-kubernetes/pull/605) ([deric](https://github.com/deric))
- add new parameter node\_extra\_taints [\#586](https://github.com/puppetlabs/puppetlabs-kubernetes/pull/586) ([BaronMsk](https://github.com/BaronMsk))

## [v7.0.0](https://github.com/puppetlabs/puppetlabs-kubernetes/tree/v7.0.0) (2022-12-15)

[Full Changelog](https://github.com/puppetlabs/puppetlabs-kubernetes/compare/v6.3.0...v7.0.0)
Expand Down
10 changes: 7 additions & 3 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,12 @@ def location_for(place_or_version, fake_version = nil)
end

group :development do
gem "json", '~> 2.0', require: false
gem "voxpupuli-puppet-lint-plugins", '~> 3.0', require: false
gem "json", '= 2.1.0', require: false if Gem::Requirement.create(['>= 2.5.0', '< 2.7.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "json", '= 2.3.0', require: false if Gem::Requirement.create(['>= 2.7.0', '< 3.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "json", '= 2.5.1', require: false if Gem::Requirement.create(['>= 3.0.0', '< 3.0.5']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "json", '= 2.6.1', require: false if Gem::Requirement.create(['>= 3.1.0', '< 3.1.3']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "json", '= 2.6.3', require: false if Gem::Requirement.create(['>= 3.2.0', '< 4.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
gem "voxpupuli-puppet-lint-plugins", '~> 3.1', require: false
gem "facterdb", '~> 1.18', require: false
gem "metadata-json-lint", '>= 2.0.2', '< 4.0.0', require: false
gem "puppetlabs_spec_helper", '>= 3.0.0', '< 5.0.0', require: false
Expand All @@ -30,7 +34,7 @@ group :development do
gem "rubocop-performance", '= 1.9.1', require: false
gem "rubocop-rspec", '= 2.0.1', require: false
gem "rb-readline", '= 0.5.5', require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "github_changelog_generator", require: false
gem "github_changelog_generator", '= 1.15.2', require: false
end
group :system_tests do
gem "puppet_litmus", '< 1.0.0', require: false, platforms: [:ruby]
Expand Down
13 changes: 13 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -821,6 +821,19 @@ An override to the label of a node.

Defaults to `hostname`.

#### `node_extra_taints`

Additional taints for node.
Defaults to `undef`.

For example,

```puppet
[{'key' => 'dedicated','value' => 'NewNode','effect' => 'NoSchedule', 'operator', => 'Equal'}]
```

About kubernetes taints `https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/`

#### `runc_source`

The download URL for `runc`.
Expand Down
26 changes: 25 additions & 1 deletion REFERENCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -899,6 +899,12 @@ Defaults to /var/lib/etcd.
Defaults to hostname.
NOTE: Ignored when cloud_provider is AWS, until this lands fixed https://github.com/kubernetes/kubernetes/pull/61878

[*node_extra_taints*]
Additional taints for node.
Example:
[{'key' => 'dedicated','value' => 'NewNode','effect' => 'NoSchedule', 'operator' => 'Equal'}]
Defaults to undef

[*token*]
A string to use when joining nodes to the cluster. Must be in the form of '[a-z0-9]{6}.[a-z0-9]{16}'
Defaults to undef
Expand Down Expand Up @@ -1215,6 +1221,7 @@ The following parameters are available in the `kubernetes` class:
* [`scheduler_extra_arguments`](#-kubernetes--scheduler_extra_arguments)
* [`service_cidr`](#-kubernetes--service_cidr)
* [`node_label`](#-kubernetes--node_label)
* [`node_extra_taints`](#-kubernetes--node_extra_taints)
* [`controller_address`](#-kubernetes--controller_address)
* [`cloud_provider`](#-kubernetes--cloud_provider)
* [`cloud_config`](#-kubernetes--cloud_config)
Expand Down Expand Up @@ -1799,7 +1806,15 @@ Default value: `'10.96.0.0/12'`

##### <a name="-kubernetes--node_label"></a>`node_label`

Data type: `Optional[Stdlib::Fqdn]`
Data type: `Optional[String]`



Default value: `undef`

##### <a name="-kubernetes--node_extra_taints"></a>`node_extra_taints`

Data type: `Optional[Array[Hash]]`



Expand Down Expand Up @@ -3098,6 +3113,7 @@ The following parameters are available in the `kubernetes::config::worker` class
* [`feature_gates`](#-kubernetes--config--worker--feature_gates)
* [`cloud_provider`](#-kubernetes--config--worker--cloud_provider)
* [`cloud_config`](#-kubernetes--config--worker--cloud_config)
* [`node_extra_taints`](#-kubernetes--config--worker--node_extra_taints)
* [`kubelet_extra_arguments`](#-kubernetes--config--worker--kubelet_extra_arguments)
* [`kubelet_extra_config`](#-kubernetes--config--worker--kubelet_extra_config)
* [`ignore_preflight_errors`](#-kubernetes--config--worker--ignore_preflight_errors)
Expand Down Expand Up @@ -3217,6 +3233,14 @@ Data type: `Optional[String]`

Default value: `$kubernetes::cloud_config`

##### <a name="-kubernetes--config--worker--node_extra_taints"></a>`node_extra_taints`

Data type: `Optional[Array[Hash]]`



Default value: `$kubernetes::node_extra_taints`

##### <a name="-kubernetes--config--worker--kubelet_extra_arguments"></a>`kubelet_extra_arguments`

Data type: `Optional[Array]`
Expand Down
1 change: 1 addition & 0 deletions manifests/config/worker.pp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
Optional[String] $feature_gates = undef,
Optional[String] $cloud_provider = $kubernetes::cloud_provider,
Optional[String] $cloud_config = $kubernetes::cloud_config,
Optional[Array[Hash]] $node_extra_taints = $kubernetes::node_extra_taints,
Optional[Array] $kubelet_extra_arguments = $kubernetes::kubelet_extra_arguments,
Optional[Hash] $kubelet_extra_config = $kubernetes::kubelet_extra_config,
Optional[Array] $ignore_preflight_errors = undef,
Expand Down
9 changes: 8 additions & 1 deletion manifests/init.pp
Original file line number Diff line number Diff line change
Expand Up @@ -326,6 +326,12 @@
# Defaults to hostname.
# NOTE: Ignored when cloud_provider is AWS, until this lands fixed https://github.com/kubernetes/kubernetes/pull/61878
#
# [*node_extra_taints*]
# Additional taints for node.
# Example:
# [{'key' => 'dedicated','value' => 'NewNode','effect' => 'NoSchedule', 'operator' => 'Equal'}]
# Defaults to undef
#
# [*token*]
# A string to use when joining nodes to the cluster. Must be in the form of '[a-z0-9]{6}.[a-z0-9]{16}'
# Defaults to undef
Expand Down Expand Up @@ -643,7 +649,8 @@
Array $controllermanager_extra_arguments = [],
Array $scheduler_extra_arguments = [],
String $service_cidr = '10.96.0.0/12',
Optional[Stdlib::Fqdn] $node_label = undef,
Optional[String] $node_label = undef,
Optional[Array[Hash]] $node_extra_taints = undef,
Optional[String] $controller_address = undef,
Optional[String] $cloud_provider = undef,
Optional[String] $cloud_config = undef,
Expand Down
2 changes: 1 addition & 1 deletion manifests/repos.pp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
repos => pick($kubernetes_apt_repos,'main'),
release => pick($kubernetes_apt_release,'kubernetes-xenial'),
key => {
'id' => pick($kubernetes_key_id,'7F92E05B31093BEF5A3C2D38FEEA9169307EA071'),
'id' => pick($kubernetes_key_id,'A362B822F6DEDC652817EA46B53DC80D13EDEF05'),
'source' => pick($kubernetes_key_source,'https://packages.cloud.google.com/apt/doc/apt-key.gpg'),
},
}
Expand Down
6 changes: 3 additions & 3 deletions metadata.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "puppetlabs-kubernetes",
"version": "7.0.0",
"version": "7.1.0",
"author": "puppetlabs",
"summary": "The module installs and configures a Kubernetes cluster",
"license": "Apache-2.0",
Expand Down Expand Up @@ -68,7 +68,7 @@
"version_requirement": ">= 6.24.0 < 8.0.0"
}
],
"pdk-version": "2.5.0",
"pdk-version": "2.6.1",
"template-url": "https://github.com/puppetlabs/pdk-templates.git#main",
"template-ref": "tags/2.6.0-0-gd0490b9"
"template-ref": "heads/main-0-g383f471"
}
18 changes: 9 additions & 9 deletions spec/acceptance/integration_kubernetes_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
describe 'set up controller' do
it 'sets up the controller' do
run_shell('puppet agent --test', expect_failures: true) do |r|
expect(r.exit_code.to_s).to match(/0|2/)
expect(r.exit_code.to_s).to match(%r{0|2})
end
end
end
Expand All @@ -21,7 +21,7 @@
describe 'set up worker' do
it 'sets up the worker' do
run_shell('puppet agent --test', expect_failures: true) do |r|
expect(r.exit_code.to_s).to match(/0|2/)
expect(r.exit_code.to_s).to match(%r{0|2})
end
end
end
Expand All @@ -32,24 +32,24 @@
describe 'set up worker' do
it 'sets up the worker' do
run_shell('puppet agent --test', expect_failures: true) do |r|
expect(r.exit_code.to_s).to match(/0|2/)
expect(r.exit_code.to_s).to match(%r{0|2})
end
end
end
end
context 'verify the k8 nodes' do
before(:all) { change_target_host('controller') }
hostname1, ipaddr1, int_ipaddr1 = fetch_ip_hostname_by_role('controller')
hostname2, ipaddr2, int_ipaddr2 = fetch_ip_hostname_by_role('worker1')
hostname3, ipaddr3, int_ipaddr3 = fetch_ip_hostname_by_role('worker2')
hostname1, _ipaddr1, = fetch_ip_hostname_by_role('controller')
hostname2, _ipaddr2, = fetch_ip_hostname_by_role('worker1')
hostname3, _ipaddr3, = fetch_ip_hostname_by_role('worker2')
after(:all) { reset_target_host }
describe 'verify the k8 nodes' do
it 'verify the k8 nodes' do
run_shell('sleep 20')
run_shell('KUBECONFIG=/etc/kubernetes/admin.conf kubectl get nodes') do |r|
expect(r.stdout).to match(/#{hostname1}(\s)+Ready(\s)+control-plane,master/)
expect(r.stdout).to match(/#{hostname2}(\s)+Ready/)
expect(r.stdout).to match(/#{hostname3}(\s)+Ready/)
expect(r.stdout).to match(%r{#{hostname1}(\s)+Ready(\s)+control-plane,master})
expect(r.stdout).to match(%r{#{hostname2}(\s)+Ready})
expect(r.stdout).to match(%r{#{hostname3}(\s)+Ready})
end
end
end
Expand Down
15 changes: 7 additions & 8 deletions spec/acceptance/kubernetes_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
end

describe 'kubernetes class', :integration do

context 'it should install the module and run' do
before(:all) { change_target_host('controller') }
after(:all) { reset_target_host }
Expand Down Expand Up @@ -35,15 +34,15 @@ class {'kubernetes':
}
MANIFEST

it 'should run' do
it 'runs' do
apply_manifest(pp)
end

it 'should install kubectl' do
it 'installs kubectl' do
run_shell('kubectl')
end

it 'should install kube-dns' do
it 'installs kube-dns' do
run_shell('KUBECONFIG=/etc/kubernetes/admin.conf kubectl get deploy --namespace kube-system coredns')
end
end
Expand All @@ -53,22 +52,22 @@ class {'kubernetes':
after(:all) { reset_target_host }
it 'can deploy an application into a namespace and expose it' do
run_shell('KUBECONFIG=/etc/kubernetes/admin.conf kubectl create -f /tmp/nginx.yml') do |r|
expect(r.stdout).to match(/my-nginx created\nservice\/my-nginx created\n/)
expect(r.stdout).to match(%r{my-nginx created\nservice/my-nginx created\n})
end
end

it 'can access the deployed service' do
run_shell('sleep 60')
run_shell('curl --retry 10 --retry-delay 15 -s 10.96.188.5') do |r|
expect(r.stdout).to match (/Welcome to nginx!/)
expect(r.stdout).to match(%r{Welcome to nginx!})
end
end

it 'can delete a deployment' do
run_shell('KUBECONFIG=/etc/kubernetes/admin.conf kubectl delete -f /tmp/nginx.yml') do |r|
expect(r.stdout).to match(/deployment.apps "my-nginx" deleted\nservice "my-nginx" deleted/)
expect(r.stdout).to match(%r{deployment.apps "my-nginx" deleted\nservice "my-nginx" deleted})
end
run_shell('KUBECONFIG=/etc/kubernetes/admin.conf kubectl get deploy --all-namespaces | grep nginx', :expect_failures => true)
run_shell('KUBECONFIG=/etc/kubernetes/admin.conf kubectl get deploy --all-namespaces | grep nginx', expect_failures: true)
end
end
end
Expand Down
Loading