Table of Contents

# Youtrack

Kubernetes Installation

According to the Doc; We extract the docker need and trasnform into K8s resources.

The minimal setup:

  1. PVC, PV
  2. Namespace
  3. Deployment
  4. Service
  5. Ingress

Prepare

  1. Latest docker image tag, we use jetbrains/youtrack:2025.3.108480 at this time.
  2. DNS setup for public access, we use www.example.com at this time.
  3. K8s admin permission for adding resources.
  4. Manual create volume: pvc-youtrack-data, pvc-youtrack-conf, pvc-youtrack-logs, and pvc-youtrack-backups

Define the K8s resource manifests

Namespace

Defined the namespace youtrack would locate.

apiVersion: v1
kind: Namespace
metadata:
  name: youtrack

Deployment

Describe how the pod(containers) to run.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: youtrack
  namespace: youtrack # use the anme you create
  labels:
    app: youtrack
spec:
  replicas: 1
  selector:
    matchLabels:
      app: youtrack
  template:
    metadata:
      name: youtrack
      labels:
        app: youtrack
    spec:
      securityContext:
        fsGroup: 13001
      volumes:
        - name: data
          persistentVolumeClaim:
            claimName: pvc-youtrack-data
        - name: conf
          persistentVolumeClaim:
            claimName: pvc-youtrack-conf
        - name: logs
          persistentVolumeClaim:
            claimName: pvc-youtrack-logs
        - name: backups
          persistentVolumeClaim:
            claimName: pvc-youtrack-backups
      containers:
        - name: youtrack
          image: jetbrains/youtrack:2025.3.108480
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 8080
              name: web
          volumeMounts:
            - mountPath: /opt/youtrack/data
              name: data
            - mountPath: /opt/youtrack/conf
              name: conf
            - mountPath: /opt/youtrack/logs
              name: logs
            - mountPath: /opt/youtrack/backups
              name: backups
      restartPolicy: Always

Service

Describe how to expose the pod inside the cluster.

apiVersion: v1
kind: Service
metadata:
  name: youtrack-svc
  namespace: youtrack # use the anme you create
spec:
  selector:
    app: youtrack
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
      name: web

Ingress

Describe how to acces the service from the outside of K8s.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: youtrack-ingress
  namespace: youtrack # use the anme you create
  annotations:
    # Used for traefik proxy for ingress class
    traefik.ingress.kubernetes.io/router.entrypoints: web,websecure
spec:
  rules:
    - host: www.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: youtrack-svc
                port:
                  number: 80

Get into the Configuration Wizard

Get the one-time token URL from the pod.

# find the pod name
kubectl get pod -A

# get the logs
kubectl logs <the youtrack pod name> -n youtrack

There should be a line like

JetBrains YouTrack 2025.3 Configuration Wizard will listen inside container on {0.0.0.0:8080}/ after start and can be accessed by URL [https://<put-your-docker-HOST-name-here>:<put-host-port-mapped-to-container-port-8080-here>//?wizard_token=CIR7aan38XTafReGuFsS]

Therefore, we extract the token //?wizard_token=CIR7aan38XTafReGuFsS then chain it to the host domain.

For this time, it should be https://www.example.com//?wizard_token=CIR7aan38XTafReGuFsS

Then you can follow the instruction for set up the YouTrack service

Use the query filter

Now you can use the simple query builder from the issues page, you can build a query, then switch to the advance query to get the query.

Custom Time Range

Operators