En el mundo del desarrollo de software, la gestión de proyectos requiere herramientas que fomenten la flexibilidad, la transparencia y la escalabilidad. Taiga es una plataforma de código abierto para metodologías Agile y Scrum que ayuda a los equipos a organizar tareas, monitorizar el progreso y analizar resultados. Sin embargo, la implementación tradicional de Taiga en servidores presenta desafíos: configuración compleja, escalabilidad limitada e inestabilidad a medida que los equipos crecen. Kubernetes Aborda estos problemas proporcionando automatización, tolerancia a fallos y entornos consistentes. Esta guía le ayudará a implementar Taiga en Kubernetes, garantizando una plataforma confiable para su equipo.
Creación o descarga de contenedores
Imágenes oficiales (recomendadas):
Las imágenes oficiales simplifican la configuración al incluir todas las dependencias.
taigaio/taiga-front: Interfaz (Angular).
taigaio/taiga-back: Backend (Django).
Nota: También requiere `postgres` y `redis`.
docker pull taigaio/taiga-front:latest
docker pull taigaio/taiga-back:latest
Creación personalizada (opcional):
La personalización es útil para requisitos específicos.
Bifurcación de repositorios de Taiga (frontend/backend) en GitHub.
Realizar cambios (por ejemplo, parches).
Crear un `Dockerarchivo` para el backend:
FROM taigaio/taiga-back:latestCOPY custom_settings.py /taiga/settings/custom_settings.pyConstruye y envía la imagen:
docker build -t mycompany/taiga-back:1.0 .
docker push mycompany/taiga-back:1.0
Despliegue en Kubernetes
Espacio de nombres
El espacio de nombres aísla los recursos de Taiga en el clúster.
apiVersion: v1
kind: Namespace
metadata:
name: taiga
Configuration
Secrets Playa Esmeralda Resort & Spa
Almacena datos confidenciales en forma cifrada:
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"
Mapa de configuración
Contiene configuraciones no sensibles:
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
Almacenamiento persistente
El PVC asegura PostgreSQL persistencia de datos:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: taiga-postgres-pvc
namespace: taiga
spec:
accessModes:
- ReadWriteOnce
storageClassName: standard
resources:
requests:
storage: 10Gi
Implementación de componentes
PostgreSQL
Almacena datos de 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
Se utiliza para tareas asincrónicas y almacenamiento en caché:
helm install taiga-redis bitnami/redis \
--namespace taiga \
--set auth.password=REDIS_PASSWORD
Taiga Backend
Realiza migraciones y ejecuta el servidor:
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
Interfaz de Taiga
Sirve la interfaz web:
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
Servicios
Habilitar el acceso entre componentes:
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
Configuración final
Ingreso
Enruta el tráfico externo al 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
Primer inicio de sesión
- Abra `https://taiga.example.com/admin`.
- Inicie sesión como `admin` con la contraseña de `TAIGA_ADMIN_PASSWORD`.
- Configure SMTP en el panel de administración para notificaciones por correo electrónico.
Desplegando Taiga en Kubernetes Garantiza escalabilidad, tolerancia a fallos y facilidad de gestión. Esta guía le permite configurar rápidamente una plataforma para una colaboración eficiente en equipo.