News
Faster Speeds: Bandwidth for vStack Servers in Kazakhstan Increased to 200 Mbps
BS
June 27 2025
Updated June 24 2025

Taiga on Kubernetes Deploying a Self-Hosted Project Management Tool

Kubernetes

In the world of software development, project management requires tools that support flexibility, transparency, and scalability. Taiga is an open-source platform for Agile and Scrum methodologies, helping teams organize tasks, track progress, and analyze results. However, traditional Taiga deployment on servers faces challenges: complex setup, limited scalability, and instability as teams grow. Kubernetes addresses these issues by providing automation, fault tolerance, and consistent environments. This guide will help you deploy Taiga in Kubernetes, ensuring a reliable platform for your team.

Creating or Downloading Containers

Official Images (Recommended):

Official images simplify setup by including all dependencies.

taigaio/taiga-front: Frontend (Angular).

taigaio/taiga-back: Backend (Django).

Note: Also requires `postgres` and `redis`.

docker pull taigaio/taiga-front:latest

docker pull taigaio/taiga-back:latest

Custom Build (Optional):

Customization is useful for specific requirements.

Fork Taiga repositories (frontend/backend) on GitHub.

Make changes (e.g., patches).

Create a `Dockerfile` for the backend:

FROM taigaio/taiga-back:latestCOPY custom_settings.py /taiga/settings/custom_settings.py

Build and push the image:

docker build -t mycompany/taiga-back:1.0 .

docker push mycompany/taiga-back:1.0

Deployment in Kubernetes

Namespace

Namespace isolates Taiga resources in the cluster.

apiVersion: v1

kind: Namespace

metadata:

name: taiga

Configuration

Secrets

Stores sensitive data in encrypted form:

apiVersion: v1

kind: Secret

metadata:

name: taiga-secrets

namespace: taiga

type: Opaque

data:

POSTGRES_PASSWORD: cGFzc3dvcmQ= # base64: "password"

TAIGA_SECRET_KEY: c2VjcmV0a2V5 # base64: "secretkey"

TAIGA_DB_PASSWORD: ZGJwYXNz # base64: "dbpass"

TAIGA_ADMIN_PASSWORD: YWRtaW4= # base64: "admin"

ConfigMap

Contains non-sensitive settings:

apiVersion: v1

kind: ConfigMap

metadata:

name: taiga-config

namespace: taiga

data:

TAIGA_SITES_DOMAIN: "taiga.example.com" # Taiga domain

TAIGA_SITES_SCHEME: "https" # Protocol

TAIGA_DB_HOST: "taiga-postgres" # Database host

TAIGA_DB_NAME: "taiga" # Database name

TAIGA_DB_USER: "taiga" # Database user

TAIGA_REDIS_HOST: "taiga-redis" # Redis host

Persistent Storage

PVC ensures PostgreSQL data persistence:

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: taiga-postgres-pvc

namespace: taiga

spec:

accessModes:

- ReadWriteOnce

storageClassName: standard

resources:

requests:

storage: 10Gi

Component Deployment

PostgreSQL

Stores Taiga data:

apiVersion: apps/v1

kind: Deployment

metadata:

name: taiga-postgres

namespace: taiga

spec:

replicas: 1

selector:

matchLabels:

app: taiga-postgres

template:

metadata:

labels:

app: taiga-postgres

spec:

containers:

- name: postgres

image: postgres:latest

envFrom:

- secretRef:

name: taiga-secrets

volumeMounts:

- name: postgres-data

mountPath: /var/lib/postgresql/data

volumes:

- name: postgres-data

persistentVolumeClaim:

claimName: taiga-postgres-pvc

Redis

Used for asynchronous tasks and caching:

helm install taiga-redis bitnami/redis \

--namespace taiga \

--set auth.password=REDIS_PASSWORD

Taiga Backend

Performs migrations and runs the server:

apiVersion: apps/v1

kind: Deployment

metadata:

name: taiga-back

namespace: taiga

spec:

replicas: 1

selector:

matchLabels:

app: taiga-back

template:

metadata:

labels:

app: taiga-back

spec:

containers:

- name: taiga-back

image: taigaio/taiga-back:latest

envFrom:

- configMapRef:

name: taiga-config

- secretRef:

name: taiga-secrets

command: ["/bin/sh", "-c"]

args:

- python manage.py migrate && gunicorn -w 3 -t 60 taiga.wsgi

Taiga Frontend

Serves the web interface:

apiVersion: apps/v1

kind: Deployment

metadata:

name: taiga-front

namespace: taiga

spec:

replicas: 1

selector:

matchLabels:

app: taiga-front

template:

metadata:

labels:

app: taiga-front

spec:

containers:

- name: taiga-front

image: taigaio/taiga-front:latest

envFrom:

- configMapRef:

name: taiga-config

Services

Enable access between components:

apiVersion: v1

kind: Service

metadata:

name: taiga-postgres

namespace: taiga

spec:

selector:

app: taiga-postgres

ports:

- port: 5432

apiVersion: v1

kind: Service

metadata:

name: taiga-redis

namespace: taiga

spec:

selector:

app: redis

ports:

- port: 6379

apiVersion: v1

kind: Service

metadata:

name: taiga-back

namespace: taiga

spec:

selector:

app: taiga-back

ports:

- port: 8000

apiVersion: v1

kind: Service

metadata:

name: taiga-front

namespace: taiga

spec:

selector:

app: taiga-front

ports:

- port: 80

Final Setup

Ingress

Routes external traffic to the frontend:

apiVersion: networking.k8s.io/v1

kind: Ingress

metadata:

name: taiga-ingress

namespace: taiga

spec:

rules:

- host: taiga.example.com

http:

paths:

- path: /

pathType: Prefix

backend:

service:

name: taiga-front

port:

number: 80

First Login

  • Open `https://taiga.example.com/admin`.
  • Log in as `admin` with the password from `TAIGA_ADMIN_PASSWORD`.
  • Configure SMTP in the admin panel for email notifications.

Deploying Taiga in Kubernetes ensures scalability, fault tolerance, and ease of management. This guide enables you to quickly set up a platform for efficient team collaboration.

Vote:
5 out of 5
Аverage rating : 5
Rated by: 1
1101 CT Amsterdam The Netherlands, Herikerbergweg 292
+31 20 262-58-98
700 300
ITGLOBAL.COM NL
700 300

You might also like...

We use cookies to make your experience on the Serverspace better. By continuing to browse our website, you agree to our
Use of Cookies and Privacy Policy.