Skip to content

Commit db17097

Browse files
committed
Switch to repos to maintaned pkgs.k8s.io
1 parent c69dfe7 commit db17097

File tree

2 files changed

+147
-10
lines changed

2 files changed

+147
-10
lines changed

Diff for: manifests/repos.pp

+14-8
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
# @param container_runtime
44
# This is the runtime that the Kubernetes cluster will use.
55
# It can only be set to "cri_containerd" or "docker". Defaults to cri_containerd
6+
# @param kubernetes_version
7+
# The kubernetes version used to determine major release version.
68
# @param kubernetes_apt_location
79
# The APT repo URL for the Kubernetes packages. Defaults to https://apt.kubernetes.io
810
# @param kubernetes_apt_release
@@ -40,6 +42,7 @@
4042
#
4143
class kubernetes::repos (
4244
String $container_runtime = $kubernetes::container_runtime,
45+
Optional[String] $kubernetes_version = $kubernetes::kubernetes_version,
4346
Optional[String] $kubernetes_apt_location = $kubernetes::kubernetes_apt_location,
4447
Optional[String] $kubernetes_apt_release = $kubernetes::kubernetes_apt_release,
4548
Optional[String] $kubernetes_apt_repos = $kubernetes::kubernetes_apt_repos,
@@ -60,16 +63,18 @@
6063

6164
) {
6265
if $create_repos {
66+
$parts = split($kubernetes_version, '[.]')
67+
$minor_version = "${parts[0]}.${parts[1]}"
6368
case $facts['os']['family'] {
6469
'Debian': {
6570
$codename = fact('os.distro.codename')
6671
apt::source { 'kubernetes':
67-
location => pick($kubernetes_apt_location,'https://apt.kubernetes.io'),
68-
repos => pick($kubernetes_apt_repos,'main'),
69-
release => pick($kubernetes_apt_release,'kubernetes-xenial'),
72+
location => pick($kubernetes_apt_location,"https://pkgs.k8s.io/core:/stable:/v${minor_version}/deb"),
73+
repos => pick($kubernetes_apt_repos,'/'),
74+
release => $kubernetes_apt_release,
7075
key => {
71-
'id' => pick($kubernetes_key_id,'A362B822F6DEDC652817EA46B53DC80D13EDEF05'),
72-
'source' => pick($kubernetes_key_source,'https://packages.cloud.google.com/apt/doc/apt-key.gpg'),
76+
'id' => pick($kubernetes_key_id,'F46193FF99DBC56573C3B95949D205BA06FEF67C'),
77+
'source' => pick($kubernetes_key_source,"https://pkgs.k8s.io/core:/stable:/v${minor_version}/deb/Release.key"),
7378
},
7479
}
7580

@@ -99,9 +104,10 @@
99104

100105
yumrepo { 'kubernetes':
101106
descr => 'Kubernetes',
102-
baseurl => pick($kubernetes_yum_baseurl,'https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64'),
103-
gpgkey => pick($kubernetes_yum_gpgkey,'https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg'),
104-
gpgcheck => true,
107+
baseurl => pick($kubernetes_yum_baseurl,"https://pkgs.k8s.io/core:/stable:/v${minor_version}/rpm/"),
108+
gpgkey => pick($kubernetes_yum_gpgkey,"https://pkgs.k8s.io/core:/stable:/v${minor_version}/rpm/repodata/repomd.xml.key"),
109+
enabled => 1,
110+
gpgcheck => 1,
105111
}
106112
}
107113

Diff for: spec/classes/repos_spec.rb

+133-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,67 @@
22

33
require 'spec_helper'
44
describe 'kubernetes::repos', type: :class do
5+
context 'Debian with default params' do
6+
let(:facts) do
7+
{
8+
osfamily: 'Debian', # needed to run dependent tests from fixtures puppetlabs-apt
9+
kernel: 'Linux',
10+
os: {
11+
family: 'Debian',
12+
name: 'Ubuntu',
13+
release: {
14+
full: '16.04'
15+
},
16+
distro: {
17+
codename: 'xenial'
18+
}
19+
}
20+
}
21+
end
22+
let(:params) do
23+
{
24+
'container_runtime' => 'docker',
25+
'kubernetes_version' => '1.28.1',
26+
'kubernetes_apt_location' => '',
27+
'kubernetes_apt_release' => '',
28+
'kubernetes_apt_repos' => '',
29+
'kubernetes_key_id' => '',
30+
'kubernetes_key_source' => '',
31+
'kubernetes_yum_baseurl' => 'https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64',
32+
'kubernetes_yum_gpgkey' => 'https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg',
33+
'docker_apt_location' => 'https://download.docker.com/linux/ubuntu',
34+
'docker_apt_release' => 'xenial',
35+
'docker_apt_repos' => 'main',
36+
'docker_yum_baseurl' => 'https://download.docker.com/linux/centos/7/x86_64/stable',
37+
'docker_yum_gpgkey' => 'https://download.docker.com/linux/centos/gpg',
38+
'docker_key_id' => '9DC858229FC7DD38854AE2D88D81803C0EBFCD88',
39+
'docker_key_source' => 'https://download.docker.com/linux/ubuntu/gpg',
40+
'containerd_install_method' => 'archive',
41+
'create_repos' => true,
42+
'manage_docker' => true
43+
}
44+
end
45+
46+
it {
47+
expect(subject).to contain_apt__source('kubernetes').with(
48+
ensure: 'present',
49+
location: 'https://pkgs.k8s.io/core:/stable:/v1.28/deb',
50+
repos: '/',
51+
key: { 'id' => 'F46193FF99DBC56573C3B95949D205BA06FEF67C', 'source' => 'https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key' },
52+
)
53+
}
54+
55+
it {
56+
expect(subject).to contain_apt__source('docker').with(
57+
ensure: 'present',
58+
location: 'https://download.docker.com/linux/ubuntu',
59+
repos: 'main',
60+
release: 'xenial',
61+
key: { 'id' => '9DC858229FC7DD38854AE2D88D81803C0EBFCD88', 'source' => 'https://download.docker.com/linux/ubuntu/gpg' },
62+
)
63+
}
64+
end
65+
566
context 'with osfamily => Ubuntu and manage_docker => true' do
667
let(:facts) do
768
{
@@ -22,6 +83,7 @@
2283
let(:params) do
2384
{
2485
'container_runtime' => 'docker',
86+
'kubernetes_version' => '1.28.1',
2587
'kubernetes_apt_location' => 'http://apt.kubernetes.io',
2688
'kubernetes_apt_release' => 'kubernetes-xenial',
2789
'kubernetes_apt_repos' => 'main',
@@ -83,6 +145,7 @@
83145
let(:params) do
84146
{
85147
'container_runtime' => 'cri_containerd',
148+
'kubernetes_version' => '1.28.1',
86149
'kubernetes_apt_location' => 'http://apt.kubernetes.io',
87150
'kubernetes_apt_release' => 'kubernetes-xenial',
88151
'kubernetes_apt_repos' => 'main',
@@ -124,6 +187,58 @@
124187
}
125188
end
126189

190+
context 'RedHat with default params' do
191+
let(:facts) do
192+
{
193+
operatingsystem: 'RedHat',
194+
osfamily: 'RedHat',
195+
operatingsystemrelease: '7.0',
196+
kernel: 'Linux',
197+
os: {
198+
family: 'RedHat',
199+
name: 'RedHat',
200+
release: {
201+
full: '7.0'
202+
}
203+
}
204+
}
205+
end
206+
207+
let(:params) do
208+
{
209+
'container_runtime' => 'docker',
210+
'kubernetes_version' => '1.28.1',
211+
'kubernetes_apt_location' => '',
212+
'kubernetes_apt_release' => '',
213+
'kubernetes_apt_repos' => '',
214+
'kubernetes_key_id' => '',
215+
'kubernetes_key_source' => '',
216+
'kubernetes_yum_baseurl' => '',
217+
'kubernetes_yum_gpgkey' => '',
218+
'docker_apt_location' => 'https://download.docker.com/linux/ubuntu',
219+
'docker_apt_release' => 'xenial',
220+
'docker_apt_repos' => 'main',
221+
'docker_yum_baseurl' => 'https://download.docker.com/linux/centos/7/x86_64/stable',
222+
'docker_yum_gpgkey' => 'https://download.docker.com/linux/centos/gpg',
223+
'docker_key_id' => '9DC858229FC7DD38854AE2D88D81803C0EBFCD88',
224+
'docker_key_source' => 'https://download.docker.com/linux/ubuntu/gpg',
225+
'containerd_install_method' => 'archive',
226+
'create_repos' => true,
227+
'manage_docker' => false
228+
}
229+
end
230+
231+
it { is_expected.not_to contain_yumrepo('docker') }
232+
233+
it {
234+
expect(subject).to contain_yumrepo('kubernetes').with(
235+
'enabled' => '1',
236+
'baseurl' => 'https://pkgs.k8s.io/core:/stable:/v1.28/rpm/',
237+
'gpgkey' => 'https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key',
238+
)
239+
}
240+
end
241+
127242
context 'with osfamily => RedHat and manage_epel => true and manage_docker => false' do
128243
let(:facts) do
129244
{
@@ -144,6 +259,7 @@
144259
let(:params) do
145260
{
146261
'container_runtime' => 'docker',
262+
'kubernetes_version' => '1.28.1',
147263
'kubernetes_apt_location' => 'http://apt.kubernetes.io',
148264
'kubernetes_apt_release' => 'kubernetes-xenial',
149265
'kubernetes_apt_repos' => 'main',
@@ -165,7 +281,14 @@
165281
end
166282

167283
it { is_expected.not_to contain_yumrepo('docker') }
168-
it { is_expected.to contain_yumrepo('kubernetes') }
284+
285+
it {
286+
expect(subject).to contain_yumrepo('kubernetes').with(
287+
'enabled' => '1',
288+
'baseurl' => 'https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64',
289+
'gpgkey' => 'https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg',
290+
)
291+
}
169292
end
170293

171294
context 'with osfamily => RedHat and container_runtime => cri_containerd and containerd_install_method => package' do
@@ -187,6 +310,7 @@
187310

188311
let(:params) do
189312
{
313+
'kubernetes_version' => '1.28.1',
190314
'container_runtime' => 'cri_containerd',
191315
'kubernetes_apt_location' => 'http://apt.kubernetes.io',
192316
'kubernetes_apt_release' => 'kubernetes-xenial',
@@ -209,6 +333,13 @@
209333
end
210334

211335
it { is_expected.to contain_yumrepo('docker') }
212-
it { is_expected.to contain_yumrepo('kubernetes') }
336+
337+
it {
338+
expect(subject).to contain_yumrepo('kubernetes').with(
339+
'enabled' => '1',
340+
'baseurl' => 'https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64',
341+
'gpgkey' => 'https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg',
342+
)
343+
}
213344
end
214345
end

0 commit comments

Comments
 (0)