Skip to content

Commit

Permalink
Merged in dev/gabi/MPC-6612_add_metrics_server (pull request elastic#811
Browse files Browse the repository at this point in the history
)

MPC-6612 Add metrics-server

* MPC-6612 Add metrics-server


Approved-by: Maxime Tremblay
  • Loading branch information
Gabi Davar committed Aug 4, 2022
1 parent 24ab874 commit d1f1224
Show file tree
Hide file tree
Showing 10 changed files with 335 additions and 0 deletions.
15 changes: 15 additions & 0 deletions aws/ams-cluster-v1-tf/eks.tf
Expand Up @@ -20,6 +20,7 @@ locals {
ingress_nginx = "4.0.10"
grafana_agent_operator = "0.1.5"
kube_state_metrics = "4.4.1"
metrics_server = "0.6.1-1"
node_exporter = "3.0.1"
cloudwatch_exporter = "0.14.3-1"
redis_exporter = "1.43.0-1"
Expand Down Expand Up @@ -836,6 +837,20 @@ depends_on = [
]
}

resource "helm_release" "metrics_server" {
chart = "helm-charts/metrics-server"
name = "metrics-server"
version = local.helm_charts_versions.metrics_server
wait = true
atomic = true
max_history = 10
values = []

depends_on = [
module.eks
]
}

resource "helm_release" "node_exporter" {
repository = "https://prometheus-community.github.io/helm-charts"
chart = "prometheus-node-exporter"
Expand Down
23 changes: 23 additions & 0 deletions aws/ams-cluster-v1-tf/helm-charts/metrics-server/.helmignore
@@ -0,0 +1,23 @@
# 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
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
7 changes: 7 additions & 0 deletions aws/ams-cluster-v1-tf/helm-charts/metrics-server/Chart.yaml
@@ -0,0 +1,7 @@
apiVersion: v2
name: metrics-server
description: A minimalistic metrics-server chart for Kubernetes
version: 0.6.1-1
maintainers:
- name: Engageli DevOps
email: devops@engageli.com
@@ -0,0 +1,62 @@
{{/*
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 }}

{{/*
Common labels
*/}}
{{- define "metrics-server.labels" -}}
helm.sh/chart: {{ include "metrics-server.chart" . }}
{{ include "metrics-server.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}

{{/*
Selector labels
*/}}
{{- define "metrics-server.selectorLabels" -}}
app.kubernetes.io/name: {{ include "metrics-server.name" . }}
app.kubernetes.io/instance: {{ .Release.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,16 @@
---
apiVersion: apiregistration.k8s.io/v1
kind: APIService
metadata:
labels:
app: metrics-server
name: v1beta1.metrics.k8s.io
spec:
group: metrics.k8s.io
groupPriorityMinimum: 100
insecureSkipTLSVerify: true
service:
name: metrics-server
namespace: kube-system
version: v1beta1
versionPriority: 100
@@ -0,0 +1,71 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: metrics-server
name: metrics-server
namespace: kube-system
spec:
selector:
matchLabels:
app: metrics-server
replicas: 1
template:
metadata:
labels:
app: metrics-server
spec:
enableServiceLinks: false
priorityClassName: system-cluster-critical
serviceAccountName: metrics-server
containers:
- name: metrics-server
image: {{ $.Values.image.repository }}:v{{ $.Values.image.tag | default ($.Chart.Version | split "-")._0 }}
args:
- --cert-dir=/tmp
- --secure-port=4443
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
- --kubelet-use-node-status-port
- --profiling=false
- --metric-resolution=15s
env:
- name: GOMAXPROCS
value: "1"
ports:
- containerPort: 4443
name: https
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: "1"
memory: 64Mi
readinessProbe:
failureThreshold: 3
httpGet:
path: /readyz
port: https
scheme: HTTPS
initialDelaySeconds: 20
periodSeconds: 10
livenessProbe:
failureThreshold: 3
httpGet:
path: /livez
port: https
scheme: HTTPS
periodSeconds: 10
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 1000
volumeMounts:
- mountPath: /tmp
name: tmp-dir
nodeSelector:
kubernetes.io/os: linux
volumes:
- emptyDir: {}
name: tmp-dir
100 changes: 100 additions & 0 deletions aws/ams-cluster-v1-tf/helm-charts/metrics-server/templates/rbac.yaml
@@ -0,0 +1,100 @@
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app: metrics-server
name: metrics-server
namespace: kube-system
---

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app: metrics-server
rbac.authorization.k8s.io/aggregate-to-admin: "true"
rbac.authorization.k8s.io/aggregate-to-edit: "true"
rbac.authorization.k8s.io/aggregate-to-view: "true"
name: system:aggregated-metrics-reader
rules:
- apiGroups:
- metrics.k8s.io
resources:
- pods
- nodes
verbs:
- get
- list
- watch
---

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app: metrics-server
name: system:metrics-server
rules:
- apiGroups:
- ""
resources:
- nodes/metrics
verbs:
- get
- apiGroups:
- ""
resources:
- pods
- nodes
verbs:
- get
- list
- watch
---

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
labels:
app: metrics-server
name: metrics-server-auth-reader
namespace: kube-system
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: extension-apiserver-authentication-reader
subjects:
- kind: ServiceAccount
name: metrics-server
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app: metrics-server
name: metrics-server:system:auth-delegator
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: system:auth-delegator
subjects:
- kind: ServiceAccount
name: metrics-server
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app: metrics-server
name: system:metrics-server
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: system:metrics-server
subjects:
- kind: ServiceAccount
name: metrics-server
namespace: kube-system

@@ -0,0 +1,23 @@
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
app: metrics-server
name: metrics-server
namespace: kube-system
spec:
endpoints:
- port: https
scheme: https
tlsConfig:
insecureSkipVerify: true
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
namespaceSelector:
matchNames:
- kube-system
selector:
matchExpressions:
- key: app
operator: In
values:
- metrics-server
@@ -0,0 +1,14 @@
apiVersion: v1
kind: Service
metadata:
labels:
app: metrics-server
name: metrics-server
namespace: kube-system
spec:
ports:
- name: https
port: 443
targetPort: https
selector:
app: metrics-server
4 changes: 4 additions & 0 deletions aws/ams-cluster-v1-tf/helm-charts/metrics-server/values.yaml
@@ -0,0 +1,4 @@
image:
repository: k8s.gcr.io/metrics-server/metrics-server
# Overrides the image tag whose default is the chart appVersion.
tag: ""

0 comments on commit d1f1224

Please sign in to comment.