superset-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From maximebeauche...@apache.org
Subject [incubator-superset] branch master updated: Install superset in Kubernetes with helm chart (#4923)
Date Fri, 04 May 2018 00:35:41 GMT
This is an automated email from the ASF dual-hosted git repository.

maximebeauchemin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git


The following commit(s) were added to refs/heads/master by this push:
     new 976e43e  Install superset in Kubernetes with helm chart (#4923)
976e43e is described below

commit 976e43e6816e639d1c2cccf213ce054f49c0a9fa
Author: Casper CY Chiang <cychiang0823@gmail.com>
AuthorDate: Fri May 4 08:35:38 2018 +0800

    Install superset in Kubernetes with helm chart (#4923)
    
    * Add helm chart to install superset in kubernetes
    
    * set resources into unlimited
    
    * Add descriptions to Chart.yaml
    
    * add an entry in docs/installation.rst
---
 docs/installation.rst                           | 15 ++++++++
 install/helm/superset/.helmignore               | 21 +++++++++++
 install/helm/superset/Chart.yaml                |  9 +++++
 install/helm/superset/templates/NOTES.txt       | 19 ++++++++++
 install/helm/superset/templates/_helpers.tpl    | 32 ++++++++++++++++
 install/helm/superset/templates/configmap.yaml  | 11 ++++++
 install/helm/superset/templates/deployment.yaml | 50 +++++++++++++++++++++++++
 install/helm/superset/templates/ingress.yaml    | 38 +++++++++++++++++++
 install/helm/superset/templates/service.yaml    | 19 ++++++++++
 install/helm/superset/values.yaml               | 45 ++++++++++++++++++++++
 10 files changed, 259 insertions(+)

diff --git a/docs/installation.rst b/docs/installation.rst
index 06afbc6..0b776cf 100644
--- a/docs/installation.rst
+++ b/docs/installation.rst
@@ -650,3 +650,18 @@ To setup StatsD logging, it's a matter of configuring the logger in your
 
 Note that it's also possible to implement you own logger by deriving
 ``superset.stats_logger.BaseStatsLogger``.
+
+
+Install Superset with helm in Kubernetes
+--------------
+
+You can install Superset into Kubernetes with Helm <https://helm.sh/>. The chart is

+located in ``install/helm``.
+
+To install Superset into your Kubernetes:
+
+.. code-block:: bash
+
+    helm upgrade --install superset ./install/helm/superset 
+
+Note that the above command will install Superset into ``default`` namespace of your Kubernetes
cluster.
diff --git a/install/helm/superset/.helmignore b/install/helm/superset/.helmignore
new file mode 100644
index 0000000..f0c1319
--- /dev/null
+++ b/install/helm/superset/.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/install/helm/superset/Chart.yaml b/install/helm/superset/Chart.yaml
new file mode 100644
index 0000000..f140db6
--- /dev/null
+++ b/install/helm/superset/Chart.yaml
@@ -0,0 +1,9 @@
+apiVersion: v1
+appVersion: "1.0"
+description: A Helm chart for Kubernetes
+name: superset
+maintainers:
+  - name: Chuan-Yen Chiang
+    email: cychiang0823@gmail.com
+    url: https://github.com/cychiang
+version: 0.1.0
diff --git a/install/helm/superset/templates/NOTES.txt b/install/helm/superset/templates/NOTES.txt
new file mode 100644
index 0000000..4ac766a
--- /dev/null
+++ b/install/helm/superset/templates/NOTES.txt
@@ -0,0 +1,19 @@
+1. Get the application URL by running these commands:
+{{- if .Values.ingress.enabled }}
+{{- range .Values.ingress.hosts }}
+  http{{ if $.Values.ingress.tls }}s{{ end }}://{{ . }}{{ $.Values.ingress.path }}
+{{- end }}
+{{- else if contains "NodePort" .Values.service.type }}
+  export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}"
services {{ template "superset.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 "superset.fullname"
. }}'
+  export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "superset.fullname"
. }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
+  echo http://$SERVICE_IP:{{ .Values.service.port }}
+{{- else if contains "ClusterIP" .Values.service.type }}
+  export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template
"superset.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
+  echo "Visit http://127.0.0.1:8080 to use your application"
+  kubectl port-forward $POD_NAME 8080:80
+{{- end }}
diff --git a/install/helm/superset/templates/_helpers.tpl b/install/helm/superset/templates/_helpers.tpl
new file mode 100644
index 0000000..d92099b
--- /dev/null
+++ b/install/helm/superset/templates/_helpers.tpl
@@ -0,0 +1,32 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "superset.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 "superset.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 "superset.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-"
-}}
+{{- end -}}
diff --git a/install/helm/superset/templates/configmap.yaml b/install/helm/superset/templates/configmap.yaml
new file mode 100644
index 0000000..afb7ef5
--- /dev/null
+++ b/install/helm/superset/templates/configmap.yaml
@@ -0,0 +1,11 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: superset-configmap
+  labels:
+    app: {{ template "superset.name" . }}
+    chart: {{ template "superset.chart" . }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+data:
+{{ (.Files.Glob "config/*").AsConfig | indent 2 }}
diff --git a/install/helm/superset/templates/deployment.yaml b/install/helm/superset/templates/deployment.yaml
new file mode 100644
index 0000000..20d4f99
--- /dev/null
+++ b/install/helm/superset/templates/deployment.yaml
@@ -0,0 +1,50 @@
+apiVersion: apps/v1beta2
+kind: Deployment
+metadata:
+  name: {{ template "superset.fullname" . }}
+  labels:
+    app: {{ template "superset.name" . }}
+    chart: {{ template "superset.chart" . }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  replicas: {{ .Values.replicaCount }}
+  selector:
+    matchLabels:
+      app: {{ template "superset.name" . }}
+      release: {{ .Release.Name }}
+  template:
+    metadata:
+      labels:
+        app: {{ template "superset.name" . }}
+        release: {{ .Release.Name }}
+    spec:
+      containers:
+        - name: {{ .Chart.Name }}
+          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
+          imagePullPolicy: {{ .Values.image.pullPolicy }}
+          volumeMounts:
+            - name: superset-config
+              mountPath: /etc/superset/
+          ports:
+            - name: http
+              containerPort: 8088
+              protocol: TCP
+          resources:
+{{ toYaml .Values.resources | indent 12 }}
+    {{- with .Values.nodeSelector }}
+      nodeSelector:
+{{ toYaml . | indent 8 }}
+    {{- end }}
+    {{- with .Values.affinity }}
+      affinity:
+{{ toYaml . | indent 8 }}
+    {{- end }}
+    {{- with .Values.tolerations }}
+      tolerations:
+{{ toYaml . | indent 8 }}
+    {{- end }}
+      volumes:
+        - name: "superset-config"
+          configMap:
+            name: superset-configmap
diff --git a/install/helm/superset/templates/ingress.yaml b/install/helm/superset/templates/ingress.yaml
new file mode 100644
index 0000000..3d29c7d
--- /dev/null
+++ b/install/helm/superset/templates/ingress.yaml
@@ -0,0 +1,38 @@
+{{- if .Values.ingress.enabled -}}
+{{- $fullName := include "superset.fullname" . -}}
+{{- $ingressPath := .Values.ingress.path -}}
+apiVersion: extensions/v1beta1
+kind: Ingress
+metadata:
+  name: {{ $fullName }}
+  labels:
+    app: {{ template "superset.name" . }}
+    chart: {{ template "superset.chart" . }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+{{- with .Values.ingress.annotations }}
+  annotations:
+{{ toYaml . | indent 4 }}
+{{- end }}
+spec:
+{{- if .Values.ingress.tls }}
+  tls:
+  {{- range .Values.ingress.tls }}
+    - hosts:
+      {{- range .hosts }}
+        - {{ . }}
+      {{- end }}
+      secretName: {{ .secretName }}
+  {{- end }}
+{{- end }}
+  rules:
+  {{- range .Values.ingress.hosts }}
+    - host: {{ . }}
+      http:
+        paths:
+          - path: {{ $ingressPath }}
+            backend:
+              serviceName: {{ $fullName }}
+              servicePort: http
+  {{- end }}
+{{- end }}
diff --git a/install/helm/superset/templates/service.yaml b/install/helm/superset/templates/service.yaml
new file mode 100644
index 0000000..4205dcc
--- /dev/null
+++ b/install/helm/superset/templates/service.yaml
@@ -0,0 +1,19 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: {{ template "superset.fullname" . }}
+  labels:
+    app: {{ template "superset.name" . }}
+    chart: {{ template "superset.chart" . }}
+    release: {{ .Release.Name }}
+    heritage: {{ .Release.Service }}
+spec:
+  type: {{ .Values.service.type }}
+  ports:
+    - port: {{ .Values.service.port }}
+      targetPort: http
+      protocol: TCP
+      name: http
+  selector:
+    app: {{ template "superset.name" . }}
+    release: {{ .Release.Name }}
diff --git a/install/helm/superset/values.yaml b/install/helm/superset/values.yaml
new file mode 100644
index 0000000..bed20b2
--- /dev/null
+++ b/install/helm/superset/values.yaml
@@ -0,0 +1,45 @@
+# Default values for superset.
+# This is a YAML-formatted file.
+# Declare variables to be passed into your templates.
+
+replicaCount: 1
+
+image:
+  repository: amancevice/superset
+  tag: latest
+  pullPolicy: IfNotPresent
+
+service:
+  type: NodePort
+  port: 8088
+
+ingress:
+  enabled: false
+  annotations: {}
+    # kubernetes.io/ingress.class: nginx
+    # kubernetes.io/tls-acme: "true"
+  path: /
+  hosts:
+    - chart-example.local
+  tls: []
+  #  - secretName: chart-example-tls
+  #    hosts:
+  #      - chart-example.local
+
+resources: {}
+  # We usually recommend not to specify default resources and to leave this as a conscious
+  # choice for the user. This also increases chances charts run on environments with little
+  # resources, such as Minikube. If you do want to specify resources, uncomment the following
+  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
+  # limits:
+  #   cpu: 100m
+  #   memory: 128Mi
+  # requests:
+  #   cpu: 100m
+  #   memory: 128Mi
+
+nodeSelector: {}
+
+tolerations: []
+
+affinity: {}

-- 
To stop receiving notification emails like this one, please contact
maximebeauchemin@apache.org.

Mime
View raw message