20.06.2025

Как запустить систему управления проектами Taiga в Kubernetes

В мире разработки программного обеспечения управление проектами требует инструментов, которые поддерживают гибкость, прозрачность и масштабируемость. Taiga — это open-source платформа для Agileи Scrum-методологий, которая помогает командам организовывать задачи, отслеживать прогресс и анализировать результаты. Однако традиционное развертывание Taiga на серверах сталкивается с проблемами: сложная установка, ограниченная масштабируемость и нестабильность при росте команды. Kubernetes решает эти задачи, предоставляя автоматизацию, отказоустойчивость и единообразие сред. Это руководство поможет вам развернуть Taiga в Kubernetes, обеспечив надёжную платформу для вашей команды.

Создание либо скачивание контейнера
Официальный образ

Официальный образ (рекомендуется) - официальные образы упрощают старт, включая все зависимости:

Примечание: Также нужны `postgres` и `redis`.

docker pull taigaio/taiga-front:latest
docker pull taigaio/taiga-back:latest

Кастомная сборка

dockerfile

FROM taigaio/taiga-back:latest

COPY custom_settings.py /taiga/settings/custom_settings.py

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

docker push mycompany/taiga-back:1.0

 

Развертывание в Kubernetes

Namespace - необходим для изолиряции ресурсов Taiga в кластере.

apiVersion: v1
kind: Namespace
metadata:
name: taiga

Конфигурация

Secrets, так как хранит чувствительные данные в зашифрованном виде:

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:

ConfigMap содержит несекретные настройки.

apiVersion: v1
kind: ConfigMap
metadata:
name: taiga-config
namespace: taiga
data:
TAIGA_SITES_DOMAIN: "taiga.example.com" Домен Taiga
TAIGA_SITES_SCHEME: "https" Протокол
TAIGA_DB_HOST: "taiga-postgres" Хост БД
TAIGA_DB_NAME: "taiga" Имя БД
TAIGA_DB_USER: "taiga" Пользователь БД
TAIGA_REDIS_HOST: "taiga-redis" Хост Redis

Постоянное хранилище

PVC обеспечивает сохранение данных PostgreSQL.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: taiga-postgres-pvc
namespace: taiga
spec:
accessModes:
ReadWriteOnce
storageClassName: standard
resources:
requests:
storage: 10Gi

Развертывание компонентов

PostgreSQL:

PostgreSQL хранит данные Taiga.

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:

Redis используется для асинхронных задач и кэширования.

helm install taiga-redis bitnami/redis \

--namespace taiga \

--set auth.password=REDIS_PASSWORD

Taiga Backend:

Бэкенд выполняет миграции и запускает сервер.

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:

Фронтенд обслуживает веб-интерфейс.

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

Сервисы

Сервисы обеспечивают доступ между компонентами.

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

Финальная настройка

Ingress

Ingress направляет внешний трафик на фронтенд.

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

Первый вход

  1. Откройте `https://taiga.example.com/admin`.
  2. Войдите как `admin` с паролем из `TAIGA_ADMIN_PASSWORD`.
  3. Настройте SMTP в админке для отправки писем.

Развертывание Taiga в Kubernetes обеспечивает масштабируемость, отказоустойчивость и удобство управления. Это руководство позволяет быстро создать платформу для эффективной работы вашей команды.