2 changes: 1 addition & 1 deletion .fixtures.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ fixtures:
forge_modules:
stdlib: 'puppetlabs-stdlib'
apt: 'puppetlabs-apt'
epel: 'stahnma-epel'
wget: 'maestrodev-wget'
archive: "puppet-archive"
translate: "puppetlabs-translate"
symlinks:
kubernetes: "#{source_dir}"
20 changes: 18 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,25 @@
#Version 0.2.0
# Version 1.0.1
Support for weave and flannel

EPEL module removed as dependency

Added `$apiserver_extra_arguments` PR #47

Added support for PDK

Added support for stdlib 4.24.0

Updated kubetool to include CNI information in hiera (see README)

# Version 1.0.0
Officially supported version of puppetlabs-kubernetes

# Version 0.2.0
Supports Kubernetes up to 1.9.x
Adds support for cri-containerd runtime
Provides additional os and runtime switches for Kubetool

#Version 0.1.3
# Version 0.1.3
Provide cli switches for kubetool, and add Dockerfile

# Version 0.1.2
Expand Down
5 changes: 5 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,11 @@ gem "beaker-rspec"
gem "parallel_tests"
gem "beaker", "~> 2.0"
gem 'rspec_junit_formatter'
gem "puppet-lint-i18n"
gem "puppet_pot_generator"
gem 'rubocop-i18n'
gem 'gettext-setup'
gem 'rubocop-rspec'

