From be5cb7a91d6eb9e972b8ebc8a07d8a927f9a98c8 Mon Sep 17 00:00:00 2001 From: Anthony Thomas Date: Thu, 1 Feb 2024 15:06:02 -0500 Subject: [PATCH 1/3] switch to new pkgs.k8s.io kubernetes deb repo --- manifests/profile/kubernetes/apt.pp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/manifests/profile/kubernetes/apt.pp b/manifests/profile/kubernetes/apt.pp index 203891e09..fbb41d0e9 100644 --- a/manifests/profile/kubernetes/apt.pp +++ b/manifests/profile/kubernetes/apt.pp @@ -1,15 +1,11 @@ -# Copyright (c) 2020 The Regents of the University of Michigan. -# All Rights Reserved. Licensed according to the terms of the Revised -# BSD License. See LICENSE.txt for details. - class nebula::profile::kubernetes::apt { apt::source { 'kubernetes': - location => 'https://apt.kubernetes.io/', - release => 'kubernetes-xenial', - repos => 'main', + location => 'https://pkgs.k8s.io/core:/stable:/v1.28/deb/', + release => '/', + repos => '', key => { - 'id' => 'A362B822F6DEDC652817EA46B53DC80D13EDEF05', - 'source' => 'https://packages.cloud.google.com/apt/doc/apt-key.gpg', + 'id' => 'DE15B14486CD377B9E876E1A234654DA9A296436', + 'source' => 'https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key', }, } } From 419bb8d95dec773ac88ea6b4c80d74eac41f337d Mon Sep 17 00:00:00 2001 From: Ryan Rotter Date: Thu, 1 Feb 2024 16:23:25 -0500 Subject: [PATCH 2/3] make kubernetes apt source tests pass --- spec/classes/profile/kubelet_spec.rb | 4 ++-- spec/classes/profile/kubernetes/kubelet_spec.rb | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/spec/classes/profile/kubelet_spec.rb b/spec/classes/profile/kubelet_spec.rb index d5719a4fc..f64d3d6ab 100644 --- a/spec/classes/profile/kubelet_spec.rb +++ b/spec/classes/profile/kubelet_spec.rb @@ -31,8 +31,8 @@ it do is_expected.to contain_apt__source("kubernetes") - .with_location("https://apt.kubernetes.io/") - .with_release("kubernetes-xenial") + .with_location("https://pkgs.k8s.io/core:/stable:/v1.28/deb/") + .with_release("/") end it do diff --git a/spec/classes/profile/kubernetes/kubelet_spec.rb b/spec/classes/profile/kubernetes/kubelet_spec.rb index ef7039a8f..8ba5eeedb 100644 --- a/spec/classes/profile/kubernetes/kubelet_spec.rb +++ b/spec/classes/profile/kubernetes/kubelet_spec.rb @@ -76,12 +76,12 @@ it do is_expected.to contain_apt__source('kubernetes').with( - location: 'https://apt.kubernetes.io/', - release: 'kubernetes-xenial', - repos: 'main', + location: 'https://pkgs.k8s.io/core:/stable:/v1.28/deb/', + release: '/', + repos: '', key: { - 'id' => 'A362B822F6DEDC652817EA46B53DC80D13EDEF05', - 'source' => 'https://packages.cloud.google.com/apt/doc/apt-key.gpg', + 'id' => 'DE15B14486CD377B9E876E1A234654DA9A296436', + 'source' => 'https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key', }, ) end From 725389c56bb6d8fcd567a6814b8b3a62db6a3295 Mon Sep 17 00:00:00 2001 From: Matthew Alexander LaChance Date: Mon, 5 Feb 2024 10:58:28 -0500 Subject: [PATCH 3/3] Allow the option of splitting up semantic kubernetes versions --- manifests/profile/kubernetes/kubeadm.pp | 22 ++++++++++++++++--- .../profile/kubernetes/kubeadm_config.pp | 16 +++++++++++++- manifests/profile/kubernetes/kubelet.pp | 20 +++++++++++++++-- .../profile/kubernetes/kubeadm_spec.rb | 4 ++-- .../profile/kubernetes/kubelet_spec.rb | 4 ++-- spec/fixtures/hiera/kubernetes/default.yaml | 6 ++++- 6 files changed, 61 insertions(+), 11 deletions(-) diff --git a/manifests/profile/kubernetes/kubeadm.pp b/manifests/profile/kubernetes/kubeadm.pp index ed371bd8f..4e4d0a931 100644 --- a/manifests/profile/kubernetes/kubeadm.pp +++ b/manifests/profile/kubernetes/kubeadm.pp @@ -9,16 +9,32 @@ $cluster_name = lookup('nebula::profile::kubernetes::cluster') $cluster = lookup('nebula::profile::kubernetes::clusters')[$cluster_name] - $kubernetes_version = $cluster['kubernetes_version'] + case $cluster['kubernetes_version'] { + Hash: { + $kubernetes_major_version = $cluster['kubernetes_version']['major'] + $kubernetes_minor_version = $cluster['kubernetes_version']['minor'] + $kubernetes_patch_version = $cluster['kubernetes_version']['patch'] + $kubernetes_revision_version = $cluster['kubernetes_version']['revision'] + $kubernetes_version = "${kubernetes_major_version}.${kubernetes_minor_version}.${kubernetes_patch_version}" + } + + default: { + # This branch can be safely deleted once all kubernetes versions + # are in hiera as hashes. + $kubernetes_version = $cluster['kubernetes_version'] + $kubernetes_revision_version = '00' + } + } + package { 'kubeadm': - ensure => "${kubernetes_version}-00", + ensure => "${kubernetes_version}-${kubernetes_revision_version}", require => [Apt::Source['kubernetes']], } apt::pin { 'kubeadm': packages => ['kubeadm'], - version => "${kubernetes_version}-00", + version => "${kubernetes_version}-${kubernetes_revision_version}", priority => 999, } diff --git a/manifests/profile/kubernetes/kubeadm_config.pp b/manifests/profile/kubernetes/kubeadm_config.pp index 3fadd1062..8f6c3260f 100644 --- a/manifests/profile/kubernetes/kubeadm_config.pp +++ b/manifests/profile/kubernetes/kubeadm_config.pp @@ -7,12 +7,26 @@ $cluster = lookup('nebula::profile::kubernetes::clusters')[$cluster_name] $etcd_address = $cluster['etcd_address'] $private_domain = $cluster['private_domain'] - $kubernetes_version = $cluster['kubernetes_version'] $service_cidr = pick($cluster['service_cidr'], lookup('nebula::profile::kubernetes::service_cidr')) $pod_cidr = pick($cluster['pod_cidr'], lookup('nebula::profile::kubernetes::pod_cidr')) $dex_cluster_id = $cluster['dex_cluster_id'] $dex_url = $cluster['dex_url'] + case $cluster['kubernetes_version'] { + Hash: { + $kubernetes_major_version = $cluster['kubernetes_version']['major'] + $kubernetes_minor_version = $cluster['kubernetes_version']['minor'] + $kubernetes_patch_version = $cluster['kubernetes_version']['patch'] + $kubernetes_version = "${kubernetes_major_version}.${kubernetes_minor_version}.${kubernetes_patch_version}" + } + + default: { + # This branch can be safely deleted once all kubernetes versions + # are in hiera as hashes. + $kubernetes_version = $cluster['kubernetes_version'] + } + } + file { '/etc/kubeadm_config.yaml': content => template('nebula/profile/kubernetes/kubeadm_config.yaml.erb'), } diff --git a/manifests/profile/kubernetes/kubelet.pp b/manifests/profile/kubernetes/kubelet.pp index ce15d94b3..582f002fc 100644 --- a/manifests/profile/kubernetes/kubelet.pp +++ b/manifests/profile/kubernetes/kubelet.pp @@ -6,13 +6,29 @@ $cluster_name = lookup('nebula::profile::kubernetes::cluster') $cluster = lookup('nebula::profile::kubernetes::clusters')[$cluster_name] - $kubernetes_version = $cluster['kubernetes_version'] $public_address = $cluster['public_address'] $router_address = $cluster['router_address'] $etcd_address = $cluster['etcd_address'] $kube_api_address = $cluster['kube_api_address'] $node_cidr = pick($cluster['node_cidr'], lookup('nebula::profile::kubernetes::node_cidr')) + case $cluster['kubernetes_version'] { + Hash: { + $kubernetes_major_version = $cluster['kubernetes_version']['major'] + $kubernetes_minor_version = $cluster['kubernetes_version']['minor'] + $kubernetes_patch_version = $cluster['kubernetes_version']['patch'] + $kubernetes_revision_version = $cluster['kubernetes_version']['revision'] + $kubernetes_version = "${kubernetes_major_version}.${kubernetes_minor_version}.${kubernetes_patch_version}" + } + + default: { + # This branch can be safely deleted once all kubernetes versions + # are in hiera as hashes. + $kubernetes_version = $cluster['kubernetes_version'] + $kubernetes_revision_version = '00' + } + } + if $kubernetes_version == undef { fail('You must set a specific kubernetes version') } @@ -34,7 +50,7 @@ } class { "nebula::profile::kubelet": - kubelet_version => "${kubernetes_version}-00", + kubelet_version => "${kubernetes_version}-${kubernetes_revision_version}", pod_manifest_path => "/etc/kubernetes/manifests", manage_pods_with_puppet => false, } diff --git a/spec/classes/profile/kubernetes/kubeadm_spec.rb b/spec/classes/profile/kubernetes/kubeadm_spec.rb index 0840f2966..cdf85a095 100644 --- a/spec/classes/profile/kubernetes/kubeadm_spec.rb +++ b/spec/classes/profile/kubernetes/kubeadm_spec.rb @@ -15,13 +15,13 @@ it { is_expected.to compile } - it { is_expected.to contain_package('kubeadm').with_ensure('1.14.2-00') } + it { is_expected.to contain_package('kubeadm').with_ensure('1.14.2-1.1') } it { is_expected.to contain_package('kubeadm').that_requires('Apt::Source[kubernetes]') } it do is_expected.to contain_apt__pin('kubeadm').with( packages: ['kubeadm'], - version: '1.14.2-00', + version: '1.14.2-1.1', priority: 999, ) end diff --git a/spec/classes/profile/kubernetes/kubelet_spec.rb b/spec/classes/profile/kubernetes/kubelet_spec.rb index 8ba5eeedb..fc858f482 100644 --- a/spec/classes/profile/kubernetes/kubelet_spec.rb +++ b/spec/classes/profile/kubernetes/kubelet_spec.rb @@ -63,13 +63,13 @@ it { is_expected.to contain_service('kubelet').with_enable(true) } it { is_expected.to contain_service('kubelet').that_requires('Package[kubelet]') } - it { is_expected.to contain_package('kubelet').with_ensure('1.14.2-00') } + it { is_expected.to contain_package('kubelet').with_ensure('1.14.2-1.1') } it { is_expected.to contain_package('kubelet').that_requires('Apt::Source[kubernetes]') } it do is_expected.to contain_apt__pin('kubelet').with( packages: ['kubelet'], - version: '1.14.2-00', + version: '1.14.2-1.1', priority: 999, ) end diff --git a/spec/fixtures/hiera/kubernetes/default.yaml b/spec/fixtures/hiera/kubernetes/default.yaml index afd75359b..5e7d6c966 100644 --- a/spec/fixtures/hiera/kubernetes/default.yaml +++ b/spec/fixtures/hiera/kubernetes/default.yaml @@ -16,7 +16,11 @@ nebula::profile::kubernetes::clusters: kube_api_address: 172.16.0.7 private_domain: first.cluster control_dns: public.first.cluster - kubernetes_version: 1.14.2 + kubernetes_version: + major: "1" + minor: "14" + patch: "2" + revision: "1.1" service_cidr: "172.16.0.0/13" pod_cidr: "172.24.0.0/14" node_cidr: "172.28.0.0/14"