diff --git a/manifests/master.pp b/manifests/master.pp index 871d30c..00ec1ec 100644 --- a/manifests/master.pp +++ b/manifests/master.pp @@ -1,6 +1,6 @@ # == Class: kubernetes::master # -# Module to install an up-to-date version of Docker from package. +# Module to install an up-to-date version of kubernetes from package. # # === Parameters # diff --git a/manifests/master/apiserver.pp b/manifests/master/apiserver.pp index 44430d4..0f6d689 100644 --- a/manifests/master/apiserver.pp +++ b/manifests/master/apiserver.pp @@ -324,6 +324,21 @@ } ~> Service['kube-apiserver'] } + case $::osfamily { + 'redhat' : { + } + 'debian' : { + file { '/etc/default/kube-apiserver': + ensure => 'file', + force => true, + content => template("${module_name}/etc/default/api-server.erb"), + } ~> Service['kube-apiserver'] + } + default : { + fail("Unsupport OS: ${::osfamily}") + } + } + file { '/etc/kubernetes/apiserver': ensure => 'file', force => true, diff --git a/manifests/master/controller_manager.pp b/manifests/master/controller_manager.pp index 55921fc..caed222 100644 --- a/manifests/master/controller_manager.pp +++ b/manifests/master/controller_manager.pp @@ -264,6 +264,21 @@ } ~> Service['kube-controller-manager'] } + case $::osfamily { + 'redhat' : { + } + 'debian' : { + file { '/etc/default/kube-controller-manager': + ensure => 'file', + force => true, + content => template("${module_name}/etc/default/controller-manager.erb"), + } ~> Service['kube-controller-manager'] + } + default : { + fail("Unsupport OS: ${::osfamily}") + } + } + file { '/etc/kubernetes/controller-manager': ensure => 'file', force => true, diff --git a/manifests/master/scheduler.pp b/manifests/master/scheduler.pp index 8ec48d6..4844285 100644 --- a/manifests/master/scheduler.pp +++ b/manifests/master/scheduler.pp @@ -120,6 +120,21 @@ } ~> Service['kube-scheduler'] } + case $::osfamily { + 'redhat' : { + } + 'debian' : { + file { '/etc/default/kube-scheduler': + ensure => 'file', + force => true, + content => template("${module_name}/etc/default/scheduler.erb"), + } ~> Service['kube-scheduler'] + } + default : { + fail("Unsupport OS: ${::osfamily}") + } + } + file { '/etc/kubernetes/scheduler': ensure => 'file', force => true, diff --git a/manifests/node/kube_proxy.pp b/manifests/node/kube_proxy.pp index e0d39f1..84d5804 100644 --- a/manifests/node/kube_proxy.pp +++ b/manifests/node/kube_proxy.pp @@ -176,6 +176,21 @@ } ~> Service['kube-proxy'] } + case $::osfamily { + 'redhat' : { + } + 'debian' : { + file { '/etc/default/kube-proxy': + ensure => 'file', + force => true, + content => template("${module_name}/etc/default/proxy.erb"), + } ~> Service['kube-proxy'] + } + default : { + fail("Unsupport OS: ${::osfamily}") + } + } + file { '/etc/kubernetes/proxy': ensure => 'file', content => template("${module_name}/etc/kubernetes/proxy.erb"), diff --git a/manifests/node/kubelet.pp b/manifests/node/kubelet.pp index 6731c1d..f454625 100644 --- a/manifests/node/kubelet.pp +++ b/manifests/node/kubelet.pp @@ -348,6 +348,21 @@ } ~> Service['kubelet'] } + case $::osfamily { + 'redhat' : { + } + 'debian' : { + file { '/etc/default/kubelet': + ensure => 'file', + force => true, + content => template("${module_name}/etc/default/kubelet.erb"), + } ~> Service['kubelet'] + } + default : { + fail("Unsupport OS: ${::osfamily}") + } + } + file { '/etc/kubernetes/kubelet': ensure => 'file', content => template("${module_name}/etc/kubernetes/kubelet.erb"), diff --git a/spec/classes/kubernetes_client_spec.rb b/spec/classes/kubernetes_client_spec.rb index 4e48d5b..57de6e8 100644 --- a/spec/classes/kubernetes_client_spec.rb +++ b/spec/classes/kubernetes_client_spec.rb @@ -1,22 +1,21 @@ require 'spec_helper' describe 'kubernetes::client', :type => :class do - context 'with defaults for all parameters on RedHat' do - let :facts do - { - :kernel => 'Linux', - :osfamily => 'RedHat', - } - end - it 'test default install' do - is_expected.to compile.with_all_deps + on_supported_os.each do |os, facts| + context "on #{os}" do + let :facts do + facts.merge({:puppetversion => Puppet.version}) + end + it 'test default install' do + is_expected.to compile.with_all_deps - is_expected.to contain_class('kubernetes::client') - is_expected.to contain_package('kubernetes-client').with_ensure('present') + is_expected.to contain_class('kubernetes::client') + is_expected.to contain_package('kubernetes-client').with_ensure('present') - is_expected.to contain_file('/etc/kubernetes/').with({ 'ensure' => 'directory', }) - is_expected.to contain_file('/etc/kubernetes/config').with({ 'ensure' => 'file', }) - is_expected.to contain_file('/etc/kubernetes/config').with_content(/### file managed by puppet/) + is_expected.to contain_file('/etc/kubernetes/').with({ 'ensure' => 'directory', }) + is_expected.to contain_file('/etc/kubernetes/config').with({ 'ensure' => 'file', }) + is_expected.to contain_file('/etc/kubernetes/config').with_content(/### file managed by puppet/) + end end end end diff --git a/spec/classes/kubernetes_master_apiserver_spec.rb b/spec/classes/kubernetes_master_apiserver_spec.rb index 00bdb96..3b492db 100644 --- a/spec/classes/kubernetes_master_apiserver_spec.rb +++ b/spec/classes/kubernetes_master_apiserver_spec.rb @@ -1,13 +1,10 @@ require 'spec_helper' describe 'kubernetes::master::apiserver', :type => :class do - context 'with defaults for all parameters on RedHat' do - describe 'with minimum_version default' do + on_supported_os.each do |os, facts| + context "on #{os}" do let :facts do - { - :kernel => 'Linux', - :osfamily => 'RedHat', - } + facts.merge({:puppetversion => Puppet.version}) end let :params do @@ -28,18 +25,18 @@ should contain_service('kube-apiserver') end end + end - describe 'with minimum_version 1.2' do - let :params do - { - :service_cluster_ip_range => '1.1.1.1', - :minimum_version => '1.2', - } - end + describe 'with minimum_version 1.2' do + let :params do + { + :service_cluster_ip_range => '1.1.1.1', + :minimum_version => '1.2', + } + end - it 'test with param minimum_version set to 1.2' do - is_expected.to_not contain_file('/etc/kubernetes/etcd_config.json') - end + it 'test with param minimum_version set to 1.2' do + is_expected.to_not contain_file('/etc/kubernetes/etcd_config.json') end end end diff --git a/spec/classes/kubernetes_master_controller_manager_spec.rb b/spec/classes/kubernetes_master_controller_manager_spec.rb index 25559d8..a8e9329 100644 --- a/spec/classes/kubernetes_master_controller_manager_spec.rb +++ b/spec/classes/kubernetes_master_controller_manager_spec.rb @@ -1,22 +1,22 @@ require 'spec_helper' -describe 'kubernetes::master::controller_manager', :type => :class do - context 'with defaults for all parameters on RedHat' do - let :facts do - { - :kernel => 'Linux', - :osfamily => 'RedHat', - } - end - it 'test default install' do - is_expected.to compile.with_all_deps - is_expected.to contain_class('kubernetes::master') - is_expected.to contain_class('kubernetes::master::controller_manager') - is_expected.to contain_class('kubernetes::master::params') +describe 'kubernetes::master::controller_manager', :type => :class do + on_supported_os.each do |os, facts| + context "on #{os}" do + let :facts do + facts.merge({:puppetversion => Puppet.version}) + end + + it 'test default install' do + is_expected.to compile.with_all_deps + is_expected.to contain_class('kubernetes::master') + is_expected.to contain_class('kubernetes::master::controller_manager') + is_expected.to contain_class('kubernetes::master::params') - is_expected.to contain_file('/etc/kubernetes/controller-manager').with({ 'ensure' => 'file', }) - is_expected.to contain_file('/etc/kubernetes/controller-manager').with_content(/### file managed by puppet/) - is_expected.to contain_service('kube-controller-manager') + is_expected.to contain_file('/etc/kubernetes/controller-manager').with({ 'ensure' => 'file', }) + is_expected.to contain_file('/etc/kubernetes/controller-manager').with_content(/### file managed by puppet/) + is_expected.to contain_service('kube-controller-manager') + end end end end diff --git a/spec/classes/kubernetes_master_scheduler_spec.rb b/spec/classes/kubernetes_master_scheduler_spec.rb index 335c9af..c98463a 100644 --- a/spec/classes/kubernetes_master_scheduler_spec.rb +++ b/spec/classes/kubernetes_master_scheduler_spec.rb @@ -1,22 +1,22 @@ require 'spec_helper' -describe 'kubernetes::master::scheduler', :type => :class do - context 'with defaults for all parameters on RedHat' do - let :facts do - { - :kernel => 'Linux', - :osfamily => 'RedHat', - } - end - it 'test default install' do - is_expected.to compile.with_all_deps - is_expected.to contain_class('kubernetes::master') - is_expected.to contain_class('kubernetes::master::scheduler') - is_expected.to contain_class('kubernetes::master::params') +describe 'kubernetes::master::scheduler', :type => :class do + on_supported_os.each do |os, facts| + context "on #{os}" do + let :facts do + facts.merge({:puppetversion => Puppet.version}) + end + + it 'test default install' do + is_expected.to compile.with_all_deps + is_expected.to contain_class('kubernetes::master') + is_expected.to contain_class('kubernetes::master::scheduler') + is_expected.to contain_class('kubernetes::master::params') - is_expected.to contain_file('/etc/kubernetes/scheduler').with({ 'ensure' => 'file', }) - is_expected.to contain_file('/etc/kubernetes/scheduler').with_content(/### file managed by puppet/) - is_expected.to contain_service('kube-scheduler') + is_expected.to contain_file('/etc/kubernetes/scheduler').with({ 'ensure' => 'file', }) + is_expected.to contain_file('/etc/kubernetes/scheduler').with_content(/### file managed by puppet/) + is_expected.to contain_service('kube-scheduler') + end end end end diff --git a/spec/classes/kubernetes_master_spec.rb b/spec/classes/kubernetes_master_spec.rb index 3c350f6..6837f51 100644 --- a/spec/classes/kubernetes_master_spec.rb +++ b/spec/classes/kubernetes_master_spec.rb @@ -1,20 +1,20 @@ require 'spec_helper' describe 'kubernetes::master', :type => :class do - context 'with defaults for all parameters on RedHat' do - let :facts do - { - :kernel => 'Linux', - :osfamily => 'RedHat', - } - end - it 'test default install' do - is_expected.to compile.with_all_deps - is_expected.to contain_class('kubernetes::client') - is_expected.to contain_class('kubernetes::master') + on_supported_os.each do |os, facts| + context "on #{os}" do + let :facts do + facts.merge({:puppetversion => Puppet.version}) + end + + it 'test default install' do + is_expected.to compile.with_all_deps + is_expected.to contain_class('kubernetes::client') + is_expected.to contain_class('kubernetes::master') - is_expected.to contain_package('kubernetes-master').with_ensure('present') - is_expected.to contain_file('/etc/kubernetes/').with({ 'ensure' => 'directory', }) + is_expected.to contain_package('kubernetes-master').with_ensure('present') + is_expected.to contain_file('/etc/kubernetes/').with({ 'ensure' => 'directory', }) + end end end end diff --git a/spec/classes/kubernetes_node_kube_proxy_spec.rb b/spec/classes/kubernetes_node_kube_proxy_spec.rb index ae706f2..e7cdf96 100644 --- a/spec/classes/kubernetes_node_kube_proxy_spec.rb +++ b/spec/classes/kubernetes_node_kube_proxy_spec.rb @@ -1,22 +1,22 @@ require 'spec_helper' describe 'kubernetes::node::kube_proxy', :type => :class do - context 'with defaults for all parameters on RedHat' do - let :facts do - { - :kernel => 'Linux', - :osfamily => 'RedHat', - } - end - it 'test default install' do - is_expected.to compile.with_all_deps - is_expected.to contain_class('kubernetes::node') - is_expected.to contain_class('kubernetes::node::kube_proxy') - is_expected.to contain_class('kubernetes::node::params') + on_supported_os.each do |os, facts| + context "on #{os}" do + let :facts do + facts.merge({:puppetversion => Puppet.version}) + end + + it 'test default install' do + is_expected.to compile.with_all_deps + is_expected.to contain_class('kubernetes::node') + is_expected.to contain_class('kubernetes::node::kube_proxy') + is_expected.to contain_class('kubernetes::node::params') - is_expected.to contain_file('/etc/kubernetes/proxy').with({ 'ensure' => 'file', }) - is_expected.to contain_file('/etc/kubernetes/proxy').with_content(/### file managed by puppet/) - is_expected.to contain_service('kube-proxy') + is_expected.to contain_file('/etc/kubernetes/proxy').with({ 'ensure' => 'file', }) + is_expected.to contain_file('/etc/kubernetes/proxy').with_content(/### file managed by puppet/) + is_expected.to contain_service('kube-proxy') + end end end end diff --git a/spec/classes/kubernetes_node_kubelet_spec.rb b/spec/classes/kubernetes_node_kubelet_spec.rb index 743cf23..a8df7dc 100644 --- a/spec/classes/kubernetes_node_kubelet_spec.rb +++ b/spec/classes/kubernetes_node_kubelet_spec.rb @@ -1,22 +1,22 @@ require 'spec_helper' describe 'kubernetes::node::kubelet', :type => :class do - context 'with defaults for all parameters on RedHat' do - let :facts do - { - :kernel => 'Linux', - :osfamily => 'RedHat', - } - end - it 'test default install' do - is_expected.to compile.with_all_deps - is_expected.to contain_class('kubernetes::node') - is_expected.to contain_class('kubernetes::node::kubelet') - is_expected.to contain_class('kubernetes::node::params') + on_supported_os.each do |os, facts| + context "on #{os}" do + let :facts do + facts.merge({:puppetversion => Puppet.version}) + end + + it 'test default install' do + is_expected.to compile.with_all_deps + is_expected.to contain_class('kubernetes::node') + is_expected.to contain_class('kubernetes::node::kubelet') + is_expected.to contain_class('kubernetes::node::params') - is_expected.to contain_file('/etc/kubernetes/kubelet').with({ 'ensure' => 'file', }) - is_expected.to contain_file('/etc/kubernetes/kubelet').with_content(/### file managed by puppet/) - is_expected.to contain_service('kubelet') + is_expected.to contain_file('/etc/kubernetes/kubelet').with({ 'ensure' => 'file', }) + is_expected.to contain_file('/etc/kubernetes/kubelet').with_content(/### file managed by puppet/) + is_expected.to contain_service('kubelet') + end end end end diff --git a/spec/classes/kubernetes_node_spec.rb b/spec/classes/kubernetes_node_spec.rb index 72271be..f663460 100644 --- a/spec/classes/kubernetes_node_spec.rb +++ b/spec/classes/kubernetes_node_spec.rb @@ -1,25 +1,25 @@ require 'spec_helper' -describe 'kubernetes::node', :type => :class do - context 'with defaults for all parameters on RedHat' do - let :facts do - { - :kernel => 'Linux', - :osfamily => 'RedHat', - } - end - it 'test default install' do - is_expected.to compile.with_all_deps - is_expected.to contain_class('kubernetes::client') - is_expected.to contain_class('kubernetes::node') +describe 'kubernetes::node', :type => :class do + on_supported_os.each do |os, facts| + context "on #{os}" do + let :facts do + facts.merge({:puppetversion => Puppet.version}) + end + + it 'test default install' do + is_expected.to compile.with_all_deps + is_expected.to contain_class('kubernetes::client') + is_expected.to contain_class('kubernetes::node') - is_expected.to contain_package('kubernetes-node').with_ensure('present') - is_expected.to contain_file('/etc/kubernetes/').with({ 'ensure' => 'directory', }) - is_expected.to contain_file('/etc/kubernetes/manifests/').with({ 'ensure' => 'directory', }) - is_expected.to contain_file('/var/run/kubernetes/').with({ - 'ensure' => 'directory', - 'owner' => 'kube', - }) + is_expected.to contain_package('kubernetes-node').with_ensure('present') + is_expected.to contain_file('/etc/kubernetes/').with({ 'ensure' => 'directory', }) + is_expected.to contain_file('/etc/kubernetes/manifests/').with({ 'ensure' => 'directory', }) + is_expected.to contain_file('/var/run/kubernetes/').with({ + 'ensure' => 'directory', + 'owner' => 'kube', + }) + end end end end diff --git a/spec/classes/kubernetes_spec.rb b/spec/classes/kubernetes_spec.rb index c823d0b..d75dbae 100644 --- a/spec/classes/kubernetes_spec.rb +++ b/spec/classes/kubernetes_spec.rb @@ -2,9 +2,17 @@ describe 'kubernetes', :type => :class do context 'with defaults for all parameters on RedHat' do - it 'test default install' do - is_expected.to compile.with_all_deps - is_expected.to contain_class('kubernetes') + on_supported_os.each do |os, facts| + context "on #{os}" do + let(:facts) do + facts.merge({:puppetversion => Puppet.version}) + end + + it 'test default install' do + is_expected.to compile.with_all_deps + is_expected.to contain_class('kubernetes') + end + end end end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 1a5a55c..45c9803 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,5 +1,7 @@ require 'rubygems' require 'puppetlabs_spec_helper/module_spec_helper' +require 'rspec-puppet-facts' +include RspecPuppetFacts RSpec.configure do |config| config.mock_with :rspec do |c| diff --git a/templates/etc/default/api-server.erb b/templates/etc/default/api-server.erb new file mode 100644 index 0000000..7e34d89 --- /dev/null +++ b/templates/etc/default/api-server.erb @@ -0,0 +1,3 @@ +. /etc/kubernetes/apiserver + +DAEMON_ARGS="$KUBE_API_ADDRESS $KUBE_API_PORT $KUBELET_PORT $KUBE_SERVICE_ADDRESSES $KUBE_ADMISSION_CONTROL $KUBE_API_ARGS" diff --git a/templates/etc/default/controller-manager.erb b/templates/etc/default/controller-manager.erb new file mode 100644 index 0000000..a77622d --- /dev/null +++ b/templates/etc/default/controller-manager.erb @@ -0,0 +1,3 @@ +. /etc/kubernetes/controller-manager + +DAEMON_ARGS="$KUBE_CONTROLLER_MANAGER_ARGS" diff --git a/templates/etc/default/kubelet.erb b/templates/etc/default/kubelet.erb new file mode 100644 index 0000000..4d6f603 --- /dev/null +++ b/templates/etc/default/kubelet.erb @@ -0,0 +1,3 @@ +. /etc/kubernetes/kubelet + +DAEMON_ARGS="$KUBELET_ADDRESS $KUBELET_PORT $KUBELET_HOSTNAME $KUBELET_API_SERVER $KUBE_KUBELET_ARGS" diff --git a/templates/etc/default/proxy.erb b/templates/etc/default/proxy.erb new file mode 100644 index 0000000..1be4eca --- /dev/null +++ b/templates/etc/default/proxy.erb @@ -0,0 +1,3 @@ +. /etc/kubernetes/proxy + +DAEMON_ARGS="$KUBE_PROXY_ARGS" diff --git a/templates/etc/default/scheduler.erb b/templates/etc/default/scheduler.erb new file mode 100644 index 0000000..edca0ac --- /dev/null +++ b/templates/etc/default/scheduler.erb @@ -0,0 +1,3 @@ +. /etc/kubernetes/scheduler + +DAEMON_ARGS="$KUBE_SCHEDULER_ARGS"