From 7543722cecd9332e7dd5a19dfda49ecec90e9161 Mon Sep 17 00:00:00 2001 From: Giancarlo Rubio Date: Sat, 24 Feb 2018 10:22:48 +0100 Subject: [PATCH] Sentry kubernetes (#3748) * Create helm chart for sentry-kubernetes * Linting * Adding readme * Move the docker image to the oficial one, review labels * Follow rbac best practices * Review ident, add project source and keywords * replace wrong apiversion * add spec.selector required by apps api --- incubator/sentry-kubernetes/.helmignore | 21 ++++++++ incubator/sentry-kubernetes/Chart.yaml | 9 ++++ incubator/sentry-kubernetes/README.md | 22 ++++++++ .../sentry-kubernetes/templates/NOTES.txt | 3 ++ .../sentry-kubernetes/templates/_helpers.tpl | 54 +++++++++++++++++++ .../templates/deployment.yaml | 37 +++++++++++++ .../sentry-kubernetes/templates/secret.yaml | 8 +++ .../templates/serviceaccount.yaml | 7 +++ incubator/sentry-kubernetes/values.yaml | 26 +++++++++ 9 files changed, 187 insertions(+) create mode 100644 incubator/sentry-kubernetes/.helmignore create mode 100644 incubator/sentry-kubernetes/Chart.yaml create mode 100644 incubator/sentry-kubernetes/README.md create mode 100644 incubator/sentry-kubernetes/templates/NOTES.txt create mode 100644 incubator/sentry-kubernetes/templates/_helpers.tpl create mode 100644 incubator/sentry-kubernetes/templates/deployment.yaml create mode 100644 incubator/sentry-kubernetes/templates/secret.yaml create mode 100644 incubator/sentry-kubernetes/templates/serviceaccount.yaml create mode 100644 incubator/sentry-kubernetes/values.yaml diff --git a/incubator/sentry-kubernetes/.helmignore b/incubator/sentry-kubernetes/.helmignore new file mode 100644 index 0000000000..f0c1319444 --- /dev/null +++ b/incubator/sentry-kubernetes/.helmignore @@ -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 diff --git a/incubator/sentry-kubernetes/Chart.yaml b/incubator/sentry-kubernetes/Chart.yaml new file mode 100644 index 0000000000..7a27bec625 --- /dev/null +++ b/incubator/sentry-kubernetes/Chart.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +description: A Helm chart for sentry-kubernetes (https://github.com/getsentry/sentry-kubernetes) +name: sentry-kubernetes +version: 0.1.0 +sources: +- https://github.com/getsentry/sentry-kubernetes +keywords: +- sentry +- report kubernetes events diff --git a/incubator/sentry-kubernetes/README.md b/incubator/sentry-kubernetes/README.md new file mode 100644 index 0000000000..cbb1441335 --- /dev/null +++ b/incubator/sentry-kubernetes/README.md @@ -0,0 +1,22 @@ +# sentry-kubernetes + +[sentry-kubernetes](https://github.com/getsentry/sentry-kubernetes) is a utility that pushes Kubernetes events to [Sentry](https://sentry.io). + +# Installation: + +```console +$ helm install incubator/sentry-kubernetes --name my-release --set sentry.dsn= +``` + +## Configuration + +The following tables lists the configurable parameters of the sentry-kubernetes chart and their default values. + +| Parameter | Description | Default | +|-------------------------|-------------------------------------|-----------------------------------------------------| +| `sentry.dsn` | Sentry dsn | Empty | +| `image.repository` | Container image name | `getsentry/sentry-kubernetes` | +| `image.tag ` | Container image tag | `latest` | +| `rbac.create` | If `true`, create and use RBAC resources | `true`| +| `serviceAccount.name` | Service account to be used. If not set and serviceAccount.create is `true`, a name is generated using the fullname template | `` +| `serviceAccount.create` | If true, create a new service account | `true` \ No newline at end of file diff --git a/incubator/sentry-kubernetes/templates/NOTES.txt b/incubator/sentry-kubernetes/templates/NOTES.txt new file mode 100644 index 0000000000..5b11d88685 --- /dev/null +++ b/incubator/sentry-kubernetes/templates/NOTES.txt @@ -0,0 +1,3 @@ +sentry-kubernetes has been installed! + +If your dsn was correct you should start seeing events in Sentry! diff --git a/incubator/sentry-kubernetes/templates/_helpers.tpl b/incubator/sentry-kubernetes/templates/_helpers.tpl new file mode 100644 index 0000000000..766cd9abfd --- /dev/null +++ b/incubator/sentry-kubernetes/templates/_helpers.tpl @@ -0,0 +1,54 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "sentry-kubernetes.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 "sentry-kubernetes.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 "sentry-kubernetes.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* Generate basic labels */}} +{{- define "sentry-kubernetes.labels" }} +app: {{ template "sentry-kubernetes.name" . }} +heritage: {{.Release.Service }} +release: {{.Release.Name }} +chart: {{ template "sentry-kubernetes.chart" . }} +{{- if .Values.podLabels}} +{{ toYaml .Values.podLabels }} +{{- end }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "sentry-kubernetes.serviceAccountName" -}} +{{- if .Values.serviceAccount.create -}} + {{ default (include "sentry-kubernetes.fullname" .) .Values.serviceAccount.name }} +{{- else -}} + {{ default "default" .Values.serviceAccount.name }} +{{- end -}} +{{- end -}} \ No newline at end of file diff --git a/incubator/sentry-kubernetes/templates/deployment.yaml b/incubator/sentry-kubernetes/templates/deployment.yaml new file mode 100644 index 0000000000..6ea248a4a0 --- /dev/null +++ b/incubator/sentry-kubernetes/templates/deployment.yaml @@ -0,0 +1,37 @@ +apiVersion: apps/v1beta2 +kind: Deployment +metadata: + labels: {{ include "sentry-kubernetes.labels" . | indent 4 }} + name: {{ template "sentry-kubernetes.fullname" . }} +spec: + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + app: {{ template "sentry-kubernetes.name" . }} + template: + metadata: + labels: + app: {{ template "sentry-kubernetes.name" . }} + release: {{.Release.Name }} + spec: + containers: + - name: {{ .Chart.Name }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + env: + - name: DSN + valueFrom: + secretKeyRef: + name: {{ template "sentry-kubernetes.fullname" . }} + key: sentry.dsn + resources: +{{ toYaml .Values.resources | indent 10 }} + {{- if .Values.nodeSelector }} + nodeSelector: +{{ toYaml .Values.nodeSelector | indent 8 }} + {{- end }} + {{- if .Values.tolerations }} + tolerations: +{{ toYaml .Values.tolerations | indent 8 }} + {{- end }} + serviceAccountName: {{ if .Values.rbac.create }}{{ template "sentry-kubernetes.fullname" . }}{{ else }}"{{ .Values.rbac.serviceAccountName }}"{{ end }} diff --git a/incubator/sentry-kubernetes/templates/secret.yaml b/incubator/sentry-kubernetes/templates/secret.yaml new file mode 100644 index 0000000000..df3b5b6d40 --- /dev/null +++ b/incubator/sentry-kubernetes/templates/secret.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: Secret +metadata: + labels: {{ include "sentry-kubernetes.labels" . | indent 4 }} + name: {{ template "sentry-kubernetes.fullname" . }} +type: Opaque +data: + sentry.dsn: {{ .Values.sentry.dsn | b64enc | quote }} diff --git a/incubator/sentry-kubernetes/templates/serviceaccount.yaml b/incubator/sentry-kubernetes/templates/serviceaccount.yaml new file mode 100644 index 0000000000..806ac3e053 --- /dev/null +++ b/incubator/sentry-kubernetes/templates/serviceaccount.yaml @@ -0,0 +1,7 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: {{ include "sentry-kubernetes.labels" . | indent 4 }} + name: {{ template "sentry-kubernetes.serviceAccountName" . }} +{{- end }} diff --git a/incubator/sentry-kubernetes/values.yaml b/incubator/sentry-kubernetes/values.yaml new file mode 100644 index 0000000000..46c9d17e30 --- /dev/null +++ b/incubator/sentry-kubernetes/values.yaml @@ -0,0 +1,26 @@ +# Default values for sentry-kubernetes. + +sentry: + dsn: +image: + repository: getsentry/sentry-kubernetes + tag: latest + pullPolicy: Always +resources: {} + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +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: + +rbac: + # Specifies whether RBAC resources should be created + create: true