You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by ab...@apache.org on 2022/10/28 12:11:27 UTC
[incubator-devlake] branch main updated: refactor(deploy): move helm part to its own repo (#3612)
This is an automated email from the ASF dual-hosted git repository.
abeizn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git
The following commit(s) were added to refs/heads/main by this push:
new a01c77a0 refactor(deploy): move helm part to its own repo (#3612)
a01c77a0 is described below
commit a01c77a0329afa3fa865d4c93ee0bb5ef95ce232
Author: Warren Chen <yi...@merico.dev>
AuthorDate: Fri Oct 28 20:11:20 2022 +0800
refactor(deploy): move helm part to its own repo (#3612)
---
.github/workflows/deploy-test.yml | 125 ------------------
.github/workflows/yaml-lint.yml | 9 --
deployment/helm/.helmignore | 23 ----
deployment/helm/Chart.yaml | 35 ------
deployment/helm/README.md | 117 -----------------
deployment/helm/templates/NOTES.txt | 28 -----
deployment/helm/templates/_helpers.tpl | 120 ------------------
deployment/helm/templates/configmaps.yaml | 31 -----
deployment/helm/templates/deployments.yaml | 130 -------------------
deployment/helm/templates/ingresses.yaml | 84 -------------
deployment/helm/templates/services.yaml | 97 --------------
deployment/helm/templates/statefulsets.yaml | 189 ----------------------------
deployment/helm/values.yaml | 162 ------------------------
13 files changed, 1150 deletions(-)
diff --git a/.github/workflows/deploy-test.yml b/.github/workflows/deploy-test.yml
deleted file mode 100644
index 3c373ae1..00000000
--- a/.github/workflows/deploy-test.yml
+++ /dev/null
@@ -1,125 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-name: Deployment Test
-on:
- push:
- tags:
- - v*
- branches:
- - main
- paths:
- - deployment/helm/**
- - .github/workflows/deploy-test.yml
- pull_request:
- paths:
- - deployment/helm/**
- - .github/workflows/deploy-test.yml
-
-jobs:
- deploy-with-helm:
- runs-on: ubuntu-latest
- strategy:
- fail-fast: false
- matrix:
- database_type: ["mysql-builtin", "mysql-external"]
- steps:
- - name: Creating kind cluster
- uses: container-tools/kind-action@v1
-
- - name: Cluster information
- run: |
- kubectl cluster-info
- kubectl get nodes
- kubectl get pods -n kube-system
- helm version
- kubectl version
- kubectl get storageclasses
-
- - name: Checkout
- uses: actions/checkout@v2
-
- # Currently needs 6mins to build all images, so maybe enabled later in scheduled jobs.
- # - name: Build container images
- # run: |
- # docker build -t kind-registry:5000/deploy-test-lake:latest .
- # docker build -t kind-registry:5000/deploy-test-grafana:latest grafana
- # docker build -t kind-registry:5000/deploy-test-ui:latest config-ui
- # docker push kind-registry:5000/deploy-test-lake:latest
- # docker push kind-registry:5000/deploy-test-grafana:latest
- # docker push kind-registry:5000/deploy-test-ui:latest
-
- - name: Helm install devlake
- if: matrix.database_type == 'mysql-external'
- run: |
- helm repo add bitnami https://charts.bitnami.com/bitnami
- helm install mysql bitnami/mysql --set auth.rootPassword=admin --set auth.database=lake --set auth.username=merico --set auth.password=merico
- # external mysql at service: mysql
- helm install --wait --timeout 300s deploy-test deployment/helm \
- --set service.uiPort=30000 \
- --set mysql.useExternal=true \
- --set mysql.externalServer=mysql \
- --set option.localtime=""
- kubectl get pods -o wide
- kubectl get services -o wide
-
- - name: Helm install devlake
- if: matrix.database_type == 'mysql-builtin'
- run: |
- export NODE_IP=$(kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}")
- echo Node IP: ${NODE_IP}
- helm install --wait --timeout 300s deploy-test deployment/helm \
- --set service.uiPort=30000 \
- --set mysql.image.tag=8-debian \
- --set option.localtime=""
- kubectl get pods -o wide
- kubectl get services -o wide
-
- # TODO: using some e2e test code to replace it
- - name: Curl with endpoints
- run: |
- export NODE_IP=$(kubectl get nodes --namespace default -o jsonpath="{.items[0].status.addresses[0].address}")
- failed=0
- for retry in {1..10} ; do
- failed=0
- # home
- curl --fail http://${NODE_IP}:30000 || failed=1
- # API for devlake
- curl --fail http://${NODE_IP}:30000/api/blueprints || failed=1
- # API for grafana
- curl --fail http://${NODE_IP}:30000/grafana/api/health || failed=1
- if [ $failed -eq 0 ] ; then
- break
- else
- sleep 3
- fi
- done
- if [ $failed -ne 0 ] ; then
- echo 'Test apis failed, please check logs from the PODS'
- exit 1
- fi
-
- - name: Show logs for pods
- if: ${{ always() }}
- run: |
- for pod in $(kubectl get pods -o jsonpath='{.items[*].metadata.name}') ; do
- echo describe for $pod
- kubectl describe pod $pod
- echo logs for $pod
- kubectl logs $pod || echo ""
- done
-
diff --git a/.github/workflows/yaml-lint.yml b/.github/workflows/yaml-lint.yml
index 3dae3f89..6c9dde50 100644
--- a/.github/workflows/yaml-lint.yml
+++ b/.github/workflows/yaml-lint.yml
@@ -22,15 +22,6 @@ on:
- main
pull_request:
jobs:
- helm-lint:
- name: lint for helm chart
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- - name: install latest helm
- run: curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
- - name: lint helm chart
- run: helm lint deployment/helm --strict
yaml-lint:
name: lint for yamls
runs-on: ubuntu-latest
diff --git a/deployment/helm/.helmignore b/deployment/helm/.helmignore
deleted file mode 100644
index 0e8a0eb3..00000000
--- a/deployment/helm/.helmignore
+++ /dev/null
@@ -1,23 +0,0 @@
-# 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/
diff --git a/deployment/helm/Chart.yaml b/deployment/helm/Chart.yaml
deleted file mode 100644
index fb13710e..00000000
--- a/deployment/helm/Chart.yaml
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-apiVersion: v2
-name: devlake
-description: Apache DevLake is an open-source dev data platform that ingests, analyzes, and visualizes the fragmented data from DevOps tools to distill insights for engineering productivity.
-home: https://devlake.apache.org/
-icon: https://devlake.apache.org/img/logo.svg
-sources:
- - https://github.com/apache/incubator-devlake
- - https://github.com/apache/incubator-devlake-website
-keywords:
- - devlake
-
-type: application
-
-
-# Chart version
-version: 0.1.0
-
-# devlake version
-appVersion: "0.11.0"
diff --git a/deployment/helm/README.md b/deployment/helm/README.md
deleted file mode 100644
index 8644b80a..00000000
--- a/deployment/helm/README.md
+++ /dev/null
@@ -1,117 +0,0 @@
-# Deploy devlake with helm
-
-## Prerequisites
-
-- Helm >= 3.6.0
-- Kubernetes >= 1.19.0
-
-
-## Quick Install
-
-clone the code
-```
-helm install devlake deployment/helm
-```
-
-And visit your devlake Config-UI from the nodePort (32001 by default) and Grafana Dashboard from the nodePort ( 32002 by default.)
-
-http://YOUR-NODE-IP:32001 for Config-UI
-http://YOUR-NODE-IP:32002 for Grafana Dashboard
-
-Note : You must provide the connection to the port through the Inbound rules of the cluster. You may found it in the cluster security group or the cluster firewall.
-
-
-## Some example deployments
-
-### Deploy with NodePort
-
-Conditions:
- - IP Address of Kubernetes node: 192.168.0.6
- - Want to visit devlake with port 30000.
-
-```
-helm install devlake . --set service.uiPort=30000
-```
-
-After deployed, visit devlake: http://192.168.0.6:30000
-
-### Deploy with Ingress
-
-Conditions:
- - I have already configured default ingress for the Kubernetes cluster
- - I want to use http://devlake.example.com for visiting devlake
-
-```
-helm install devlake . --set "ingress.enabled=true,ingress.hostname=devlake.example.com"
-```
-
-After deployed, visit devlake: http://devlake.example.com, and grafana at http://devlake.example.com/grafana
-
-### Deploy with Ingress (Https)
-
-Conditions:
- - I have already configured ingress(class: nginx) for the Kubernetes cluster, and the https using 8443 port.
- - I want to use https://devlake-0.example.com:8443 for visiting devlake.
- - The https certificates are generated by letsencrypt.org, and the certificate and key files: `cert.pem` and `key.pem`
-
-First, create the secret:
-```
-kubectl create secret tls ssl-certificate --cert cert.pem --key secret.pem
-```
-
-Then, deploy the devlake:
-```
-helm install devlake . \
- --set "ingress.enabled=true,ingress.enableHttps=true,ingress.hostname=devlake-0.example.com" \
- --set "ingress.className=nginx,ingress.httpsPort=8443" \
- --set "ingress.tlsSecretName=ssl-certificate"
-```
-
-After deployed, visit devlake: https://devlake-0.example.com:8443, and grafana at https://devlake-0.example.com:8443/grafana
-
-
-## Parameters
-
-Some useful parameters for the chart, you could also check them in values.yaml
-
-| Parameter | Description | Default |
-|-----------|-------------|---------|
-| replicaCount | Replica Count for devlake, currently not used | 1 |
-| mysql.useExternal | If use external mysql server, set true | false |
-| mysql.externalServer | External mysql server address | 127.0.0.1 |
-| mysql.externalPort | External mysql server port | 3306 |
-| mysql.username | username for mysql | merico |
-| mysql.password | password for mysql | merico |
-| mysql.database | database for mysql | lake |
-| mysql.rootPassword | root password for mysql | admin |
-| mysql.storage.class | storage class for mysql's volume | "" |
-| mysql.storage.size | volume size for mysql's data | 5Gi |
-| mysql.image.repository | repository for mysql's image | mysql |
-| mysql.image.tag | image tag for mysql's image | 8.0.26 |
-| mysql.image.pullPolicy | pullPolicy for mysql's image | IfNotPresent |
-| grafana.image.repository | repository for grafana's image | mericodev/grafana |
-| grafana.image.tag | image tag for grafana's image | latest |
-| grafana.image.pullPolicy | pullPolicy for grafana's image | Always |
-| 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 | mericodev/lake |
-| lake.image.tag | image tag for lake's image | latest |
-| lake.image.pullPolicy | pullPolicy for lake's image | Always |
-| ui.image.repository | repository for ui's image | mericodev/config-ui |
-| ui.image.tag | image tag for ui's image | latest |
-| ui.image.pullPolicy | pullPolicy for ui's image | Always |
-| ui.basicAuth.enabled | If the basic auth in ui is enabled | false |
-| ui.basicAuth.user | The user name for the basic auth | "admin" |
-| ui.basicAuth.password | The password for the basic auth | "admin" |
-| service.type | Service type for exposed service | NodePort |
-| service.uiPort | Service port for config ui | 32001 |
-| service.ingress.enabled | If enable ingress | false |
-| service.ingress.enableHttps | If enable https | false |
-| service.ingress.className | The class name for ingressClass. If leave empty, the default IngressClass will be used | "" |
-| service.ingress.hostname | The hostname/domainname for ingress | localhost |
-| service.ingress.prefix | The prefix for endpoints, currently not supported due to devlake's implementation | / |
-| service.ingress.tlsSecretName | The secret name for tls's certificate, required when https enabled | "" |
-| service.ingress.httpPort | The http port for ingress | 80 |
-| service.ingress.httpsPort | The https port for ingress | 443 |
-| option.localtime | The hostpath for mount as /etc/localtime | /etc/localtime |
-
diff --git a/deployment/helm/templates/NOTES.txt b/deployment/helm/templates/NOTES.txt
deleted file mode 100644
index bcea5dd3..00000000
--- a/deployment/helm/templates/NOTES.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-Welcome to use devlake.
-
-{{- if .Values.ingress.enabled }}
-Now please visit:
- {{ include "devlake.uiEndpoint" . }}
-{{- else if contains "NodePort" .Values.service.type }}
-Now please get the URL by running these commands:
- export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "devlake.fullname" . }}-ui)
- export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
- echo http://$NODE_IP:$NODE_PORT
-{{- end }}
\ No newline at end of file
diff --git a/deployment/helm/templates/_helpers.tpl b/deployment/helm/templates/_helpers.tpl
deleted file mode 100644
index e7866422..00000000
--- a/deployment/helm/templates/_helpers.tpl
+++ /dev/null
@@ -1,120 +0,0 @@
-{{/*
-Expand the name of the chart.
-*/}}
-{{- define "devlake.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 "devlake.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 "devlake.chart" -}}
-{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
-{{- end }}
-
-{{/*
-Common labels
-*/}}
-{{- define "devlake.labels" -}}
-helm.sh/chart: {{ include "devlake.chart" . }}
-{{ include "devlake.selectorLabels" . }}
-{{- if .Chart.AppVersion }}
-app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
-{{- end }}
-app.kubernetes.io/managed-by: {{ .Release.Service }}
-{{- end }}
-
-{{/*
-Selector labels
-*/}}
-{{- define "devlake.selectorLabels" -}}
-app.kubernetes.io/name: {{ include "devlake.name" . }}
-app.kubernetes.io/instance: {{ .Release.Name }}
-{{- end }}
-
-{{/*
-Create the name of the service account to use
-*/}}
-{{- define "devlake.serviceAccountName" -}}
-{{- if .Values.serviceAccount.create }}
-{{- default (include "devlake.fullname" .) .Values.serviceAccount.name }}
-{{- else }}
-{{- default "default" .Values.serviceAccount.name }}
-{{- end }}
-{{- end }}
-
-
-{{/*
-The ui endpoint prefix
-*/}}
-{{- define "devlake.grafanaEndpointPrefix" -}}
-{{- print .Values.ingress.prefix "/grafana" | replace "//" "/" | trimAll "/" -}}
-{{- end }}
-
-{{/*
-The ui endpoint prefix
-*/}}
-{{- define "devlake.uiEndpointPrefix" -}}
-{{- print .Values.ingress.prefix "/" | replace "//" "/" | trimAll "/" -}}
-{{- end }}
-
-{{/*
-The ui endpoint
-*/}}
-{{- define "devlake.uiEndpoint" -}}
-{{- if .Values.ingress.enabled }}
-{{- $uiPortString := "" }}
-{{- if .Values.ingress.enableHttps }}
-{{- if ne 443 ( .Values.ingress.httpsPort | int) }}
-{{- $uiPortString = printf ":%d" ( .Values.ingress.httpsPort | int) }}
-{{- end }}
-{{- printf "https://%s%s/%s" .Values.ingress.hostname $uiPortString (include "devlake.uiEndpointPrefix" .) }}
-{{- else }}
-{{- if ne 80 ( .Values.ingress.httpPort | int) }}
-{{- $uiPortString = printf ":%d" ( .Values.ingress.httpPort | int) }}
-{{- end }}
-{{- printf "http://%s%s/%s" .Values.ingress.hostname $uiPortString (include "devlake.uiEndpointPrefix" .) }}
-{{- end }}
-{{- end }}
-{{- end }}
-
-{{/*
-The mysql server
-*/}}
-{{- define "mysql.server" -}}
-{{- if .Values.mysql.useExternal }}
-{{- .Values.mysql.externalServer }}
-{{- else }}
-{{- print (include "devlake.fullname" . ) "-mysql" }}
-{{- end }}
-{{- end }}
-
-
-{{/*
-The mysql port
-*/}}
-{{- define "mysql.port" -}}
-{{- if .Values.mysql.useExternal }}
-{{- .Values.mysql.externalPort }}
-{{- else }}
-{{- 3306 }}
-{{- end }}
-{{- end }}
diff --git a/deployment/helm/templates/configmaps.yaml b/deployment/helm/templates/configmaps.yaml
deleted file mode 100644
index 53d20c76..00000000
--- a/deployment/helm/templates/configmaps.yaml
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
----
-apiVersion: v1
-kind: ConfigMap
-metadata:
- name: {{ include "devlake.fullname" . }}-config
-data:
- MYSQL_USER: "{{ .Values.mysql.username }}"
- MYSQL_PASSWORD: "{{ .Values.mysql.password }}"
- MYSQL_DATABASE: "{{ .Values.mysql.database }}"
- MYSQL_ROOT_PASSWORD: "{{ .Values.mysql.rootPassword }}"
- LOGGING_DIR: "{{ .Values.lake.loggingDir }}"
-{{- if .Values.ui.basicAuth.enabled }}
- ADMIN_USER: "{{ .Values.ui.basicAuth.user }}"
- ADMIN_PASS: "{{ .Values.ui.basicAuth.password }}"
-{{- end }}
diff --git a/deployment/helm/templates/deployments.yaml b/deployment/helm/templates/deployments.yaml
deleted file mode 100644
index 576a907b..00000000
--- a/deployment/helm/templates/deployments.yaml
+++ /dev/null
@@ -1,130 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
----
-# grafana
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: {{ include "devlake.fullname" . }}-grafana
- labels:
- {{- include "devlake.labels" . | nindent 4 }}
-spec:
- replicas: 1
- selector:
- matchLabels:
- {{- include "devlake.selectorLabels" . | nindent 6 }}
- template:
- metadata:
- labels:
- {{- include "devlake.selectorLabels" . | nindent 8 }}
- devlakeComponent: grafana
- spec:
- initContainers:
- - name: waiting-mysql-ready
- image: "{{ .Values.alpine.image.repository }}:{{ .Values.alpine.image.tag }}"
- imagePullPolicy: {{ .Values.alpine.image.pullPolicy }}
- command:
- - 'sh'
- - '-c'
- - |
- until nc -z -w 2 {{ include "mysql.server" . }} {{ include "mysql.port" . }} ; do
- echo wait for mysql ready ...
- sleep 2
- done
- echo mysql is ready
- containers:
- - name: grafana
- image: "{{ .Values.grafana.image.repository }}:{{ .Values.grafana.image.tag }}"
- imagePullPolicy: {{ .Values.grafana.image.pullPolicy }}
- ports:
- - containerPort: 3000
- livenessProbe:
- httpGet:
- path: /api/health
- port: 3000
- initialDelaySeconds: 30
- timeoutSeconds: 30
- volumeMounts:
- {{- if ne .Values.option.localtime "" }}
- - name: {{ include "devlake.fullname" . }}-grafana-localtime
- mountPath: /etc/localtime
- readOnly: true
- {{- end }}
- envFrom:
- - configMapRef:
- name: {{ include "devlake.fullname" . }}-config
- env:
- - name: GF_SERVER_ROOT_URL
- value: "%(protocol)s://%(domain)s:%(http_port)s/grafana/"
- - name: MYSQL_URL
- value: {{ include "mysql.server" . }}:{{ include "mysql.port" . }}
- volumes:
- {{- if ne .Values.option.localtime "" }}
- - name: {{ include "devlake.fullname" . }}-grafana-localtime
- hostPath:
- path: {{ .Values.option.localtime }}
- type: File
- {{- end }}
-
----
-# devlake-ui
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: {{ include "devlake.fullname" . }}-ui
- labels:
- {{- include "devlake.labels" . | nindent 4 }}
-spec:
- replicas: 1
- selector:
- matchLabels:
- {{- include "devlake.selectorLabels" . | nindent 6 }}
- template:
- metadata:
- labels:
- {{- include "devlake.selectorLabels" . | nindent 8 }}
- devlakeComponent: ui
- spec:
- containers:
- - name: config-ui
- image: "{{ .Values.ui.image.repository }}:{{ .Values.ui.image.tag }}"
- imagePullPolicy: {{ .Values.ui.image.pullPolicy }}
- ports:
- - containerPort: 4000
- envFrom:
- - configMapRef:
- name: {{ include "devlake.fullname" . }}-config
- env:
- - name: DEVLAKE_ENDPOINT
- # TODO: remove hardcoded `cluster.local`
- value: {{ include "devlake.fullname" . }}-lake.{{ .Release.Namespace }}.svc.cluster.local:8080
- - name: GRAFANA_ENDPOINT
- value: {{ include "devlake.fullname" . }}-grafana.{{ .Release.Namespace }}.svc.cluster.local:3000
- volumeMounts:
- {{- if ne .Values.option.localtime "" }}
- - name: {{ include "devlake.fullname" . }}-ui-localtime
- mountPath: /etc/localtime
- readOnly: true
- {{- end }}
- volumes:
- {{- if ne .Values.option.localtime "" }}
- - name: {{ include "devlake.fullname" . }}-ui-localtime
- hostPath:
- path: {{ .Values.option.localtime }}
- type: File
- {{- end }}
diff --git a/deployment/helm/templates/ingresses.yaml b/deployment/helm/templates/ingresses.yaml
deleted file mode 100644
index 092151dd..00000000
--- a/deployment/helm/templates/ingresses.yaml
+++ /dev/null
@@ -1,84 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# 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)) }}
- {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
- {{- $_ := 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 -}}
-apiVersion: networking.k8s.io/v1beta1
-{{- else -}}
-apiVersion: extensions/v1beta1
-{{- end }}
-kind: Ingress
-metadata:
- name: {{ $fullName }}
- labels:
- {{- include "devlake.labels" . | nindent 4 }}
- annotations:
- nginx.ingress.kubernetes.io/rewrite-target: /$2
- {{- 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:
- {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
- service:
- name: {{ include "devlake.fullname" . }}-grafana
- port:
- number: 3000
- {{- else }}
- serviceName: {{ include "devlake.fullname" . }}-grafana
- servicePort: 3000
- {{- end }}
- - path: /{{ include "devlake.uiEndpointPrefix" . }}(/?|$)(.*)
- {{- if semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion }}
- pathType: Prefix
- {{- end }}
- backend:
- {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
- service:
- name: {{ include "devlake.fullname" . }}-ui
- port:
- number: {{ .Values.service.uiPort }}
- {{- else }}
- serviceName: {{ include "devlake.fullname" . }}-ui
- servicePort: {{ .Values.service.uiPort }}
- {{- end }}
-{{- end }}
diff --git a/deployment/helm/templates/services.yaml b/deployment/helm/templates/services.yaml
deleted file mode 100644
index 164d61af..00000000
--- a/deployment/helm/templates/services.yaml
+++ /dev/null
@@ -1,97 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# mysql services
----
-{{- if not .Values.mysql.useExternal }}
-apiVersion: v1
-kind: Service
-metadata:
- name: {{ include "devlake.fullname" . }}-mysql
- labels:
- {{- include "devlake.labels" . | nindent 4 }}
-spec:
- selector:
- {{- include "devlake.selectorLabels" . | nindent 4 }}
- devlakeComponent: mysql
- ports:
- - protocol: TCP
- name: mysql
- port: 3306
- targetPort: 3306
-{{- end }}
-
-# grafana services
----
-apiVersion: v1
-kind: Service
-metadata:
- name: {{ include "devlake.fullname" . }}-grafana
- labels:
- {{- include "devlake.labels" . | nindent 4 }}
-spec:
- type: {{ .Values.service.type}}
- selector:
- {{- include "devlake.selectorLabels" . | nindent 4 }}
- devlakeComponent: grafana
- ports:
- - protocol: TCP
- name: grafana
- port: 3000
- targetPort: 3000
- {{- if eq .Values.service.type "NodePort" }}
- nodePort: {{ .Values.service.grafanaPort }}
- {{- end }}
-
-# devlake services
----
-apiVersion: v1
-kind: Service
-metadata:
- name: {{ include "devlake.fullname" . }}-lake
- labels:
- {{- include "devlake.labels" . | nindent 4 }}
-spec:
- selector:
- {{- include "devlake.selectorLabels" . | nindent 4 }}
- devlakeComponent: lake
- ports:
- - protocol: TCP
- name: devlake
- port: 8080
- targetPort: 8080
-
----
-# ui
-apiVersion: v1
-kind: Service
-metadata:
- name: {{ include "devlake.fullname" . }}-ui
- labels:
- {{- include "devlake.labels" . | nindent 4 }}
-spec:
- type: {{ .Values.service.type }}
- selector:
- {{- include "devlake.selectorLabels" . | nindent 4 }}
- devlakeComponent: ui
- ports:
- - protocol: TCP
- name: ui
- port: {{ .Values.service.uiPort }}
- targetPort: 4000
- {{- if eq .Values.service.type "NodePort" }}
- nodePort: {{ .Values.service.uiPort }}
- {{- end }}
diff --git a/deployment/helm/templates/statefulsets.yaml b/deployment/helm/templates/statefulsets.yaml
deleted file mode 100644
index ee4023c3..00000000
--- a/deployment/helm/templates/statefulsets.yaml
+++ /dev/null
@@ -1,189 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
----
-# mysql statefulset
-{{- if not .Values.mysql.useExternal }}
-apiVersion: apps/v1
-kind: StatefulSet
-metadata:
- name: {{ include "devlake.fullname" . }}-mysql
- labels:
- {{- include "devlake.labels" . | nindent 4 }}
-spec:
- replicas: 1
- serviceName: {{ include "devlake.fullname" . }}-mysql
- selector:
- matchLabels:
- {{- include "devlake.selectorLabels" . | nindent 6 }}
- template:
- metadata:
- labels:
- {{- include "devlake.selectorLabels" . | nindent 8 }}
- devlakeComponent: mysql
- spec:
- containers:
- - name: mysql
- image: "{{ .Values.mysql.image.repository }}:{{ .Values.mysql.image.tag }}"
- imagePullPolicy: {{ .Values.mysql.image.pullPolicy }}
- ports:
- - name: mysql
- containerPort: 3306
- protocol: TCP
- livenessProbe:
- exec:
- command:
- - "sh"
- - "-c"
- - "mysqladmin ping -u root -p{{ .Values.mysql.rootPassword }}"
- initialDelaySeconds: 60
- timeoutSeconds: 30
- readinessProbe:
- exec:
- command:
- - "sh"
- - "-c"
- - "mysqladmin ping -u root -p{{ .Values.mysql.rootPassword }}"
- initialDelaySeconds: 5
- timeoutSeconds: 10
- {{- with .Values.mysql.resources }}
- resources:
- {{- toYaml . | nindent 12 }}
- {{- end }}
- envFrom:
- - configMapRef:
- name: {{ include "devlake.fullname" . }}-config
- volumeMounts:
- - mountPath: /var/lib/mysql
- name: {{ include "devlake.fullname" . }}-mysql-data
- {{- if ne .Values.option.localtime "" }}
- - name: {{ include "devlake.fullname" . }}-mysql-localtime
- mountPath: /etc/localtime
- readOnly: true
- {{- end }}
- {{- with .Values.mysql.nodeSelector }}
- nodeSelector:
- {{- toYaml . | nindent 8 }}
- {{- end }}
- {{- with .Values.mysql.affinity }}
- affinity:
- {{- toYaml . | nindent 8 }}
- {{- end }}
- {{- with .Values.mysql.tolerations }}
- tolerations:
- {{- toYaml . | nindent 8 }}
- {{- end }}
- volumes:
- {{- if ne .Values.option.localtime "" }}
- - name: {{ include "devlake.fullname" . }}-mysql-localtime
- hostPath:
- path: {{ .Values.option.localtime }}
- type: File
- {{- end }}
- volumeClaimTemplates:
- - metadata:
- name: {{ include "devlake.fullname" . }}-mysql-data
- spec:
- accessModes: ["ReadWriteOnce"]
- {{- with .Values.mysql.storage.class }}
- storageClassName: "{{ . }}"
- {{- end }}
- resources:
- requests:
- storage: "{{ .Values.mysql.storage.size }}"
-{{- end }}
-
----
-# devlake
-apiVersion: apps/v1
-kind: StatefulSet
-metadata:
- name: {{ include "devlake.fullname" . }}-lake
- labels:
- {{- include "devlake.labels" . | nindent 4 }}
-spec:
- replicas: 1
- serviceName: {{ include "devlake.fullname" . }}-lake
- selector:
- matchLabels:
- {{- include "devlake.selectorLabels" . | nindent 6 }}
- template:
- metadata:
- labels:
- {{- include "devlake.selectorLabels" . | nindent 8 }}
- devlakeComponent: lake
- spec:
- initContainers:
- - name: waiting-mysql-ready
- image: "{{ .Values.alpine.image.repository }}:{{ .Values.alpine.image.tag }}"
- imagePullPolicy: {{ .Values.alpine.image.pullPolicy }}
- command:
- - 'sh'
- - '-c'
- - |
- until nc -z -w 2 {{ include "mysql.server" . }} {{ include "mysql.port" . }} ; do
- echo wait for mysql ready ..
- sleep 2
- done
- echo mysql is ready
- containers:
- - name: lake
- image: "{{ .Values.lake.image.repository }}:{{ .Values.lake.image.tag }}"
- imagePullPolicy: {{ .Values.lake.image.pullPolicy }}
- ports:
- - containerPort: 8080
- livenessProbe:
- httpGet:
- path: /blueprints
- port: 8080
- scheme: HTTP
- initialDelaySeconds: 60
- timeoutSeconds: 30
- envFrom:
- - configMapRef:
- name: {{ include "devlake.fullname" . }}-config
- env:
- - name: DB_URL
- # yamllint disable-line rule:line-length
- value: mysql://{{ .Values.mysql.username }}:{{ .Values.mysql.password }}@{{ include "mysql.server" . }}:{{ include "mysql.port" . }}/{{ .Values.mysql.database }}?charset=utf8mb4&parseTime=True
- - name: ENV_PATH
- value: /app/config/.env
- volumeMounts:
- - mountPath: /app/config
- name: {{ include "devlake.fullname" . }}-lake-config
- {{- if ne .Values.option.localtime "" }}
- - name: {{ include "devlake.fullname" . }}-lake-localtime
- mountPath: /etc/localtime
- readOnly: true
- {{- end }}
- volumes:
- {{- if ne .Values.option.localtime "" }}
- - name: {{ include "devlake.fullname" . }}-lake-localtime
- hostPath:
- path: {{ .Values.option.localtime }}
- type: File
- {{- end }}
- volumeClaimTemplates:
- - metadata:
- name: {{ include "devlake.fullname" . }}-lake-config
- spec:
- accessModes: ["ReadWriteOnce"]
- {{- with .Values.lake.storage.class }}
- storageClassName: "{{ . }}"
- {{- end }}
- resources:
- requests:
- storage: "{{ .Values.lake.storage.size }}"
diff --git a/deployment/helm/values.yaml b/deployment/helm/values.yaml
deleted file mode 100644
index ed4cbc0a..00000000
--- a/deployment/helm/values.yaml
+++ /dev/null
@@ -1,162 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# replica count for dev
-replicaCount: 1
-
-mysql:
- # if use external mysql server, please set true
- # by default using false, chart will create a single mysql instance
- useExternal: false
-
- # the external mysql server address
- externalServer: 127.0.0.1
-
- # external mysql port
- externalPort: 3306
-
- # the username for devlake database
- username: merico
-
- # the password for devlake database
- password: merico
-
- # the database for devlake
- database: lake
-
- # root password for mysql, only used when use_external=true
- rootPassword: admin
-
- # storage for mysql
- storage:
- # the storage class for pv, leave empty will using default
- class: ""
- size: 5Gi
-
- # image for mysql
- # mysql:8 for latest version with mysql-8, which avaliable for amd64/arm64v8 arch.
- image:
- repository: mysql
- tag: 8
- pullPolicy: Always
-
- # resources config for mysql if have
- resources: {}
-
- # nodeSelector config for mysql if have
- nodeSelector: {}
-
- # tolerations config for mysql if have
- tolerations: []
-
- # affinity config for mysql if have
- affinity: {}
-
-
-grafana:
- # image for grafana
- image:
- repository: apache/devlake-dashboard
- tag: latest
- pullPolicy: Always
-
- resources: {}
-
- nodeSelector: {}
-
- tolerations: []
-
- affinity: {}
-
-
-lake:
- image:
- repository: apache/devlake
- tag: latest
- pullPolicy: Always
- # storage for config
- storage:
- # the storage class for pv, leave empty will using default
- class: ""
- size: 100Mi
-
- resources: {}
-
- nodeSelector: {}
-
- tolerations: []
-
- affinity: {}
-
- loggingDir: "/app/logs"
-
-ui:
- image:
- repository: apache/devlake-config-ui
- tag: latest
- pullPolicy: Always
-
- resources: {}
-
- nodeSelector: {}
-
- tolerations: []
-
- affinity: {}
-
- basicAuth:
- enabled: false
- user: admin
- password: admin
-
-# alpine image for some init containers
-alpine:
- image:
- repository: alpine
- tag: 3.16
- pullPolicy: IfNotPresent
-
-service:
- # service type: NodePort/ClusterIP
- type: NodePort
- # service port for devlake-ui
- uiPort: 32001
- grafanaPort : 32002
-
-ingress:
- enabled: false
- enableHttps: false
- className: ""
- annotations: {}
- # kubernetes.io/ingress.class: nginx
- # kubernetes.io/tls-acme: "true"
- # domain name for hosting devlake
- hostname: localhost
- # url prefix, not works right now, keep "/"
- prefix: /
- # if using https provides the certificates secret name
- tlsSecretName: ""
- # ingress http port
- httpPort: 80
- # ingress https port
- httpsPort: 443
-
-
-option:
- # localtime zone info from host path.
- localtime: /etc/localtime
-