Skip to content

Commit 2f174c8

Browse files
authored
Merge pull request #50 from puppetlabs/flannel_support
Flannel support
2 parents 10b6024 + 68f28b5 commit 2f174c8

File tree

12 files changed

+55
-23
lines changed

12 files changed

+55
-23
lines changed

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,15 @@ If you do not already have Docker installed on your workstation, install it [her
4141
The kubetool docker image takes each of the parameters as environment variables. When run as follows it will output a `kubernetes.yaml` file in your current working directory:
4242

4343
```puppet
44-
docker run --rm -v $(pwd):/mnt -e OS=debian -e VERSION=1.9.1 -e CONTAINER_RUNTIME=docker -e FQDN=kubernetes -e IP=172.17.10.101 -e BOOTSTRAP_CONTROLLER_IP=172.17.10.101 -e ETCD_INITIAL_CLUSTER="etcd-kube-master=http://172.17.10.101:2380" -e ETCD_IP="%{::ipaddress_enp0s8}" -e KUBE_API_ADVERTISE_ADDRESS="%{::ipaddress_enp0s8}" -e INSTALL_DASHBOARD=true puppet/kubetool
44+
docker run --rm -v $(pwd):/mnt -e OS=debian -e VERSION=1.9.1 -e CONTAINER_RUNTIME=docker -e CNI_PROVIDER=weave -e FQDN=kubernetes -e IP=172.17.10.101 -e BOOTSTRAP_CONTROLLER_IP=172.17.10.101 -e ETCD_INITIAL_CLUSTER="etcd-kube-master=http://172.17.10.101:2380" -e ETCD_IP="%{::ipaddress_enp0s8}" -e KUBE_API_ADVERTISE_ADDRESS="%{::ipaddress_enp0s8}" -e INSTALL_DASHBOARD=true puppet/kubetool
4545
```
4646

4747
The parameters are:
4848

4949
* `OS`: the os kubernetes will run on.
5050
* `VERSION`: the version of kubernetes you want to deploy
5151
* `CONTAINER_RUNTIME`: the container runtime kubernetes will use, this can only be set to `docker` or `cri_containerd`
52+
* `CNI_PROVIDER` : This is the CNI network to install. This can be set to `weave` or `flannel`
5253
* `FQDN`: the cluster fqdn.
5354
* `BOOTSTRAP_CONTROLLER_IP`: the ip address of the controller puppet will use to create things like cluster role bindings, kube dns, and the Kubernetes dashboard.
5455
* `ETCD_INITIAL_CLUSTER`: the server addresses. When in production, include three, five, or seven nodes for etcd.

manifests/config.pp

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
String $kubernetes_version = $kubernetes::kubernetes_version,
66
String $container_runtime = $kubernetes::container_runtime,
7+
Optional[String] $cni_cluster_cidr = $kubernetes::cni_cluster_cidr,
8+
Optional[String] $cni_node_cidr = $kubernetes::cni_node_cidr,
79
String $kube_dns_version = $kubernetes::kube_dns_version,
810
String $kubernetes_fqdn = $kubernetes::kubernetes_fqdn,
911
Boolean $controller = $kubernetes::controller,

manifests/init.pp

+4-3
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
#
2323
# [*cni_version*]
2424
# The version of the cni package you would like to install
25-
# Defaults to 0.5.1
25+
# Defaults to 0.6.0
2626
#
2727
# [*kube_dns_version*]
2828
# The version of kube DNS you would like to install
@@ -212,6 +212,8 @@
212212
String $kubernetes_fqdn = $kubernetes::params::kubernetes_fqdn,
213213
String $container_runtime = $kubernetes::params::container_runtime,
214214
Optional[String] $cni_version = $kubernetes::params::cni_version,
215+
Optional[String] $cni_cluster_cidr = $kubernetes::params::cni_cluster_cidr,
216+
Optional[String] $cni_node_cidr = $kubernetes::params::cni_node_cidr,
215217
String $kube_dns_version = $kubernetes::params::kube_dns_version,
216218
Boolean $controller = $kubernetes::params::controller,
217219
Boolean $bootstrap_controller = $kubernetes::params::bootstrap_controller,
@@ -253,13 +255,12 @@
253255
Optional[String] $front_proxy_client_key = $kubernetes::params::front_proxy_client_key,
254256
Optional[String] $sa_key = $kubernetes::params::sa_key,
255257
Optional[String] $sa_pub = $kubernetes::params::sa_pub,
256-
String $cni_network_provider = $kubernetes::params::cni_network_provider,
258+
Optional[String] $cni_network_provider = $kubernetes::params::cni_network_provider,
257259
Boolean $install_dashboard = $kubernetes::params::install_dashboard,
258260
Boolean $taint_master = $kubernetes::params::taint_master,
259261

260262
) inherits kubernetes::params {
261263

262-
263264
if $controller {
264265
if $worker {
265266
fail translate(('A node can not be both a controller and a node'))

manifests/kube_addons.pp

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
# Class kuberntes kube_addons
22
class kubernetes::kube_addons (
33

4-
Boolean $bootstrap_controller = $kubernetes::bootstrap_controller,
5-
String $cni_network_provider = $kubernetes::cni_network_provider,
6-
Boolean $install_dashboard = $kubernetes::install_dashboard,
7-
String $kubernetes_version = $kubernetes::kubernetes_version,
8-
Boolean $controller = $kubernetes::controller,
9-
Boolean $taint_master = $kubernetes::taint_master,
4+
Boolean $bootstrap_controller = $kubernetes::bootstrap_controller,
5+
Optional[String]$cni_network_provider = $kubernetes::cni_network_provider,
6+
Boolean $install_dashboard = $kubernetes::install_dashboard,
7+
String $kubernetes_version = $kubernetes::kubernetes_version,
8+
Boolean $controller = $kubernetes::controller,
9+
Boolean $taint_master = $kubernetes::taint_master,
1010
){
1111

1212
if $bootstrap_controller {

manifests/params.pp

+6-4
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
case $::osfamily {
66
'Debian' : {
77
$kubernetes_package_version = '1.7.3-01'
8-
$cni_version = '0.5.1-00'
8+
$cni_version = '0.6.0-00'
99
}
1010
'RedHat' : {
1111
$kubernetes_package_version = '1.7.3'
12-
$cni_version = '0.5.1'
12+
$cni_version = '0.6.0'
1313
}
1414
default: { notify {"The OS family ${::os_family} is not supported by this module":} }
1515
}
@@ -22,7 +22,7 @@
2222
$bootstrap_controller_ip = undef
2323
$worker = false
2424
$kube_api_advertise_address = undef
25-
$etcd_version = '3.0.17'
25+
$etcd_version = '3.1.11'
2626
$etcd_ip = undef
2727
$etcd_initial_cluster = undef
2828
$bootstrap_token = undef
@@ -57,7 +57,9 @@
5757
$front_proxy_client_key = undef
5858
$sa_key = undef
5959
$sa_pub = undef
60-
$cni_network_provider = 'https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d "\n")\&env.IPALLOC_RANGE=100.32.0.0/12'
60+
$cni_cluster_cidr = undef
61+
$cni_node_cidr = undef
62+
$cni_network_provider = undef
6163
$install_dashboard = false
6264
$taint_master = true
6365

manifests/repos.pp

-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
}
3232
}
3333
'RedHat': {
34-
3534
if $container_runtime == 'docker' {
3635
yumrepo { 'docker':
3736
descr => 'docker',

manifests/service.pp

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
class kubernetes::service (
44

5-
Boolean $controller = $kubernetes::controller,
6-
Boolean $bootstrap_controller = $kubernetes::bootstrap_controller,
7-
String $container_runtime = $kubernetes::container_runtime,
8-
Optional[String] $etcd_ip = $kubernetes::etcd_ip,
5+
Boolean $controller = $kubernetes::controller,
6+
Boolean $bootstrap_controller = $kubernetes::bootstrap_controller,
7+
String $container_runtime = $kubernetes::container_runtime,
8+
Optional[String] $etcd_ip = $kubernetes::etcd_ip,
99
){
1010

1111
$peeruls = inline_template("'{\"peerURLs\":[\"http://${etcd_ip}:2380\"]}'")

spec/classes/config_spec.rb

+2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
{
1717
'kubernetes_version' => '1.7.3',
1818
'container_runtime' => 'docker',
19+
'cni_cluster_cidr' => '10.0.0.0/24',
20+
'cni_node_cidr' => '10.0.1.0/24',
1921
'kube_dns_version' => '1.14.2',
2022
'controller' => true,
2123
'bootstrap_controller' => false,

templates/kube-controller-manager.yaml.erb

+2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ spec:
2121
- --leader-elect=true
2222
- --root-ca-file=/etc/kubernetes/pki/ca.crt
2323
- --cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt
24+
<%= @cni_node_cidr %>
25+
<%= @cni_cluster_cidr %>
2426
image: gcr.io/google_containers/kube-controller-manager-amd64:v<%= @kubernetes_version %>
2527
livenessProbe:
2628
failureThreshold: 8

tooling/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,4 @@ RUN set -x && \
2525

2626
WORKDIR /mnt
2727

28-
ENTRYPOINT ["sh", "-c", "/etc/k8s/kube_tool.rb -o ${OS} -v ${VERSION} -r ${CONTAINER_RUNTIME} -f ${FQDN} -i ${IP} -b ${BOOTSTRAP_CONTROLLER_IP} -e ${ETCD_INITIAL_CLUSTER} -t ${ETCD_IP} -a ${KUBE_API_ADVERTISE_ADDRESS} -d ${INSTALL_DASHBOARD}"]
28+
ENTRYPOINT ["sh", "-c", "/etc/k8s/kube_tool.rb -o ${OS} -v ${VERSION} -r ${CONTAINER_RUNTIME} -c ${CNI_PROVIDER} -f ${FQDN} -i ${IP} -b ${BOOTSTRAP_CONTROLLER_IP} -e ${ETCD_INITIAL_CLUSTER} -t ${ETCD_IP} -a ${KUBE_API_ADVERTISE_ADDRESS} -d ${INSTALL_DASHBOARD}"]

tooling/kube_tool.rb

+6-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
require_relative 'kube_tool/clean_up.rb'
88
require_relative 'kube_tool/other_params.rb'
99

10-
options = {:os => nil, :version => nil, :container_runtime => nil, :fqdn => nil, :ip => nil, :bootstrap_controller_ip => nil, :etcd_initial_cluster => nil, :etcd_ip => nil, :kube_api_advertise_address => nil, :install_dashboard => nil}
10+
options = {:os => nil, :version => nil, :container_runtime => nil, :cni_provider=> nil, :fqdn => nil, :ip => nil, :bootstrap_controller_ip => nil, :etcd_initial_cluster => nil, :etcd_ip => nil, :kube_api_advertise_address => nil, :install_dashboard => nil}
1111

1212
parser = OptionParser.new do|opts|
1313

@@ -23,6 +23,10 @@
2323
options[:container_runtime] = container_runtime;
2424
end
2525

26+
opts.on('-c', '--cni-provider cni-provider', 'the networking provider to use') do |cni_provider|
27+
options[:cni_provider] = cni_provider;
28+
end
29+
2630
opts.on('-f', '--fqdn fqdn', 'fqdn') do |fqdn|
2731
options[:fqdn] = fqdn;
2832
end
@@ -76,7 +80,7 @@ def build_hiera(hash)
7680
CreateCerts.kube_scheduler
7781
CreateCerts.kube_workers
7882
CreateToken.bootstrap
79-
OtherParams.create(hash[:os], hash[:version], hash[:container_runtime], hash[:bootstrap_controller_ip], hash[:fqdn], hash[:etcd_initial_cluster], hash[:etcd_ip], hash[:kube_api_advertise_address], hash[:install_dashboard])
83+
OtherParams.create(hash[:os], hash[:version], hash[:container_runtime], hash[:cni_provider], hash[:bootstrap_controller_ip], hash[:fqdn], hash[:etcd_initial_cluster], hash[:etcd_ip], hash[:kube_api_advertise_address], hash[:install_dashboard])
8084
CleanUp.remove_files
8185
end
8286
end

tooling/kube_tool/other_params.rb

+20-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
class OtherParams
44

5-
def OtherParams.create(os, version, container_runtime, bootstrap_controller_ip, fqdn, etcd_initial_cluster, etcd_ip, kube_api_advertise_address, install_dashboard)
5+
def OtherParams.create(os, version, container_runtime, cni_provider, bootstrap_controller_ip, fqdn, etcd_initial_cluster, etcd_ip, kube_api_advertise_address, install_dashboard)
66
if install_dashboard.match('true')
77
install = true
88
else
@@ -13,10 +13,29 @@ def OtherParams.create(os, version, container_runtime, bootstrap_controller_ip,
1313
elsif os.downcase.match('redhat')
1414
kubernetes_package_version = version
1515
end
16+
17+
if cni_provider.match('weave')
18+
cni_network_provider = 'https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d "\n")\&env.IPALLOC_RANGE=100.32.0.0/12'
19+
elsif
20+
cni_provider.match('flannel')
21+
cni_network_provider = 'https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml'
22+
cni_cluster_cidr = '- --cluster-cidr=10.244.0.0/16'
23+
cni_node_cidr = '- --allocate-node-cidrs=true'
24+
elsif cni_provider.match('calico')
25+
cni_network_provider = 'https://docs.projectcalico.org/v2.6/getting-started/kubernetes/installation/hosted/kubeadm/1.6/calico.yaml'
26+
cni_cluster_cidr = '- --cluster-cidr=192.168.0.0/16'
27+
cni_node_cidr = '- --allocate-node-cidrs=true'
28+
elsif cni_provider.match('romana')
29+
cni_network_provider = 'https://raw.githubusercontent.com/romana/romana/master/containerize/specs/romana-kubeadm.yml'
30+
end
31+
1632
data = Hash.new
1733
data['kubernetes::kubernetes_version'] = version
1834
data['kubernetes::kubernetes_package_version'] = kubernetes_package_version
1935
data['kubernetes::container_runtime'] = container_runtime
36+
data['kubernetes::cni_network_provider'] = cni_network_provider
37+
data['kubernetes::cni_cluster_cidr'] = cni_cluster_cidr
38+
data['kubernetes::cni_node_cidr'] = cni_node_cidr
2039
data['kubernetes::kubernetes_fqdn'] = fqdn
2140
data['kubernetes::bootstrap_controller_ip'] = bootstrap_controller_ip
2241
data['kubernetes::etcd_initial_cluster'] = etcd_initial_cluster

0 commit comments

Comments
 (0)