From c920911c71c171b6417ca6cd4e7fedc01e6d31b3 Mon Sep 17 00:00:00 2001 From: Tommy McNeely Date: Tue, 14 Jan 2020 18:20:30 -0700 Subject: [PATCH 1/2] Allow setting metricsBindAddress --- manifests/config/kubeadm.pp | 1 + manifests/init.pp | 5 +++++ templates/v1beta1/config_kubeadm.yaml.erb | 2 +- templates/v1beta2/config_kubeadm.yaml.erb | 2 +- 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/manifests/config/kubeadm.pp b/manifests/config/kubeadm.pp index 54ba6596..f85c8ab8 100644 --- a/manifests/config/kubeadm.pp +++ b/manifests/config/kubeadm.pp @@ -48,6 +48,7 @@ String $image_repository = $kubernetes::image_repository, String $cgroup_driver = $kubernetes::cgroup_driver, String $proxy_mode = $kubernetes::proxy_mode, + Stdlib::IP::Address $metrics_bind_address = $kubernetes::metrics_bind_address, ) { if !($proxy_mode in ['', 'userspace', 'iptables', 'ipvs', 'kernelspace']) { diff --git a/manifests/init.pp b/manifests/init.pp index 28237350..1fe40f75 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -382,6 +382,10 @@ # Availability of the token # Default to 24h # +# [*metrics_bind_address*] +# Set the metricsBindAddress (to allow prometheus) +# Default to 127.0.0.1 +# # Authors # ------- # @@ -496,6 +500,7 @@ default => ['HOME=/root', 'KUBECONFIG=/etc/kubernetes/kubelet.conf'], }, Optional[Array] $ignore_preflight_errors = undef, + Stdlib::IP::Address $metrics_bind_address = '127.0.0.1', ){ if ! $facts['os']['family'] in ['Debian','RedHat'] { notify {"The OS family ${facts['os']['family']} is not supported by this module":} diff --git a/templates/v1beta1/config_kubeadm.yaml.erb b/templates/v1beta1/config_kubeadm.yaml.erb index 62904a39..236c8949 100644 --- a/templates/v1beta1/config_kubeadm.yaml.erb +++ b/templates/v1beta1/config_kubeadm.yaml.erb @@ -128,7 +128,7 @@ ipvs: scheduler: "" syncPeriod: 30s kind: KubeProxyConfiguration -metricsBindAddress: 127.0.0.1:10249 +metricsBindAddress: <%= @metrics_bind_address %>:10249 mode: "<%= @proxy_mode %>" nodePortAddresses: null oomScoreAdj: -999 diff --git a/templates/v1beta2/config_kubeadm.yaml.erb b/templates/v1beta2/config_kubeadm.yaml.erb index 866db7b1..97f2073a 100644 --- a/templates/v1beta2/config_kubeadm.yaml.erb +++ b/templates/v1beta2/config_kubeadm.yaml.erb @@ -129,7 +129,7 @@ ipvs: scheduler: "" syncPeriod: 30s kind: KubeProxyConfiguration -metricsBindAddress: 127.0.0.1:10249 +metricsBindAddress: <%= @metrics_bind_address %>:10249 mode: "<%= @proxy_mode %>" nodePortAddresses: null oomScoreAdj: -999 From 33dcd6b7de0575325d5b0e6b8e29af83ff955cad Mon Sep 17 00:00:00 2001 From: Tommy McNeely Date: Mon, 20 Jan 2020 17:29:33 -0700 Subject: [PATCH 2/2] unit tests for metricsBindAddress --- spec/classes/config/kubeadm_spec.rb | 43 +++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/spec/classes/config/kubeadm_spec.rb b/spec/classes/config/kubeadm_spec.rb index 6f6812ef..6c2e7802 100644 --- a/spec/classes/config/kubeadm_spec.rb +++ b/spec/classes/config/kubeadm_spec.rb @@ -298,4 +298,47 @@ expect(config_yaml[2]['mode']).to include('ipvs') end end + + context 'with metrics_bind_address = 0.0.0.0 with version 1.14.2' do + let(:params) do + { + 'kubernetes_version' => '1.14.2', + 'metrics_bind_address' => '0.0.0.0', + } + end + + let(:config_yaml) { YAML.load_stream(catalogue.resource('file', '/etc/kubernetes/config.yaml').send(:parameters)[:content]) } + + it { is_expected.to contain_file('/etc/kubernetes/config.yaml') } + it 'has 0.0.0.0 in metrics_bind_address:' do + expect(config_yaml[2]['metricsBindAddress']).to include('0.0.0.0') + end + end + + context 'with metrics_bind_address = 0.0.0.0 with version 1.16.3' do + let(:params) do + { + 'kubernetes_version' => '1.16.3', + 'metrics_bind_address' => '0.0.0.0', + } + end + + let(:config_yaml) { YAML.load_stream(catalogue.resource('file', '/etc/kubernetes/config.yaml').send(:parameters)[:content]) } + + it { is_expected.to contain_file('/etc/kubernetes/config.yaml') } + it 'has 0.0.0.0 in metrics_bind_address:' do + expect(config_yaml[2]['metricsBindAddress']).to include('0.0.0.0') + end + end + + context 'with metrics_bind_address = invalid' do + let(:params) do + { + 'kubernetes_version' => '1.14.2', + 'metrics_bind_address' => 'invalid', + } + end + + it { is_expected.to compile.and_raise_error(%r{metrics_bind_address}) } + end end