Adds metrics-server chart (#5538)

* Add initial commit of a metrics-server chart

* Fixes metrics-server without rbac

* Fixed some lint errors

* Add a NOTES.txt file

* makes some imrpovements on how the chart looks like compared to helm create

* follow best practices for RBAC

* adds selector in deployment

* incubator/metrics-server: create ServiceAccount based on serviceAccount.create

* incubator/metrics-server: default pullPolicy to IfNotPresent

* incubator/metrics-server: add maintainer

* incubator/metrics-server: replace maintainer full name with github username in Chart.yaml

* incubator/metrics-server: make namespace configurable where possible

* incubator/metrics-server: grant system:auth-delegator clusterrole and the extension-apiserver-authentication-reader role specifically in the kube-system namespace

* incubator/metrics-server: Replace 'metrics-server' with release fullname

* incubator/metrics-server: Make apiService creation conditional

* Revert "incubator/metrics-server: grant system:auth-delegator clusterrole and the extension-apiserver-authentication-reader role specifically in the kube-system namespace"

This reverts commit b35818cf7d.

* incubator/metrics-server: put system:auth-delegator crb in kube-system

* incubator/metrics-server: disable creation of apiService on CI runs

* incubator/metrics-server: remove an unecessary RBAC rule

* incubator/metrics-server: warn about not setting apiSerivce.create: true

* incubator/metrics-server: update README.md to reflect values.yaml

* stable/metrics-server: promote chart from incubator to stable
This commit is contained in:
Ole Markus With
2018-06-24 07:25:04 -07:00
committed by k8s-ci-robot
parent 0c1ec955e5
commit da161a80fc
15 changed files with 296 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
+13
View File
@@ -0,0 +1,13 @@
apiVersion: v1
appVersion: 0.2.1
description: Metrics Server is a cluster-wide aggregator of resource usage data.
name: metrics-server
version: 0.0.2
keywords:
- metrics-server
home: https://github.com/kubernetes-incubator/metrics-server
sources:
- https://github.com/kubernetes-incubator/metrics-server
maintainers:
- name: olemarkus
email: o.with@sportradar.com
+15
View File
@@ -0,0 +1,15 @@
# metric-server
Metrics Server is a cluster-wide aggregator of resource usage data.
## Configuration
Parameter | Description | Default
--- | --- | ---
`rbac.create` | Enable Role-based authentication | `true`
`serviceAccount.create` | If `true`, create a new service account | `true`
`serviceAccount.name` | Service account to be used. If not set and `serviceAccount.create` is `true`, a name is generated using the fullname template | ``
`apiService.create` | Create the v1beta1.metrics.k8s.io API service | `true`
`image.repository` | Image repository | `gcr.io/google_containers/metrics-server-amd64`
`image.tag` | Image tag | `v0.2.1`
`image.pullPolicy` | Image pull policy | `IfNotPresent`
+5
View File
@@ -0,0 +1,5 @@
# CI is running on GKE, which already ships metrics-server. This cause
# conflicts on the apiService resource.
apiService:
create: false
+11
View File
@@ -0,0 +1,11 @@
The metric server has been deployed.
{{ if .Values.apiService.create }}
In a few minutes you should be able to list metrics using the following
command:
kubectl get --raw "/apis/metrics.k8s.io/v1beta1/nodes"
{{ else }}
NOTE: You have disabled the API service creation for this release. The metrics
API will not work with this release unless you configure the metrics API
service outside of this Helm chart.
{{- end -}}
@@ -0,0 +1,51 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "metrics-server.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "metrics-server.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "metrics-server.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a service name that defaults to app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
*/}}
{{- define "metrics-server.service.fullname" -}}
{{- .Values.service.nameOverride | default .Chart.Name }}
{{- end -}}
{{/*
Create the name of the service account to use
*/}}
{{- define "metrics-server.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "metrics-server.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}
@@ -0,0 +1,20 @@
{{- if .Values.rbac.create -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: {{ template "metrics-server.fullname" . }}:system:auth-delegator
namespace: kube-system
labels:
app: {{ template "metrics-server.name" . }}
chart: {{ template "metrics-server.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: system:auth-delegator
subjects:
- kind: ServiceAccount
name: {{ template "metrics-server.fullname" . }}
namespace: {{ .Release.Namespace }}
{{- end -}}
@@ -0,0 +1,22 @@
{{- if .Values.rbac.create -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: system:{{ template "metrics-server.fullname" . }}
labels:
app: {{ template "metrics-server.name" . }}
chart: {{ template "metrics-server.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
rules:
- apiGroups:
- ""
resources:
- pods
- nodes
- namespaces
verbs:
- get
- list
- watch
{{- end -}}
@@ -0,0 +1,17 @@
apiVersion: v1
kind: Service
metadata:
name: {{ template "metrics-server.fullname" . }}
labels:
app: {{ template "metrics-server.name" . }}
chart: {{ template "metrics-server.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
app: {{ template "metrics-server.name" . }}
release: {{ .Release.Name }}
@@ -0,0 +1,20 @@
{{- if .Values.apiService.create -}}
apiVersion: apiregistration.k8s.io/v1beta1
kind: APIService
metadata:
name: v1beta1.metrics.k8s.io
labels:
app: {{ template "metrics-server.name" . }}
chart: {{ template "metrics-server.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
service:
name: {{ template "metrics-server.fullname" . }}
namespace: {{ .Release.Namespace }}
group: metrics.k8s.io
version: v1beta1
insecureSkipTLSVerify: true
groupPriorityMinimum: 100
versionPriority: 100
{{- end -}}
@@ -0,0 +1,19 @@
{{- if .Values.rbac.create -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: system:{{ template "metrics-server.fullname" . }}
labels:
app: {{ template "metrics-server.name" . }}
chart: {{ template "metrics-server.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: system:{{ template "metrics-server.fullname" . }}
subjects:
- kind: ServiceAccount
name: {{ template "metrics-server.fullname" . }}
namespace: {{ .Release.Namespace }}
{{- end -}}
@@ -0,0 +1,28 @@
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: {{ template "metrics-server.fullname" . }}
labels:
app: {{ template "metrics-server.name" . }}
chart: {{ template "metrics-server.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
selector:
matchLabels:
app: {{ template "metrics-server.name" . }}
release: {{ .Release.Name }}
template:
metadata:
labels:
app: {{ template "metrics-server.name" . }}
release: {{ .Release.Name }}
spec:
serviceAccountName: {{ template "metrics-server.serviceAccountName" . }}
containers:
- name: metrics-server
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
command:
- /metrics-server
- --source=kubernetes.summary_api:''
@@ -0,0 +1,11 @@
{{- if .Values.serviceAccount.create -}}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ template "metrics-server.fullname" . }}
labels:
app: {{ template "metrics-server.name" . }}
chart: {{ template "metrics-server.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
{{- end -}}
@@ -0,0 +1,20 @@
{{- if .Values.rbac.create -}}
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
name: {{ template "metrics-server.fullname" . }}-auth-reader
namespace: kube-system
labels:
app: {{ template "metrics-server.name" . }}
chart: {{ template "metrics-server.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: extension-apiserver-authentication-reader
subjects:
- kind: ServiceAccount
name: {{ template "metrics-server.fullname" . }}
namespace: {{ .Release.Namespace }}
{{- end -}}
+23
View File
@@ -0,0 +1,23 @@
rbac:
# Specifies whether RBAC resources should be created
create: true
serviceAccount:
# Specifies whether a ServiceAccount should be created
create: true
# The name of the ServiceAccount to use.
# If not set and create is true, a name is generated using the fullname template
name:
apiService:
# Specifies if the v1beta1.metrics.k8s.io API service should be created.
#
# You typically want this enabled! If you disable API service creation you have to
# manage it outside of this chart for e.g horizontal pod autoscaling to
# work with this release.
create: true
image:
repository: gcr.io/google_containers/metrics-server-amd64
tag: v0.2.1
pullPolicy: IfNotPresent