# rspec must be v2 for ruby 1.8.7
if RUBY_VERSION >= '1.8.7' && RUBY_VERSION < '1.9'
Expand Down
25 changes: 14 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,16 +39,16 @@ image to simplify installation and use.
If you do not already have Docker installed on your workstation, install it [here](https://www.docker.com/community-edition)

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:

```puppet
docker run -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
```
docker run --rm -v $(pwd):/mnt -e OS=debian -e VERSION=1.9.2 -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
```

The parameters are:

* `OS`: the os kubernetes will run on.
* `VERSION`: the version of kubernetes you want to deploy
* `CONTAINER_RUNTIME`: the container runtime kubernetes will use, this can only be set to `docker` or `cri_containerd`
* `CNI_PROVIDER` : This is the CNI network to install. This can be set to `weave` or `flannel`
* `FQDN`: the cluster fqdn.
* `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.
* `ETCD_INITIAL_CLUSTER`: the server addresses. When in production, include three, five, or seven nodes for etcd.
Expand Down Expand Up @@ -177,14 +177,6 @@ Specifies whether to set a node as a worker.

Defaults to `undef`.

#### `manage_epel`

Specifies whether you to manage epel for a RHEL box.

Valid values are `true`, `false`.

Defaults to `false`.

#### `kube_api_advertise_address`

The IP address you want exposed by the API server.
Expand All @@ -193,6 +185,9 @@ An example with hiera would be `kubernetes::kube_api_advertise_address:"%{::ipad

Defaults to `undef`.

#### `apiserver_extra_arguments`
An array of extra configuration you can pass to the Kubernetes api container
defaults to []
#### `etcd_version`

The version of etcd to use.
Expand Down Expand Up @@ -411,6 +406,14 @@ Valid values are `true`, `false`.

Defaults to `false`.

#### `taint_master`

Specifies whether to add the NoSchedule taint to any controller nodes in the cluster.

Valid values are `true, `false`.

Defaults to `true`

## Limitations

This module supports [Kubernetes 1.6](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG.md#v160) and above.
Expand Down
1 change: 1 addition & 0 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ require 'puppetlabs_spec_helper/rake_tasks'
require 'puppet-lint/tasks/puppet-lint'
require 'metadata-json-lint/rake_task'
require 'rspec_junit_formatter'
require 'puppet_pot_generator/rake_tasks'

if RUBY_VERSION >= '1.9'
require 'rubocop/rake_task'
Expand Down
4 changes: 2 additions & 2 deletions manifests/cluster_roles.pp
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

class kubernetes::cluster_roles (

$bootstrap_controller = $kubernetes::bootstrap_controller,
$kubernetes_version = $kubernetes::kubernetes_version,
Boolean $bootstrap_controller = $kubernetes::bootstrap_controller,
String $kubernetes_version = $kubernetes::kubernetes_version,
){

if $bootstrap_controller {
Expand Down
91 changes: 47 additions & 44 deletions manifests/config.pp
Original file line number Diff line number Diff line change
Expand Up @@ -2,50 +2,53 @@

class kubernetes::config (

$kubernetes_version = $kubernetes::kubernetes_version,
$container_runtime = $kubernetes::container_runtime,
$kube_dns_version = $kubernetes::kube_dns_version,
$kubernetes_fqdn = $kubernetes::kubernetes_fqdn,
$controller = $kubernetes::controller,
$bootstrap_controller = $kubernetes::bootstrap_controller,
$bootstrap_controller_ip = $kubernetes::bootstrap_controller_ip,
$worker = $kubernetes::worker,
$node_name = $::hostname,
$kube_api_advertise_address = $kubernetes::kube_api_advertise_address,
$etcd_version = $kubernetes::etcd_version,
$etcd_ip = $kubernetes::etcd_ip,
$etcd_initial_cluster = $kubernetes::etcd_initial_cluster,
$bootstrap_token = $kubernetes::bootstrap_token,
$bootstrap_token_name = $kubernetes::bootstrap_token_name,
$bootstrap_token_description = $kubernetes::bootstrap_token_description,
$bootstrap_token_id = $kubernetes::bootstrap_token_id,
$bootstrap_token_secret = $kubernetes::bootstrap_token_secret,
$bootstrap_token_usage_bootstrap_authentication = $kubernetes::bootstrap_token_usage_bootstrap_authentication,
$bootstrap_token_expiration = $kubernetes::bootstrap_token_expiration,
$bootstrap_token_usage_bootstrap_signing = $kubernetes::bootstrap_token_usage_bootstrap_signing,
$certificate_authority_data = $kubernetes::certificate_authority_data,
$client_certificate_data_controller = $kubernetes::client_certificate_data_controller,
$client_certificate_data_controller_manager = $kubernetes::client_certificate_data_controller_manager,
$client_certificate_data_scheduler = $kubernetes::client_certificate_data_scheduler,
$client_certificate_data_worker = $kubernetes::client_certificate_data_worker,
$client_certificate_data_admin = $kubernetes::client_certificate_data_admin,
$client_key_data_controller = $kubernetes::client_key_data_controller,
$client_key_data_controller_manager = $kubernetes::client_key_data_controller_manager,
$client_key_data_scheduler = $kubernetes::client_key_data_scheduler,
$client_key_data_worker = $kubernetes::client_key_data_worker,
$client_key_data_admin = $kubernetes::client_key_data_admin,
$apiserver_kubelet_client_crt = $kubernetes::apiserver_kubelet_client_crt,
$apiserver_kubelet_client_key = $kubernetes::apiserver_kubelet_client_key,
$apiserver_crt = $kubernetes::apiserver_crt,
$apiserver_key = $kubernetes::apiserver_key,
$ca_crt = $kubernetes::ca_crt,
$ca_key = $kubernetes::ca_key,
$front_proxy_ca_crt = $kubernetes::front_proxy_ca_crt,
$front_proxy_ca_key = $kubernetes::front_proxy_ca_key,
$front_proxy_client_crt = $kubernetes::front_proxy_client_crt,
$front_proxy_client_key = $kubernetes::front_proxy_client_key,
$sa_key = $kubernetes::sa_key,
$sa_pub = $kubernetes::sa_pub,
String $kubernetes_version = $kubernetes::kubernetes_version,
String $container_runtime = $kubernetes::container_runtime,
Optional[String] $cni_cluster_cidr = $kubernetes::cni_cluster_cidr,
Optional[String] $cni_node_cidr = $kubernetes::cni_node_cidr,
String $kube_dns_version = $kubernetes::kube_dns_version,
String $kubernetes_fqdn = $kubernetes::kubernetes_fqdn,
Boolean $controller = $kubernetes::controller,
Boolean $bootstrap_controller = $kubernetes::bootstrap_controller,
Optional[String] $bootstrap_controller_ip = $kubernetes::bootstrap_controller_ip,
Boolean $worker = $kubernetes::worker,
Optional[String] $node_name = $::hostname,
Optional[String] $kube_api_advertise_address = $kubernetes::kube_api_advertise_address,
String $etcd_version = $kubernetes::etcd_version,
Optional[String] $etcd_ip = $kubernetes::etcd_ip,
Optional[String] $etcd_initial_cluster = $kubernetes::etcd_initial_cluster,
Optional[String] $bootstrap_token = $kubernetes::bootstrap_token,
Optional[String] $bootstrap_token_name = $kubernetes::bootstrap_token_name,
Optional[String] $bootstrap_token_description = $kubernetes::bootstrap_token_description,
Optional[String] $bootstrap_token_id = $kubernetes::bootstrap_token_id,
Optional[String] $bootstrap_token_secret = $kubernetes::bootstrap_token_secret,
Optional[String] $bootstrap_token_usage_bootstrap_authentication = $kubernetes::bootstrap_token_usage_bootstrap_authentication,
Optional[String] $bootstrap_token_expiration = $kubernetes::bootstrap_token_expiration,
Optional[String] $bootstrap_token_usage_bootstrap_signing = $kubernetes::bootstrap_token_usage_bootstrap_signing,
Optional[String] $certificate_authority_data = $kubernetes::certificate_authority_data,
Optional[String] $client_certificate_data_controller = $kubernetes::client_certificate_data_controller,
Optional[String] $client_certificate_data_controller_manager = $kubernetes::client_certificate_data_controller_manager,
Optional[String] $client_certificate_data_scheduler = $kubernetes::client_certificate_data_scheduler,
Optional[String] $client_certificate_data_worker = $kubernetes::client_certificate_data_worker,
Optional[String] $client_certificate_data_admin = $kubernetes::client_certificate_data_admin,
Optional[String] $client_key_data_controller = $kubernetes::client_key_data_controller,
Optional[String] $client_key_data_controller_manager = $kubernetes::client_key_data_controller_manager,
Optional[String] $client_key_data_scheduler = $kubernetes::client_key_data_scheduler,
Optional[String] $client_key_data_worker = $kubernetes::client_key_data_worker,
Optional[String] $client_key_data_admin = $kubernetes::client_key_data_admin,
Optional[String] $apiserver_kubelet_client_crt = $kubernetes::apiserver_kubelet_client_crt,
Optional[String] $apiserver_kubelet_client_key = $kubernetes::apiserver_kubelet_client_key,
Optional[String] $apiserver_crt = $kubernetes::apiserver_crt,
Optional[String] $apiserver_key = $kubernetes::apiserver_key,
Array $apiserver_extra_arguments = $kubernetes::apiserver_extra_arguments,
Optional[String] $ca_crt = $kubernetes::ca_crt,
Optional[String] $ca_key = $kubernetes::ca_key,
Optional[String] $front_proxy_ca_crt = $kubernetes::front_proxy_ca_crt,
Optional[String] $front_proxy_ca_key = $kubernetes::front_proxy_ca_key,
Optional[String] $front_proxy_client_crt = $kubernetes::front_proxy_client_crt,
Optional[String] $front_proxy_client_key = $kubernetes::front_proxy_client_key,
Optional[String] $sa_key = $kubernetes::sa_key,
Optional[String] $sa_pub = $kubernetes::sa_pub,

){

Expand Down
Loading