[stable/heapster] Add heapster to chart repository (#680)

* [stable/heapster] Add heapster to chart repository

* [stable/heapster] bump heapster to v1.3.0

* [stable/heapster] minor fixes to the README

* [stable/heapster] Use consistent service

- notes now use consistent service name
- small changes to README.md

* [stable/heapster] Adds service name overide option
This commit is contained in:
jose5918
2017-05-05 15:55:52 -07:00
committed by Vic Iglesias
parent 622d462633
commit 1d54b0edfa
7 changed files with 244 additions and 0 deletions
+15
View File
@@ -0,0 +1,15 @@
apiVersion: v1
description: Heapster enables Container Cluster Monitoring and Performance Analysis.
name: heapster
version: 0.1.0
sources:
- https://github.com/kubernetes/heapster
- https://github.com/kubernetes/contrib/tree/master/addon-resizer
keywords:
- metrics
- cadvisor
- monitoring
maintainers:
- name: Jose Aguirre
email: jose.g.aguirre@intel.com
engine: gotpl
+56
View File
@@ -0,0 +1,56 @@
# Heapster
[Heapster](https://github.com/kubernetes/heapster) enables Container Cluster Monitoring and Performance Analysis. It collects and interprets various signals like compute resource usage, lifecycle events, etc, and exports cluster metrics via REST endpoints.
## QuickStart
```bash
$ helm install stable/heapster
```
## Installing the Chart
To install the chart with the release name `my-release`:
```bash
$ helm install --name my-release stable/heapster
```
## Uninstalling the Chart
To uninstall/delete the `my-release` deployment:
```bash
$ helm delete my-release --purge
```
The command removes all the Kubernetes components associated with the chart and deletes the release.
## Configuration
The default configuration values for this chart are listed in `values.yaml`.
| Parameter | Description | Default |
|---------------------------------------|-------------------------------------|---------------------------------------------------|
| `image.repository` | Repository for container image | gcr.io/google_containers/heapster |
| `image.tag` | Container image tag | v1.3.0 |
| `image.pullPolicy` | Image pull policy | IfNotPresent |
| `service.name` | Service port name | api |
| `service.type` | Type for the service | ClusterIP |
| `service.externalPort` | Service external port | 8082 |
| `service.internalPort` | Service internal port | 8082 |
| `resources.limits` | Server resource limits | requests: {cpu: 100m, memory: 128Mi} |
| `resources.requests` | Server resource requests | requests: {cpu: 100m, memory: 128Mi} |
| `command` | Commands for heapster pod | "/heapster --source=kubernetes.summary_api:'' |
| `resizer.enabled` | If enabled, scale resources | true |
The table below is only applicable if `resizer.enabled` is `true`. More information on resizer can be found [here](https://github.com/kubernetes/contrib/blob/master/addon-resizer/README.md).
| Parameter | Description | Default |
|---------------------------------------|-------------------------------------|---------------------------------------------------|
| `resizer.image.repository` | Repository for container image | gcr.io/google_containers/addon-resizer |
| `resizer.image.tag` | Container image tag | 1.7 |
| `resizer.image.pullPolicy` | Image pull policy | IfNotPresent |
| `resizer.resources.limits` | Server resource limits | requests: {cpu: 50m, memory: 90Mi} |
| `resizer.resources.requests` | Server resource requests | requests: {cpu: 50m, memory: 90Mi} |
| `resizer.flags` | Flags for pod nanny command | Defaults set in values.yaml |
+14
View File
@@ -0,0 +1,14 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "service.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT/
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get svc -w {{ template "service.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "service.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo http://$SERVICE_IP:{{ .Values.service.externalPort }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "service.fullname" . }}" -o jsonpath="{.items[0].metadata.name}")
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME {{ .Values.service.externalPort }}
{{- end }}
+25
View File
@@ -0,0 +1,25 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "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).
*/}}
{{- define "fullname" -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- printf "%s-%s" .Release.Name $name | 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 "service.fullname" -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- .Values.service.nameOverride | default (printf "%s-%s" .Release.Name $name) | trunc 63 | trimSuffix "-" -}}
{{- end -}}
+56
View File
@@ -0,0 +1,56 @@
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: {{ template "fullname" . }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
spec:
replicas: {{ .Values.replicaCount }}
template:
metadata:
labels:
app: {{ template "fullname" . }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- containerPort: {{ .Values.service.internalPort }}
livenessProbe:
httpGet:
path: /healthz
port: {{ .Values.service.internalPort }}
initialDelaySeconds: 180
timeoutSeconds: 5
resources:
{{ toYaml .Values.resources | indent 12 }}
command:
{{- range .Values.command }}
- {{ . | quote }}
{{- end }}
{{ if .Values.resizer.enabled }}
- name: {{ .Chart.Name }}-nanny
{{ with .Values.resizer }}
image: "{{ .image.repository }}:{{ .image.tag }}"
imagePullPolicy: {{ .image.pullPolicy }}
resources:
{{ toYaml .resources | indent 12 }}
env:
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
{{- end }}
command:
- "/pod_nanny"
- "--deployment={{ template "fullname" . }}"
- "--container={{ .Chart.Name }}"
{{- range .Values.resizer.flags }}
- {{ . | quote }}
{{- end }}
{{- end -}}
+17
View File
@@ -0,0 +1,17 @@
apiVersion: v1
kind: Service
metadata:
name: {{ template "service.fullname" . }}
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
app: {{ template "fullname" . }}
heritage: "{{ .Release.Service }}"
release: "{{ .Release.Name }}"
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.externalPort }}
targetPort: {{ .Values.service.internalPort }}
protocol: TCP
selector:
app: {{ template "fullname" . }}
+61
View File
@@ -0,0 +1,61 @@
## Default values for heapster.
##
replicaCount: 1
image:
repository: gcr.io/google_containers/heapster
tag: v1.3.0
pullPolicy: IfNotPresent
service:
type: ClusterIP
externalPort: 8082
internalPort: 8082
## This allows an overide of the heapster service name
## Default: {{ template "fullname" . }}
# nameOverride:
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
## Heapster command and arguments
## Default source=kubernetes.summary_api:''
## ref: https://github.com/kubernetes/heapster/blob/master/docs/source-configuration.md
##
## By default sink not set
## ref: https://github.com/kubernetes/heapster/blob/master/docs/sink-configuration.md
##
command:
- "/heapster"
- "--source=kubernetes.summary_api:''"
## Resizer scales resources linearly with the number of nodes in the cluster
## Resizer is enabled by default
##
resizer:
enabled: true
image:
repository: gcr.io/google_containers/addon-resizer
tag: 1.7
pullPolicy: IfNotPresent
resources:
limits:
cpu: 50m
memory: 90Mi
requests:
cpu: 50m
memory: 90Mi
## Flags used for /pod_nanny command
## container and deployment flags already determined chart name
## ref: https://github.com/kubernetes/contrib/blob/master/addon-resizer/README.md
##
flags:
- "--cpu=150m"
- "--extra-cpu=10m"
- "--memory=200Mi"
- "--extra-memory=6Mi"
- "--threshold=5"
- "--poll-period=300000"