From d9fe738d73ed24b2dadaf0130d9f9643542b73d1 Mon Sep 17 00:00:00 2001 From: Yusuke KUOKA Date: Fri, 8 Dec 2017 20:57:54 +0900 Subject: [PATCH] Allow toggling Metrics Server installation Resolves #1054 --- .../config/templates/cloud-config-controller | 27 ++++++++++++------- .../config/templates/cluster.yaml | 4 +++ core/root/config/config.go | 1 + model/addons.go | 6 +++++ test/integration/maincluster_test.go | 5 ++++ 5 files changed, 34 insertions(+), 9 deletions(-) diff --git a/core/controlplane/config/templates/cloud-config-controller b/core/controlplane/config/templates/cloud-config-controller index 24e9fb2d7..c0757ca51 100644 --- a/core/controlplane/config/templates/cloud-config-controller +++ b/core/controlplane/config/templates/cloud-config-controller @@ -817,12 +817,24 @@ write_files: fi mfdir=/srv/kubernetes/manifests + rbac=/srv/kubernetes/rbac {{ if .UseCalico }} /bin/bash /opt/bin/populate-tls-calico-etcd applyall "${mfdir}/calico.yaml" {{ end }} + {{ if .Addons.MetricsServer.Enabled -}} + applyall \ + "${mfdir}/metrics-server-sa.yaml" \ + "${mfdir}/metrics-server-de.yaml" \ + "${mfdir}/metrics-server-svc.yaml" \ + "${rbac}/cluster-roles/metrics-server.yaml" \ + "${rbac}/cluster-role-bindings/metrics-server.yaml" \ + "${rbac}/role-bindings/metrics-server.yaml" \ + "${mfdir}/metrics-server-apisvc.yaml" + {{- end }} + {{ if .Experimental.NodeDrainer.Enabled }} applyall "${mfdir}"/{kube-node-drainer-ds,kube-node-drainer-asg-status-updater-de}".yaml" {{ end }} @@ -834,7 +846,7 @@ write_files: applyall "${mfdir}"/{kube-dns,kube-proxy}"-cm.yaml" # Service Accounts - applyall "${mfdir}"/{kube-dns,heapster,kube-proxy,kubernetes-dashboard,metrics-server}"-sa.yaml" + applyall "${mfdir}"/{kube-dns,heapster,kube-proxy,kubernetes-dashboard}"-sa.yaml" # Install tiller by default applyall "${mfdir}/tiller.yaml" @@ -845,27 +857,24 @@ write_files: {{ end }} # Deployments - applyall "${mfdir}"/{kube-dns,kube-dns-autoscaler,kubernetes-dashboard,{{ if .Addons.ClusterAutoscaler.Enabled }}cluster-autoscaler,{{ end }}heapster{{ if .KubeResourcesAutosave.Enabled }},kube-resources-autosave{{ end }},metrics-server}"-de.yaml" + applyall "${mfdir}"/{kube-dns,kube-dns-autoscaler,kubernetes-dashboard,{{ if .Addons.ClusterAutoscaler.Enabled }}cluster-autoscaler,{{ end }}heapster{{ if .KubeResourcesAutosave.Enabled }},kube-resources-autosave{{ end }}}"-de.yaml" # Daemonsets applyall "${mfdir}"/kube-proxy"-ds.yaml" # Services - applyall "${mfdir}"/{kube-dns,heapster,kubernetes-dashboard,metrics-server}"-svc.yaml" + applyall "${mfdir}"/{kube-dns,heapster,kubernetes-dashboard}"-svc.yaml" {{- if .Addons.Rescheduler.Enabled }} applyall "${mfdir}/kube-rescheduler-de.yaml" {{- end }} - # API Services - applyall "${mfdir}/metrics-server-apisvc.yaml" - mfdir=/srv/kubernetes/rbac # Cluster roles and bindings - applyall "${mfdir}/cluster-roles"/{node-extensions,metrics-server}".yaml" + applyall "${mfdir}/cluster-roles/node-extensions.yaml" - applyall "${mfdir}/cluster-role-bindings"/{kube-admin,system-worker,node,node-proxier,node-extensions,heapster,metrics-server}".yaml" + applyall "${mfdir}/cluster-role-bindings"/{kube-admin,system-worker,node,node-proxier,node-extensions,heapster}".yaml" {{ if .KubernetesDashboard.AdminPrivileges }} applyall "${mfdir}/cluster-role-bindings/kubernetes-dashboard-admin.yaml" @@ -874,7 +883,7 @@ write_files: # Roles and bindings applyall "${mfdir}/roles"/{pod-nanny,kubernetes-dashboard}".yaml" - applyall "${mfdir}/role-bindings"/{heapster-nanny,kubernetes-dashboard,metrics-server}".yaml" + applyall "${mfdir}/role-bindings"/{heapster-nanny,kubernetes-dashboard}".yaml" {{ if .Experimental.TLSBootstrap.Enabled }} applyall "${mfdir}/cluster-roles"/{node-bootstrapper,kubelet-certificate-bootstrap}".yaml" diff --git a/core/controlplane/config/templates/cluster.yaml b/core/controlplane/config/templates/cluster.yaml index 37e68dae6..adea891c5 100644 --- a/core/controlplane/config/templates/cluster.yaml +++ b/core/controlplane/config/templates/cluster.yaml @@ -1194,6 +1194,10 @@ addons: rescheduler: enabled: false + # Metrics Server (https://github.com/kubernetes-incubator/metrics-server) + metricsServer: + enabled: false + # Experimental features will change in backward-incompatible ways experimental: # Enable admission controllers diff --git a/core/root/config/config.go b/core/root/config/config.go index 64518c2c6..b8479352a 100644 --- a/core/root/config/config.go +++ b/core/root/config/config.go @@ -144,6 +144,7 @@ func ConfigFromBytes(data []byte, plugins []*pluginmodel.Plugin) (*Config, error {c.Addons, "addons"}, {c.Addons.Rescheduler, "addons.rescheduler"}, {c.Addons.ClusterAutoscaler, "addons.clusterAutoscaler"}, + {c.Addons.MetricsServer, "addons.metricsServer"}, } for i, np := range c.Worker.NodePools { diff --git a/model/addons.go b/model/addons.go index 347de54bb..e6b6dbeea 100644 --- a/model/addons.go +++ b/model/addons.go @@ -3,6 +3,7 @@ package model type Addons struct { Rescheduler Rescheduler `yaml:"rescheduler"` ClusterAutoscaler ClusterAutoscalerSupport `yaml:"clusterAutoscaler,omitempty"` + MetricsServer MetricsServer `yaml:"metricsServer,omitempty"` UnknownKeys `yaml:",inline"` } @@ -15,3 +16,8 @@ type Rescheduler struct { Enabled bool `yaml:"enabled"` UnknownKeys `yaml:",inline"` } + +type MetricsServer struct { + Enabled bool `yaml:"enabled"` + UnknownKeys `yaml:",inline"` +} diff --git a/test/integration/maincluster_test.go b/test/integration/maincluster_test.go index c7c6510fc..4d6e33ab1 100644 --- a/test/integration/maincluster_test.go +++ b/test/integration/maincluster_test.go @@ -405,6 +405,8 @@ addons: enabled: true clusterAutoscaler: enabled: true + metricsServer: + enabled: true worker: nodePools: - name: pool1 @@ -420,6 +422,9 @@ worker: ClusterAutoscaler: model.ClusterAutoscalerSupport{ Enabled: true, }, + MetricsServer: model.MetricsServer{ + Enabled: true, + }, } actual := c.Addons