Skip to content

Commit 5f9353d

Browse files
committed
Support Kubernetes 1.22 and kubeadm v1beta3 configurations
1 parent 270727e commit 5f9353d

File tree

6 files changed

+206
-9
lines changed

6 files changed

+206
-9
lines changed

manifests/config/kubeadm.pp

+5-4
Original file line numberDiff line numberDiff line change
@@ -167,10 +167,11 @@
167167
$kubelet_extra_config_alpha1_yaml = regsubst(to_yaml($kubelet_extra_config_alpha1), '^---\n', '')
168168

169169
$config_version = $kubernetes_version ? {
170-
/1\.1(0|1)/ => 'v1alpha1',
171-
/1\.12/ => 'v1alpha3',
172-
/1\.1(3|4|5\.[012])/ => 'v1beta1',
173-
default => 'v1beta2',
170+
/1\.1(0|1)/ => 'v1alpha1',
171+
/1\.12/ => 'v1alpha3',
172+
/1\.1(3|4|5\.[012])/ => 'v1beta1',
173+
/1\.(16|17|18|19|20|21)/ => 'v1beta2',
174+
default => 'v1beta3',
174175
}
175176

176177
file { $config_file:

manifests/config/worker.pp

+5-3
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,16 @@
1919
Optional[Array] $ignore_preflight_errors = undef,
2020
Boolean $skip_ca_verification = false,
2121
String $cgroup_driver = $kubernetes::cgroup_driver,
22+
Optional[Array] $skip_phases_join = $kubernetes::skip_phases_join,
2223
) {
2324
# to_yaml emits a complete YAML document, so we must remove the leading '---'
2425
$kubelet_extra_config_yaml = regsubst(to_yaml($kubelet_extra_config), '^---\n', '')
2526

2627
$template = $kubernetes_version ? {
27-
/1\.12/ => 'v1alpha3',
28-
/1\.1(3|4|5\.[012])/ => 'v1beta1',
29-
default => 'v1beta2',
28+
/1\.12/ => 'v1alpha3',
29+
/1\.1(3|4|5\.[012])/ => 'v1beta1',
30+
/1\.(16|17|18|19|20|21)/ => 'v1beta2',
31+
default => 'v1beta3',
3032
}
3133

3234
file { '/etc/kubernetes':

manifests/init.pp

+6
Original file line numberDiff line numberDiff line change
@@ -522,6 +522,11 @@
522522
# Allow kubeadm init skip some phases
523523
# Default: none phases skipped
524524
#
525+
# [*skip_phases_join*]
526+
# Allow kubeadm join to skip some phases
527+
# Only works with Kubernetes 1.22+
528+
# Default: no phases skipped
529+
#
525530
# Authors
526531
# -------
527532
#
@@ -671,6 +676,7 @@
671676
Stdlib::IP::Address $metrics_bind_address = '127.0.0.1',
672677
Optional[String] $join_discovery_file = undef,
673678
Optional[String] $skip_phases = undef,
679+
Optional[Array] $skip_phases_join = undef,
674680
Integer $conntrack_max_per_core = 32768,
675681
Integer $conntrack_min = 131072,
676682
String $conntrack_tcp_wait_timeout = '1h0m0s',

spec/acceptance/kubernetes_spec.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
pp = <<-MANIFEST
1414
if $facts['os']['family'] == 'redhat'{
1515
class {'kubernetes':
16-
kubernetes_version => '1.20.6',
17-
kubernetes_package_version => '1.20.6',
16+
kubernetes_version => '1.22.0',
17+
kubernetes_package_version => '1.22.0',
1818
controller_address => "$::ipaddress:6443",
1919
container_runtime => 'docker',
2020
manage_docker => false,
+148
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
apiVersion: kubeadm.k8s.io/v1beta3
2+
bootstrapTokens:
3+
- groups:
4+
- system:bootstrappers:kubeadm:default-node-token
5+
token: <%= @token %>
6+
ttl: <%= @ttl_duration %>
7+
usages:
8+
- signing
9+
- authentication
10+
kind: InitConfiguration
11+
localAPIEndpoint:
12+
advertiseAddress: <%= @kube_api_advertise_address %>
13+
bindPort: <%= @kube_api_bind_port %>
14+
nodeRegistration:
15+
name: <%= @node_name %>
16+
<%- if @container_runtime == "cri_containerd" -%>
17+
criSocket: unix:///run/containerd/containerd.sock
18+
<%- end -%>
19+
taints:
20+
- effect: NoSchedule
21+
key: node-role.kubernetes.io/master
22+
kubeletExtraArgs:
23+
cgroup-driver: <%= @cgroup_driver %>
24+
<%- if @cloud_provider -%>
25+
cloud-provider: <%= @cloud_provider %>
26+
<%- end -%>
27+
<%- if @cloud_config -%>
28+
cloud-config: <%= @cloud_config %>
29+
<%- end -%>
30+
<%- @kubelet_extra_arguments.each do |arg| -%>
31+
<%= arg %>
32+
<%- end -%>
33+
<% if @skip_phases -%>
34+
skipPhases:
35+
<% @skip_phases.split(',').each do |skip_phase| -%>
36+
- <%= skip_phase %>
37+
<% end -%>
38+
<% end -%>
39+
---
40+
apiServer:
41+
timeoutForControlPlane: 4m0s
42+
<%- if @apiserver_cert_extra_sans -%>
43+
certSANs:
44+
<%- @apiserver_cert_extra_sans.each do |san| -%>
45+
- <%= san %>
46+
<%- end -%>
47+
<%- end -%>
48+
<%- if @apiserver_merged_extra_arguments -%>
49+
extraArgs:
50+
<%- @apiserver_merged_extra_arguments.each do |arg| -%>
51+
<%= arg %>
52+
<%- end -%>
53+
<%- end -%>
54+
<%- if @apiserver_merged_extra_volumes -%>
55+
extraVolumes:
56+
<%- @apiserver_merged_extra_volumes.each do |name, config| -%>
57+
- name: <%= name %>
58+
hostPath: <%= config['hostPath'] %>
59+
mountPath: <%= config['mountPath'] %>
60+
readOnly: <%= config['readOnly'] %>
61+
pathType: <%= config['pathType'] %>
62+
<%- end -%>
63+
<%- end -%>
64+
apiVersion: kubeadm.k8s.io/v1beta3
65+
certificatesDir: /etc/kubernetes/pki
66+
<%- if @kubernetes_cluster_name != "kubernetes" -%>
67+
clusterName: <%= @kubernetes_cluster_name %>
68+
<%- end -%>
69+
controlPlaneEndpoint: "<%= @controller_address %>"
70+
controllerManager:
71+
<%- if @controllermanager_merged_extra_arguments -%>
72+
extraArgs:
73+
<%- @controllermanager_merged_extra_arguments.each do |arg| -%>
74+
<%= arg %>
75+
<%- end -%>
76+
<%- end -%>
77+
<%- if @controllermanager_merged_extra_volumes -%>
78+
extraVolumes:
79+
<%- @controllermanager_merged_extra_volumes.each do |name, config| -%>
80+
- name: <%= name %>
81+
hostPath: <%= config['hostPath'] %>
82+
mountPath: <%= config['mountPath'] %>
83+
readOnly: <%= config['readOnly'] %>
84+
pathType: <%= config['pathType'] %>
85+
<%- end -%>
86+
<%- end -%>
87+
scheduler:
88+
<%- if @scheduler_merged_extra_arguments -%>
89+
extraArgs:
90+
<%- @scheduler_merged_extra_arguments.each do |arg| -%>
91+
<%= arg %>
92+
<%- end -%>
93+
<%- end -%>
94+
etcd:
95+
external:
96+
caFile: /etc/kubernetes/pki/etcd/ca.crt
97+
certFile: /etc/kubernetes/pki/etcd/client.crt
98+
endpoints:
99+
<% @etcd_peers.each do |peer| -%>
100+
- https://<%= peer %>:2379
101+
<% end -%>
102+
keyFile: /etc/kubernetes/pki/etcd/client.key
103+
imageRepository: <%= @image_repository %>
104+
kind: ClusterConfiguration
105+
kubernetesVersion: v<%= @kubernetes_version %>
106+
networking:
107+
dnsDomain: <%= @dns_domain %>
108+
podSubnet: <%= @cni_pod_cidr %>
109+
serviceSubnet: <%= @service_cidr %>
110+
<%- if @kubeadm_extra_config -%>
111+
<%= @kubeadm_extra_config_yaml %>
112+
<%- end -%>
113+
---
114+
apiVersion: kubeproxy.config.k8s.io/v1alpha1
115+
bindAddress: 0.0.0.0
116+
clientConnection:
117+
acceptContentTypes: ""
118+
burst: 10
119+
contentType: application/vnd.kubernetes.protobuf
120+
kubeconfig: /var/lib/kube-proxy/kubeconfig.conf
121+
qps: 5
122+
clusterCIDR: <%= @cni_pod_cidr %>
123+
configSyncPeriod: 15m0s
124+
conntrack:
125+
maxPerCore: <%= @conntrack_max_per_core %>
126+
min: <%= @conntrack_min %>
127+
tcpCloseWaitTimeout: <%= @conntrack_tcp_wait_timeout %>
128+
tcpEstablishedTimeout: <%= @conntrack_tcp_stablished_timeout %>
129+
enableProfiling: false
130+
healthzBindAddress: 0.0.0.0:10256
131+
hostnameOverride: ""
132+
iptables:
133+
masqueradeAll: false
134+
masqueradeBit: 14
135+
minSyncPeriod: 0s
136+
syncPeriod: 30s
137+
ipvs:
138+
excludeCIDRs: null
139+
minSyncPeriod: 0s
140+
scheduler: ""
141+
syncPeriod: 30s
142+
kind: KubeProxyConfiguration
143+
metricsBindAddress: <%= @metrics_bind_address %>:10249
144+
mode: "<%= @proxy_mode %>"
145+
nodePortAddresses: null
146+
oomScoreAdj: -999
147+
portRange: ""
148+
udpIdleTimeout: 250ms
+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
apiVersion: kubeadm.k8s.io/v1beta3
2+
caCertPath: /etc/kubernetes/pki/ca.crt
3+
kind: JoinConfiguration
4+
<%- if @kubernetes_cluster_name != "kubernetes" -%>
5+
clusterName: <%= @kubernetes_cluster_name %>
6+
<%- end -%>
7+
discovery:
8+
timeout: 5m0s
9+
bootstrapToken:
10+
token: <%= @discovery_token %>
11+
apiServerEndpoint: '<%= @controller_address %>'
12+
unsafeSkipCAVerification: false
13+
caCertHashes:
14+
- 'sha256:<%= @discovery_token_hash %>'
15+
nodeRegistration:
16+
name: <%= @node_name %>
17+
<%- if @container_runtime == "cri_containerd" -%>
18+
criSocket: unix:///run/containerd/containerd.sock
19+
taints: null
20+
<%- end -%>
21+
kubeletExtraArgs:
22+
cgroup-driver: <%= @cgroup_driver %>
23+
<%- if @cloud_provider -%>
24+
cloud-provider: <%= @cloud_provider %>
25+
<%- if @cloud_config -%>
26+
cloud-config: <%= @cloud_config %>
27+
<%- end -%>
28+
<%- end -%>
29+
<%- @kubelet_extra_arguments.each do |arg| -%>
30+
<%= arg %>
31+
<%- end %>
32+
<% if @feature_gates -%>
33+
featureGates: <%= @feature_gates %>
34+
<% end -%>
35+
<% if @skip_phases_join -%>
36+
skipPhases:
37+
<% @skip_phases_join.each do |skip_phase| -%>
38+
- <%= skip_phase %>
39+
<% end -%>
40+
<% end -%>

0 commit comments

Comments
 (0)