В мире разработки программного обеспечения управление проектами требует инструментов, которые поддерживают гибкость, прозрачность и масштабируемость. Taiga — это open-source платформа для Agileи Scrum-методологий, которая помогает командам организовывать задачи, отслеживать прогресс и анализировать результаты. Однако традиционное развертывание Taiga на серверах сталкивается с проблемами: сложная установка, ограниченная масштабируемость и нестабильность при росте команды. Kubernetes решает эти задачи, предоставляя автоматизацию, отказоустойчивость и единообразие сред. Это руководство поможет вам развернуть Taiga в Kubernetes, обеспечив надёжную платформу для вашей команды.
Создание либо скачивание контейнера
Официальный образ
Официальный образ (рекомендуется) - официальные образы упрощают старт, включая все зависимости:
- taigaio/taiga-front: Фронтенд (Angular).
- taigaio/taiga-back: Бэкенд (Django).
Примечание: Также нужны `postgres` и `redis`.
docker pull taigaio/taiga-front:latest
docker pull taigaio/taiga-back:latest
Кастомная сборка
- Кастомная сборка (опционально) - кастомизация полезна для специфических требований.:
- Форкните репозитории Taiga (frontend/backend) на GitHub.
- Внесите изменения (например, патчи).
- Создайте `Dockerfile` для бэкенда:
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
Первый вход
- Откройте `https://taiga.example.com/admin`.
- Войдите как `admin` с паролем из `TAIGA_ADMIN_PASSWORD`.
- Настройте SMTP в админке для отправки писем.
Развертывание Taiga в Kubernetes обеспечивает масштабируемость, отказоустойчивость и удобство управления. Это руководство позволяет быстро создать платформу для эффективной работы вашей команды.