You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by li...@apache.org on 2023/03/20 05:16:50 UTC
[incubator-devlake-helm-chart] branch main updated: feat: optional grafana install (#94)
This is an automated email from the ASF dual-hosted git repository.
likyh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake-helm-chart.git
The following commit(s) were added to refs/heads/main by this push:
new 50a83e2 feat: optional grafana install (#94)
50a83e2 is described below
commit 50a83e21f0c14d7172fea2555ffdc12211ea9570
Author: Ji Bin <ma...@live.com>
AuthorDate: Mon Mar 20 13:16:44 2023 +0800
feat: optional grafana install (#94)
---
HelmSetup.md | 4 ++-
charts/devlake/Chart.yaml | 4 +--
charts/devlake/templates/configmaps.yaml | 47 ++++++++++++++++++++++++++
charts/devlake/templates/deployments.yaml | 14 +++++++-
charts/devlake/templates/ingresses.yaml | 55 ++++++++++++++++++++++++++++++-
charts/devlake/templates/services.yaml | 2 ++
charts/devlake/values.yaml | 6 +++-
7 files changed, 126 insertions(+), 6 deletions(-)
diff --git a/HelmSetup.md b/HelmSetup.md
index 72ec85b..03db399 100644
--- a/HelmSetup.md
+++ b/HelmSetup.md
@@ -130,6 +130,8 @@ Some useful parameters for the chart, you could also check them in values.yaml
| mysql.image.pullPolicy | pullPolicy for mysql's image | IfNotPresent |
| grafana.image.repository | repository for grafana's image | apache/devlake-dashboard |
| grafana.image.pullPolicy | pullPolicy for grafana's image | Always |
+| grafana.useExternal | If use external grafana server | false |
+| grafana.externalUrl | external grafana server if use external | "" |
| lake.storage.class | storage class for lake's volume | "" |
| lake.storage.size | volume size for lake's data | 100Mi |
| lake.image.repository | repository for lake's image | apache/devlake |
@@ -146,7 +148,7 @@ Some useful parameters for the chart, you could also check them in values.yaml
| service.uiPort | Node port for config ui | 32001 |
| service.ingress.enabled | If enable ingress | false |
| service.ingress.enableHttps | If enable https | false |
-| service.ingress.className | Class name for ingressClass. leave empty for using default | "" |
+| service.ingress.className | Name for ingressClass. leave empty for using default | "" |
| service.ingress.hostname | The hostname/domainname for ingress | localhost |
| service.ingress.prefix | The prefix for endpoints, currently not used | / |
| service.ingress.tlsSecretName | The secret name for tls's certificate for https | "" |
diff --git a/charts/devlake/Chart.yaml b/charts/devlake/Chart.yaml
index 76ec6cc..59aa0cd 100644
--- a/charts/devlake/Chart.yaml
+++ b/charts/devlake/Chart.yaml
@@ -29,7 +29,7 @@ type: application
# Chart version
-version: 0.16.0-beta8
+version: 0.16.0-beta9
# devlake version
-appVersion: v0.16.0-beta8
+appVersion: v0.16.0-beta9
diff --git a/charts/devlake/templates/configmaps.yaml b/charts/devlake/templates/configmaps.yaml
index 3d73180..1138835 100644
--- a/charts/devlake/templates/configmaps.yaml
+++ b/charts/devlake/templates/configmaps.yaml
@@ -40,6 +40,52 @@ data:
---
apiVersion: v1
kind: ConfigMap
+metadata:
+ name: {{ include "devlake.fullname" . }}-nginx-conf
+data:
+ default.conf.tpl: |
+ server {
+ listen 4000;
+ server_name localhost;
+ ${SERVER_CONF}
+
+ location / {
+ root /usr/share/nginx/html;
+ index index.html;
+ try_files $uri /index.html;
+ }
+
+ location /api/ {
+ resolver ${DNS} valid=${DNS_VALID};
+ resolver_timeout 3s;
+ set $target "${DEVLAKE_ENDPOINT}";
+ rewrite /api/(.*) /$1 break;
+ proxy_send_timeout 10s;
+ proxy_read_timeout 10s;
+ proxy_pass http://$target;
+ }
+{{- if .Values.grafana.useExternal }}
+ location /grafana/ {
+ return 302 ${GRAFANA_ENDPOINT};
+ }
+{{- else }}
+ location /grafana/ {
+ resolver ${DNS} valid=${DNS_VALID};
+ resolver_timeout 3s;
+ set $target "${GRAFANA_ENDPOINT}";
+ rewrite /grafana/(.*) /$1 break;
+ proxy_set_header Authorization "";
+ proxy_send_timeout 10s;
+ proxy_read_timeout 10s;
+ proxy_pass http://$target;
+ }
+{{- end }}
+ }
+
+---
+{{- if not .Values.grafana.useExternal }}
+apiVersion: v1
+kind: ConfigMap
metadata:
name: {{ include "devlake.fullname" . }}-grafana-datasource
data:
@@ -71,3 +117,4 @@ data:
# postgresVersion: 1000 # support pgsql 10.0 and above
# timescaledb: false
{{- end }}
+{{- end }}
diff --git a/charts/devlake/templates/deployments.yaml b/charts/devlake/templates/deployments.yaml
index e64a226..e1b3616 100644
--- a/charts/devlake/templates/deployments.yaml
+++ b/charts/devlake/templates/deployments.yaml
@@ -16,6 +16,7 @@
#
---
+{{- if not .Values.grafana.useExternal }}
# grafana
apiVersion: apps/v1
kind: Deployment
@@ -91,7 +92,7 @@ spec:
- name: {{ include "devlake.fullname" . }}-grafana-datasource-config
configMap:
name: {{ include "devlake.fullname" . }}-grafana-datasource
-
+{{ end }}
---
# devlake-ui
apiVersion: apps/v1
@@ -124,14 +125,22 @@ spec:
- name: DEVLAKE_ENDPOINT
# TODO: remove hardcoded `cluster.local`
value: {{ include "devlake.fullname" . }}-lake.{{ .Release.Namespace }}.svc.cluster.local:8080
+{{- if .Values.grafana.useExternal }}
+ - name: GRAFANA_ENDPOINT
+ value: {{ .Values.grafana.externalUrl }}
+{{- else }}
- name: GRAFANA_ENDPOINT
value: {{ include "devlake.fullname" . }}-grafana.{{ .Release.Namespace }}.svc.cluster.local:3000
+{{- end }}
volumeMounts:
{{- if ne .Values.option.localtime "" }}
- name: {{ include "devlake.fullname" . }}-ui-localtime
mountPath: /etc/localtime
readOnly: true
{{- end }}
+ - name: {{ include "devlake.fullname" . }}-nginx-conf-config
+ mountPath: /etc/nginx/conf.d/default.conf.tpl
+ subPath: default.conf.tpl
{{- with .Values.ui.resources }}
resources:
{{- toYaml . | nindent 12 }}
@@ -155,3 +164,6 @@ spec:
path: {{ .Values.option.localtime }}
type: File
{{- end }}
+ - name: {{ include "devlake.fullname" . }}-nginx-conf-config
+ configMap:
+ name: {{ include "devlake.fullname" . }}-nginx-conf
diff --git a/charts/devlake/templates/ingresses.yaml b/charts/devlake/templates/ingresses.yaml
index eb79ed7..8406ab4 100644
--- a/charts/devlake/templates/ingresses.yaml
+++ b/charts/devlake/templates/ingresses.yaml
@@ -14,7 +14,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
----
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "devlake.fullname" . -}}
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
@@ -22,6 +21,8 @@
{{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}}
{{- end }}
{{- end }}
+
+---
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
apiVersion: networking.k8s.io/v1
{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
@@ -53,6 +54,7 @@ spec:
- host: {{ .Values.ingress.hostname | quote }}
http:
paths:
+ {{- if not .Values.grafana.useExternal }}
- path: /{{ include "devlake.grafanaEndpointPrefix" . }}(/|$)(.*)
{{- if semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion }}
pathType: Prefix
@@ -67,6 +69,7 @@ spec:
serviceName: {{ include "devlake.fullname" . }}-grafana
servicePort: 3000
{{- end }}
+ {{- end }}
- path: /{{ include "devlake.uiEndpointPrefix" . }}(/?|$)(.*)
{{- if semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion }}
pathType: Prefix
@@ -81,4 +84,54 @@ spec:
serviceName: {{ include "devlake.fullname" . }}-ui
servicePort: 4000
{{- end }}
+
+{{- if .Values.grafana.useExternal }}
+---
+{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
+apiVersion: networking.k8s.io/v1
+{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
+apiVersion: networking.k8s.io/v1beta1
+{{- else -}}
+apiVersion: extensions/v1beta1
+{{- end }}
+kind: Ingress
+metadata:
+ name: {{ $fullName }}-ext-grafana
+ labels:
+ {{- include "devlake.labels" . | nindent 4 }}
+ annotations:
+ nginx.ingress.kubernetes.io/rewrite-target: /$2
+ nginx.ingress.kubernetes.io/permanent-redirect: {{ .Values.grafana.externalUrl }}
+ {{- with .Values.ingress.annotations }}
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+spec:
+ {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
+ ingressClassName: {{ .Values.ingress.className }}
+ {{- end }}
+ {{- if .Values.ingress.enableHttps }}
+ tls:
+ - hosts:
+ - {{ .Values.ingress.hostname }}
+ secretName: {{ .Values.ingress.tlsSecretName }}
+ {{- end }}
+ rules:
+ - host: {{ .Values.ingress.hostname | quote }}
+ http:
+ paths:
+ - path: /{{ include "devlake.grafanaEndpointPrefix" . }}(/|$)(.*)
+ {{- if semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion }}
+ pathType: Prefix
+ {{- end }}
+ backend: # dummy to config-ui, actual 302 forearding for external grafana
+ {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
+ service:
+ name: {{ include "devlake.fullname" . }}-ui
+ port:
+ number: 4000
+ {{- else }}
+ serviceName: {{ include "devlake.fullname" . }}-ui
+ servicePort: 4000
+ {{- end }}
+{{- end }}
{{- end }}
diff --git a/charts/devlake/templates/services.yaml b/charts/devlake/templates/services.yaml
index 9784360..586e84e 100644
--- a/charts/devlake/templates/services.yaml
+++ b/charts/devlake/templates/services.yaml
@@ -55,6 +55,7 @@ spec:
#{{- end }}
{{- end }}
+{{- if not .Values.grafana.useExternal }}
# grafana services
---
apiVersion: v1
@@ -76,6 +77,7 @@ spec:
{{- if eq .Values.service.type "NodePort" }}
nodePort: {{ .Values.service.grafanaPort }}
{{- end }}
+{{ end }}
# devlake services
---
diff --git a/charts/devlake/values.yaml b/charts/devlake/values.yaml
index 71bc60f..e9f47a7 100644
--- a/charts/devlake/values.yaml
+++ b/charts/devlake/values.yaml
@@ -17,7 +17,7 @@
# replica count for dev
replicaCount: 1
-imageTag: v0.16.0-beta8
+imageTag: v0.16.0-beta9
mysql:
# if use external mysql server, please set true
@@ -116,6 +116,10 @@ grafana:
repository: apache/devlake-dashboard
pullPolicy: Always
+ useExternal: false
+
+ externalUrl: ''
+
resources: {}
nodeSelector: {}