charts/devlake/values.yaml (187 lines of code) (raw):

# # 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 replicaCount: 1 imageTag: v1.0.2-beta7 # image pull secrets imagePullSecrets: [] #the common environments for all pods except grafana, grafana needs to be set in grafana section seperately commonEnvs: TZ: "UTC" 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=false rootPassword: admin # storage for mysql storage: # pvc or hostpath type: pvc # the storage class for pv, leave empty will using default class: "" size: 50Gi hostPath: /devlake/mysql/data # image for mysql image: repository: mysql tag: 8 pullPolicy: IfNotPresent # init containers for mysql if have initContainers: [] # 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: {} extraLabels: {} securityContext: {} containerSecurityContext: {} podAnnotations: {} service: type: "ClusterIP" nodePort: "" loadBalancerIP: "" extraLabels: {} # pgsql: # # if use external pgsql server, please set true # # by default using false, chart will create a single pgsql instance # useExternal: false # # the external pgsql server address # externalServer: 127.0.0.1 # # external pgsql port # externalPort: 5432 # # the username for devlake database # username: merico # # the password for devlake database # password: merico # # the database for devlake # database: lake # # storage for pgsql # storage: # # the storage class for pv, leave empty will using default # class: "" # size: 5Gi # # image for pgsql # image: # repository: postgres # tag: 14.5 # pullPolicy: IfNotPresent # # resources config for pgsql if have # resources: {} # # nodeSelector config for pgsql if have # nodeSelector: {} # # tolerations config for pgsql if have # tolerations: [] # # affinity config for pgsql if have # affinity: {} # extraLabels: {} # securityContext: {} # containerSecurityContext: {} # annotations: {} # dependency chart values grafana: enabled: true #if grafana enabled is false, then external url should be provided external: url: "" image: repository: devlake.docker.scarf.sh/apache/devlake-dashboard tag: v1.0.2-beta7 deploymentStrategy: type: Recreate adminPassword: "" grafana.ini: server: serve_from_subpath: "true" root_url: "%(protocol)s://%(domain)s/grafana" #the secret name should be as same as .Values.option.connectionSecretName envFromSecrets: - name: "devlake-mysql-auth" #keep grafana timezone same as other pods, which is set by .Values.commonEnvs.TZ env: TZ: "UTC" persistence: enabled: true size: 4Gi ingressServiceName: "" ingressServicePort: "" lake: image: repository: devlake.docker.scarf.sh/apache/devlake pullPolicy: Always # defaults to imageTag; if set, lake.image.tag will override imageTag # tag: # storage for config port: 8080 envs: API_TIMEOUT: "120s" API_RETRY: "3" API_REQUESTS_PER_HOUR: "10000" PIPELINE_MAX_PARALLEL: "1" IN_SECURE_SKIP_VERIFY: "false" LOGGING_DIR: "/app/logs" # debug, info, warn, error LOGGING_LEVEL: "info" JIRA_JQL_AUTO_FULL_REFRESH: "true" ########################## # ENABLE_SUBTASKS_BY_DEFAULT: This environment variable is used to enable or disable the execution of subtasks. # The format is as follows: plugin_name1:subtask_name1:enabled_value,plugin_name2:subtask_name2:enabled_value,plugin_name3:subtask_name3:enabled_value ########################## # ENABLE_SUBTASKS_BY_DEFAULT default value as below: # ENABLE_SUBTASKS_BY_DEFAULT: "jira:collectIssueChangelogs:true,jira:extractIssueChangelogs:true,jira:convertIssueChangelogs:true,tapd:collectBugChangelogs:true,tapd:extractBugChangelogs:true,tapd:convertBugChangelogs:true,zentao:collectBugRepoCommits:true,zentao:extractBugRepoCommits:true,zentao:convertBugRepoCommits:true,zentao:collectStoryRepoCommits:true,zentao:extractStoryRepoCommits:true,zentao:convertStoryRepoCommits:true,zentao:collectTaskRepoCommits:true,zentao:extractTaskRepoCommits:true,zentao:convertTaskRepoCommits:true" #extra envs from an existing secret extraEnvsFromSecret: "" encryptionSecret: # The name of secret which contains keys named ENCRYPTION_SECRET secretName: "" # if secretName is empty, secret should be set # you can generate the encryption secret via cmd `openssl rand -base64 2000 | tr -dc 'A-Z' | fold -w 128 | head -n 1` secret: "" autoCreateSecret: true # If hostNetwork is true, then dnsPolicy is set to ClusterFirstWithHostNet hostNetwork: false resources: {} strategy: type: Recreate nodeSelector: {} tolerations: [] affinity: {} extraLabels: {} securityContext: {} containerSecurityContext: {} podAnnotations: {} livenessProbe: httpGet: path: /ping port: 8080 scheme: HTTP failureThreshold: 5 initialDelaySeconds: 30 periodSeconds: 5 successThreshold: 1 timeoutSeconds: 5 readinessProbe: httpGet: path: /ping port: 8080 scheme: HTTP failureThreshold: 3 initialDelaySeconds: 5 periodSeconds: 5 successThreshold: 1 timeoutSeconds: 5 deployment: extraLabels: {} service: extraLabels: {} # Additional volumes to include in the Pod. Example: # # volumes: # - name: my-volume # configMap: my-config-map volumes: [] # Additional volume mounts to include in the Container. Example: # # volumeMounts: # - name: test-volume # mountPath: /opt/test_folder # subPath: test_file.yaml volumeMounts: [] ui: image: repository: devlake.docker.scarf.sh/apache/devlake-config-ui pullPolicy: Always # defaults to imageTag; if set, lake.image.tag will override imageTag # tag: resources: {} strategy: {} nodeSelector: {} tolerations: [] affinity: {} livenessProbe: httpGet: path: /health/ port: 4000 scheme: HTTP failureThreshold: 5 initialDelaySeconds: 15 periodSeconds: 5 successThreshold: 1 timeoutSeconds: 5 readinessProbe: httpGet: path: /health/ port: 4000 scheme: HTTP failureThreshold: 3 initialDelaySeconds: 5 periodSeconds: 5 successThreshold: 1 timeoutSeconds: 5 basicAuth: enabled: false user: admin password: admin autoCreateSecret: true secretName: "" extraLabels: {} podAnnotations: {} ## SecurityContext holds pod-level security attributes and common container settings. ## This defaults to non root user with uid 101 and gid 1000. *v1.PodSecurityContext false ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ securityContext: {} # fsGroup: 101 # runAsGroup: 1000 # runAsNonRoot: true # runAsUser: 101 ## K8s containers' Security Context ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container containerSecurityContext: {} # allowPrivilegeEscalation: false # capabilities: # drop: # - all deployment: extraLabels: {} service: extraLabels: {} ## Side Contaainer Configuration extraContainers: [] # - name: vault-agent # image: vault:1.6.2 # args: # - agent # - -config # - /vault/config/config.hcl # env: # - name: VAULT_ADDR # value: https://vault:8200 # - name: VAULT_SKIP_VERIFY # value: "false" # - name: VAULT_CACERT # value: /vault/tls/ca.crt # alpine image for some init containers alpine: image: repository: alpine tag: 3.16 pullPolicy: IfNotPresent service: # service type: NodePort/ClusterIP type: NodePort # node port for devlake-ui if NodePort is enabled uiPort: 32001 ingress: enabled: false enableHttps: false # Set to false if you want to use a different ingress controller useDefaultNginx: false # ingress class name, example: alb for AWS load balancer controller className: # domain name for hosting devlake, must be set if ingress is enabled hostname: localhost extraLabels: {} # annotations required for your ingress controller; see the examples below # for nginx, use the first two lines of annotations # for alb (w/ external-dns), use the last 5 (6) lines of annotations annotations: {} # kubernetes.io/ingress.class: nginx # kubernetes.io/tls-acme: "true" # # alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}' # alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-east-2:xxx:certificate/xxx-xxx-xxx # alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}, {"HTTP":80}]' # alb.ingress.kubernetes.io/scheme: internet-facing # alb.ingress.kubernetes.io/target-type: ip # external-dns.alpha.kubernetes.io/hostname: www.example.com # 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 extraPaths: [] # extraPaths: # - path: /* # pathType: ImplementationSpecific # backend: # service: # name: ssl-redirect # port: # name: use-annotation option: # database type, supported: [mysql] database: mysql # the existing k8s secret name of db connection auth. The secret name should be as same as .Values.grafana.envFromSecret connectionSecretName: "devlake-mysql-auth" autoCreateSecret: true # Define some extra resources to be created # This section is useful when you need ExternalResource or Secrets, etc. extraResources: [] # - apiVersion: v1 # kind: Secret # metadata: # name: example-secret # labels: {} # type: Opaque # stringData: # username: admin # password: mypassword