基于Docker和k8s的Taiga安装与配置

学习使用Taiga进行项目管理,根据官方文档,将Taiga安装在了Rancher管理的Kubernetes环境里,做一个简单的记录和分享,便于以后使用。

Taiga简介

TTaiga是一款免费开源项目管理系统,比较适用于中小型敏捷项目管理,支持Scrum和kanban两种board 模板来跟踪项目的进度,同时还提供了丰富的第三方应用集成支持,如:视频会议功能与Talky.ioAppear.in的第三方服务结合;与基于Web的版本控制存储库(如GitHub和Bitbucket)进行交互;以及实时聊天工具slack集成等。

  • 简单直观:Taiga 它非常易于学习,并且可用性很高。 还有足够的文档来深入研究其每个特性。
  • 高度设计: Taiga简单而宏伟,它的设计非常出色,您不会厌倦使用它。
  • 可定制的: 您可以为每个项目提供所需的配置,借助其模块扩展其功能并与其他工具集成。

具体详细介绍,请参见https://taiga.io/

Taiga安装

镜像模块

Taiga官方提供了两种安装方式:基于Docker和基于源码编译,推荐使用前者,并且提供了官方的安装脚本。根据docker-compose.yml 的内容可知,主要需要安装以下9个服务:

  • taiga-back,提供后端API;
  • taiga-front,提供前端页面
  • taiga-async,支持异步任务
  • taiga-events,提供websockets网关
  • taiga-gateway,提供反向代理;
  • taiga-protected,提供保护;
  • taiga-db,提供PostgresSQL;
  • taiga-rabbitmq,提供异步任务的消息队列;
  • taiga-events-rabbitmq,提供websockets的消息队列。

其中,taiga-fronttaiga-back是核心。

由于我使用了自己的数据库服务,所以只需要安装前6个服务。

配置环境变量

基于容器的部署方式比较简单,最关键的其实是环境变量的配置。在Rancher UI里,主要使用ConfigMap和直接设置两种方式。

default-back-environment配置

在Rancher->ConfigMaps,在taiga的namespace下添加Configmap,命名为default-back-environment,具体内容如下:

image-20220514162840283

这里面需要注意的有以下几点:

  • 由于使用的是独立的Rabbitmq,所以没有设置RABBITMQ_USERRABBIMQ_PASS,而是设置EVENTS_PUSH_BACKEND_URLCELERY_BROKER_URL两个:

    1
    2
    EVENTS_PUSH_BACKEND_URL: "amqp://taiga:taiga@taiga-events-rabbitmq:5672/taiga"
    CELERY_BROKER_URL: "amqp://taiga:taiga@taiga-async-rabbitmq:5672/taiga"
  • kubernetes以 my-svc.my-namespace.svc.cluster-domain.example 的形式解析DNS,其中my-svc是要使用的服务名,my-namespacemy-svc所在的命名空间(如果在同一命名空间可以省略)。

default-back-environment用于taiga-backtaga-async两个服务的配置。

nginx规则配置

将官方提供的nginx配置文件添加为ConfigMap

image-20220514165143032

这一配置用于taiga-gateway服务。

其余直接使用环境变量配置的,见各个服务。

安装taiga服务

taiga-back

image-20220514170548559

taiga-async

image-20220514192316991

taiga-asynctaiga-back采用相同的镜像,但是不同的启动命令。

taiga-front

taiga-front需要添加三个环境变量:

  • TAIGA_URL
  • TAIGA_WEBSOCKETS_URL
  • TAIGA_SUBPATH

image-20220514195525471

taiga-events

image-20220514192606073

taiga-protected

image-20220514165623951

taiga-front

taiga-front中要把Configmap的键值映射为容器中的配置文件。

image-20220514192754640

image-20220514192838778

以上就是Taiga的安装过程。

Taiga配置(TODO)

通过以上安装,Taiga已经基本可以使用。但是,实际上还需要一些配置:

创建管理员

进入docker-back的命令行,执行python manage.py createsuperuser,从而创建管理员账号。

image-20220514205737828

添加持久卷

在这里,我们的各个服务都没有使用持久卷(除了taiga-gateway),但是官方推荐将静态资源放到持久卷上,直接通过nginx而非后台服务返回,主要是:

1
2
taiga-static-data:/taiga-back/static
taiga-media-data:/taiga-back/media

用于taiga-backtaiga-asynctaiga-gateway

实际上,不添加也能够正常使用。

使用HTTPS

在生产环境下建议使用HTTPS访问,具体的修改包括

  • 对环境变量中TAIGA_SITES_SCHEMETAIGA_URLTAIGA_WEBSOCKETS_URL修改为https或者wss;
  • taiga-gateway修改nginx配置文件,并挂载证书和密钥。

具体可参考:

进入后台管理界面

如果希望进入后台管理界面,可以使用TAIGA_URL/admin/(不要少了后一个斜杠),但是如果是http是无法进入的,需要为taiga-back设置环境变量:

1
2
SESSION_COOKIE_SECURE = False
CSRF_COOKIE_SECURE = False

具体可参考:

小结

刚开始学习使用Taiga,对很多功能还有一个熟悉的过程,希望能够提高一点生产效率吧😆