From 265e3035e1983955e748273529250280e662ec06 Mon Sep 17 00:00:00 2001 From: Mike Wilson Date: Wed, 21 Feb 2018 19:23:15 -0500 Subject: [PATCH] Adding metrics server --- .../juju/layers/kubernetes-master/config.yaml | 5 +++++ .../reactive/kubernetes_master.py | 16 +++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/cluster/juju/layers/kubernetes-master/config.yaml b/cluster/juju/layers/kubernetes-master/config.yaml index 735182c210..be192b412e 100644 --- a/cluster/juju/layers/kubernetes-master/config.yaml +++ b/cluster/juju/layers/kubernetes-master/config.yaml @@ -86,3 +86,8 @@ options: description: | The storage backend for kube-apiserver persistence. Can be "etcd2", "etcd3", or "auto". Auto mode will select etcd3 on new installations, or etcd2 on upgrades. + enable-metrics: + type: boolean + default: true + description: | + If true the metrics server for Kubernetes will be deployed onto the cluster. diff --git a/cluster/juju/layers/kubernetes-master/reactive/kubernetes_master.py b/cluster/juju/layers/kubernetes-master/reactive/kubernetes_master.py index 45c88dbc0f..e58e419d47 100644 --- a/cluster/juju/layers/kubernetes-master/reactive/kubernetes_master.py +++ b/cluster/juju/layers/kubernetes-master/reactive/kubernetes_master.py @@ -640,12 +640,14 @@ def configure_cdk_addons(): remove_state('cdk-addons.configured') dbEnabled = str(hookenv.config('enable-dashboard-addons')).lower() dnsEnabled = str(hookenv.config('enable-kube-dns')).lower() + metricsEnabled = str(hookenv.config('enable-metrics')).lower() args = [ 'arch=' + arch(), 'dns-ip=' + get_deprecated_dns_ip(), 'dns-domain=' + hookenv.config('dns_domain'), 'enable-dashboard=' + dbEnabled, - 'enable-kube-dns=' + dnsEnabled + 'enable-kube-dns=' + dnsEnabled, + 'enable-metrics=' + metricsEnabled ] check_call(['snap', 'set', 'cdk-addons'] + args) if not addons_ready(): @@ -1158,6 +1160,18 @@ def configure_apiserver(etcd_connection_string, leader_etcd_version): admission_control.remove('Initializers') api_opts['admission-control'] = ','.join(admission_control) + if get_version('kube-apiserver') > (1, 6) and \ + hookenv.config('enable-metrics'): + api_opts['requestheader-client-ca-file'] = ca_cert_path + api_opts['requestheader-allowed-names'] = 'client' + api_opts['requestheader-extra-headers-prefix'] = 'X-Remote-Extra-' + api_opts['requestheader-group-headers'] = 'X-Remote-Group' + api_opts['requestheader-username-headers'] = 'X-Remote-User' + api_opts['proxy-client-cert-file'] = client_cert_path + api_opts['proxy-client-key-file'] = client_key_path + api_opts['enable-aggregator-routing'] = 'true' + api_opts['client-ca-file'] = ca_cert_path + configure_kubernetes_service('kube-apiserver', api_opts, 'api-extra-args') restart_apiserver()