diff --git a/charts/incubator/youtrack/.helmignore b/charts/incubator/youtrack/.helmignore new file mode 100644 index 00000000000..77ca5567b26 --- /dev/null +++ b/charts/incubator/youtrack/.helmignore @@ -0,0 +1,30 @@ +# 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 +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl +# docs folder +/docs +# icon +icon.png diff --git a/charts/incubator/youtrack/Chart.yaml b/charts/incubator/youtrack/Chart.yaml new file mode 100644 index 00000000000..8ea61a579fe --- /dev/null +++ b/charts/incubator/youtrack/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: latest +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 11.1.2 +description: YouTrack is a project management tool that can be adapted to your processes to help you deliver great products. +home: https://truecharts.org/charts/incubator/youtrack +icon: https://truecharts.org/img/hotlink-ok/chart-icons/youtrack.png +keywords: + - youtrack + - ProjectManagement +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: youtrack +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/youtrack + - https://www.jetbrains.com/youtrack/ + - https://hub.docker.com/r/jetbrains/youtrack/ +version: 0.0.1 +annotations: + truecharts.org/SCALE-support: "true" + truecharts.org/catagories: | + - ProjectManagement diff --git a/charts/incubator/youtrack/README.md b/charts/incubator/youtrack/README.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/charts/incubator/youtrack/docs/default_credentials.md b/charts/incubator/youtrack/docs/default_credentials.md new file mode 100644 index 00000000000..cab82f9a281 --- /dev/null +++ b/charts/incubator/youtrack/docs/default_credentials.md @@ -0,0 +1,4 @@ +# Default Credentials + +- Username: `admin` +- Password: `admin` diff --git a/charts/incubator/youtrack/icon.png b/charts/incubator/youtrack/icon.png new file mode 100644 index 00000000000..ff546ba4450 Binary files /dev/null and b/charts/incubator/youtrack/icon.png differ diff --git a/charts/incubator/youtrack/questions.yaml b/charts/incubator/youtrack/questions.yaml new file mode 100644 index 00000000000..a57d0aa1bf9 --- /dev/null +++ b/charts/incubator/youtrack/questions.yaml @@ -0,0 +1,297 @@ +# Include{groups} +portals: + open: +# Include{portalLink} +questions: +# Include{global} +# Include{controller} +# Include{replicas} +# Include{replica1} +# Include{controllerExpertExtraArgs} + - variable: youtrack + group: App Configuration + label: YouTrack Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: baseURL + label: Base URL + description: The URL that end users request to access your YouTrack installation. For example, https://youtrack.mydomain.com or http://YOUR.SCALE.SERVER.IP:18080 + schema: + type: string + required: true + default: "" + - variable: webHooksBaseUrl + label: Webhook Base URL + description: Sets an alternative base URL for your YouTrack server when sending requests to create webhooks in external services. + schema: + type: string + default: "" + - variable: defaultPage + label: Default Page + description: Sets the default start page for your YouTrack server. Enter a relative path to your base URL with a leading slash. + schema: + type: string + required: true + default: /dashboard + - variable: support_email + label: Support Email + description: Specifies the email address that is used as the mailto address for the Contact support link on the error screen. + schema: + type: string + default: youtrack-feedback@jetbrains.com + - variable: hubURL + label: Hub URL + description: Stores the web address of an external Hub service, when used. + schema: + type: string + default: "" + - variable: authThrottlingEnabled + label: Auth Throttling Enabled + description: Sets the status of the throttling feature for the Hub authentication module. When true, authentication throttling is enabled. + schema: + type: boolean + default: false + - variable: disableCheckForUpdate + label: Disable Check For Update + description: Enables and disables checking for software updates on startup. When set to true, checking for software updates is disabled. + schema: + type: boolean + default: false + - variable: minPrefixQueryLength + label: Min Prefix Query Length + description: | + Sets the minimum length of a prefix query string to a set number of characters. + If prefix queries and wildcard strings do not return all matching word forms + in a search query, set this value to 2. Setting this system property affects the + performance of your YouTrack server. The lower the value, the slower + the performance of your server. + schema: + type: int + required: true + default: 3 + - variable: mailLimit + label: Mail Limit + description: | + Sets a daily limit for the number of email messages that are sent with the + issue.sendMail() method in workflows. When set to 0, there is no limit. + schema: + type: int + required: true + default: 0 + - variable: eventMergeTimeout + label: Event Merge Timeout + description: | + Sets the amount of time YouTrack waits to compile changes that are applied to an issue + as a digest before sending an email notification, in milliseconds. Reducing this value + increases the rate at which YouTrack analyzes notifications and can have a negative + impact on general server performance. Increasing this value from the default (one minute) + can reduce the overall number of notification emails that are sent by YouTrack. + schema: + type: int + required: true + default: 0 + - variable: requestHeaderBufferSize + label: Request Header Buffer Size + description: | + Maximum request buffer size. If you see the URI is too large >102400 or Request header + too large warnings/errors in YouTrack logs, increase the value for this parameter. + schema: + type: int + required: true + default: 102400 + - variable: licenseName + label: License Name + description: Sets the name of your YouTrack license to the name of your YouTrack Server license. + schema: + type: string + default: "" + - variable: licenseKey + label: License Key + description: Sets the name of your YouTrack license to the name of your YouTrack Server license. + schema: + type: string + private: true + default: "" + - variable: statisticsUpload + label: Statistics Upload + description: Determines whether YouTrack is allowed to collect and share anonymous usage statistics with JetBrains. + schema: + type: boolean + default: false + - variable: dumbMode + label: Dumb Mode + description: | + Lets you run the YouTrack service without connecting to other services inside your network. + When true, YouTrack doesn't generate notifications, update webhooks, retrieve email messages + for Mailbox integrations, or send HTTP requests for workflows. This can be particularly helpful + for staging environments where you want to test new functionality without disrupting users + who are working with the live application. + schema: + type: boolean + default: false + - variable: admin_restore + label: Admin Restore + description: Restores the password for the root user account to the default value . + schema: + type: boolean + default: false + - variable: jvm + label: JVM Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: maxHeapSize + label: Max Heap Size + schema: + type: string + required: true + default: 1g + - variable: maxMetaspaceMemory + label: Max Metaspace Memory + schema: + type: string + required: true + default: 350m + - variable: metaspaceMemory + label: Metaspace Memory + schema: + type: string + required: true + default: 350m + - variable: extraJVMOptions + label: Extra JVM Options + description: Pass extra JVM options in the format of ( -XX:+HeapDumpOnOutOfMemoryError ) + schema: + type: list + default: [] + items: + - variable: jvmOptionEntry + label: JVM Option Entry + schema: + type: string + required: true + default: "" +# Include{containerConfig} +# Include{serviceRoot} + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: +# Include{serviceSelectorLoadBalancer} +# Include{serviceSelectorExtras} + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 18080 + required: true +# Include{serviceExpertRoot} + default: false +# Include{serviceExpert} +# Include{serviceList} +# Include{persistenceRoot} + - variable: data + label: Database Storage + description: This is the location for the database (destination). + schema: + additional_attrs: true + type: dict + attrs: +# Include{persistenceBasic} + - variable: conf + label: Configuration Storage + description: This is the location for the configuration (destination). + schema: + additional_attrs: true + type: dict + attrs: +# Include{persistenceBasic} + - variable: logs + label: Logs Storage + description: This is the location for the logs (destination). + schema: + additional_attrs: true + type: dict + attrs: +# Include{persistenceBasic} + - variable: backups + label: Backups Storage + description: This is the location for backups (destination). + schema: + additional_attrs: true + type: dict + attrs: +# Include{persistenceBasic} +# Include{persistenceList} +# Include{ingressRoot} + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: +# Include{ingressDefault} +# Include{ingressTLS} +# Include{ingressTraefik} +# Include{ingressList} +# Include{security} +# Include{securityContextAdvancedRoot} + - variable: privileged + label: Privileged mode + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: ReadOnly Root Filesystem + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: true +# Include{podSecurityContextRoot} + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 13001 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 13001 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 +# Include{podSecurityContextAdvanced} +# Include{resources} +# Include{advanced} +# Include{addons} +# Include{codeserver} +# Include{vpn} +# Include{documentation} diff --git a/charts/incubator/youtrack/templates/_init.tpl b/charts/incubator/youtrack/templates/_init.tpl new file mode 100644 index 00000000000..920e9c8c187 --- /dev/null +++ b/charts/incubator/youtrack/templates/_init.tpl @@ -0,0 +1,63 @@ +{{- define "youtrack.init" -}} +image: {{ .Values.image.repository }}:{{ .Values.image.tag }} +imagePullPolicy: {{ .Values.image.pullPolicy }} +securityContext: + runAsUser: {{ .Values.podSecurityContext.runAsUser }} + runAsGroup: {{ .Values.podSecurityContext.runAsGroup }} + readOnlyRootFilesystem: {{ .Values.securityContext.readOnlyRootFilysystem }} + runAsNonRoot: {{ .Values.securityContext.runAsNonRoot }} +volumeMounts: + - name: conf + mountPath: {{ .Values.persistence.conf.mountPath }} +args: + - configure + {{- range (include "youtrack.args" . | fromYaml).args }} + - {{ . }} + {{- end -}} +{{- end -}} + +{{- define "youtrack.args" -}} +args: + - --listen-port={{ .Values.service.main.ports.main.port }} + - --base-url={{ .Values.youtrack.baseURL }} + - --statistics-upload={{ .Values.youtrack.statisticsUpload }} + {{- with .Values.youtrack.hubURL }} + - --hub-url={{ . }} + {{- end }} + - -J-Ddisable.configuration.wizard.on.clean.install=true + - -J-Djetbrains.youtrack.disableCheckForUpdate={{ .Values.youtrack.disableCheckForUpdate }} + - -J-Djetbrains.dnq.textIndex.minPrefixQueryLength={{ .Values.youtrack.minPrefixQueryLength }} + - -J-Djetbrains.youtrack.mailLimit={{ .Values.youtrack.mailLimit }} + - -J-Djetbrains.youtrack.event.merge.timeout={{ .Values.youtrack.eventMergeTimeout }} + - -J-Djetbrains.youtrack.default.page={{ .Values.youtrack.defaultPage }} + - -J-Djetbrains.http.request.header.buffer.size={{ .Values.youtrack.requestHeaderBufferSize }} + - -J-Djetbrains.youtrack.dumbMode={{ .Values.youtrack.dumbMode }} + - -J-Djetbrains.hub.auth.login.throttling.enabled={{ .Values.youtrack.authThrottlingEnabled }} + {{- with .Values.youtrack.licenseName }} + - -J-Djetbrains.youtrack.licenseName={{ . }} + {{- end }} + {{- with .Values.youtrack.licenseKey }} + - -J-Djetbrains.youtrack.licenseKey={{ . }} + {{- end }} + {{- with .Values.youtrack.webHooksBaseUrl }} + - -J-Djetbrains.youtrack.webHooksBaseUrl={{ . }} + {{- end }} + {{- if .Values.youtrack.admin_restore }} + - -J-Djetbrains.youtrack.admin.restore=true + {{- end }} + {{- with .Values.youtrack.support_email }} + - -J-Djetbrains.youtrack.support.email= {{ . }} + {{- end }} + {{- with .Values.youtrack.jvm.maxHeapSize }} + - -J-Xmx{{ . }} + {{- end }} + {{- with .Values.youtrack.jvm.maxMetaspaceMemory }} + - -J-XX:MaxMetaspaceSize={{ . }} + {{- end }} + {{- with .Values.youtrack.jvm.metaspaceMemory }} + - -J-XX:MetaspaceSize={{ . }} + {{- end }} + {{- range .Values.youtrack.jvm.extraJVMOptions }} + - -J{{ . }} + {{- end }} +{{- end -}} diff --git a/charts/incubator/youtrack/templates/common.yaml b/charts/incubator/youtrack/templates/common.yaml new file mode 100644 index 00000000000..eb23c2440ef --- /dev/null +++ b/charts/incubator/youtrack/templates/common.yaml @@ -0,0 +1,7 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.common.loader.init" . }} + +{{- $_ := set .Values.initContainers "configure" (include "youtrack.init" . | fromYaml) -}} + +{{/* Render the templates */}} +{{ include "tc.common.loader.apply" . }} diff --git a/charts/incubator/youtrack/values.yaml b/charts/incubator/youtrack/values.yaml new file mode 100644 index 00000000000..f75e4437548 --- /dev/null +++ b/charts/incubator/youtrack/values.yaml @@ -0,0 +1,64 @@ +image: + repository: tccr.io/truecharts/youtrack + tag: 2022.3.65360@sha256:558c3df7c3188fa6eff309a0c0ad87a6c763f42fc84e7c842bac7fb8b7856d11 + pullPolicy: IfNotPresent + +securityContext: + readOnlyRootFilesystem: false + +podSecurityContext: + runAsGroup: 13001 + runAsUser: 13001 + +youtrack: + baseURL: http://localhost:18080 + webHooksBaseUrl: "" + hubURL: "" + defaultPage: /dashboard + support_email: youtrack-feedback@jetbrains.com + authThrottlingEnabled: false + disableCheckForUpdate: false + minPrefixQueryLength: 3 + mailLimit: 0 + eventMergeTimeout: 60000 + requestHeaderBufferSize: 102400 + licenseName: "" + licenseKey: "" + statisticsUpload: false + dumbMode: false + admin_restore: false + jvm: + maxHeapSize: 1g + maxMetaspaceMemory: 350m + metaspaceMemory: 350m + extraJVMOptions: + [] + # - -XX:+HeapDumpOnOutOfMemoryError + +service: + main: + ports: + main: + port: 18080 + protocol: HTTP + +persistence: + data: + enabled: true + mountPath: /opt/youtrack/data + conf: + enabled: true + mountPath: /opt/youtrack/conf + logs: + enabled: true + mountPath: /opt/youtrack/logs + backups: + enabled: true + mountPath: /opt/youtrack/backups + youtracktemp: + enabled: true + mountPath: /opt/youtrack/temp + type: emptyDir + +portal: + enabled: true