跳到主要内容
版本:2.4

安装指南

本指南为您提供基于 Helm Chart 的安装要求、安装步骤、配置以及升级方法等内容。

安装要求

先决条件

Kubectl

按照 Kubernetes 文档安装 kubectl

您安装的版本必须是在集群中运行的版本的一个小版本中。

Helm

按照 Helm 文档,安装 Helm v3.5.2 或更高版本。

PostgreSQL

默认情况下,极狐星TowerFox chart 包含由 bitnami/PostgreSQL 提供的集群内 PostgreSQL 部署。此部署仅供试用,不建议在生产中使用。

您应该设置一个外部的、生产就绪的 PostgreSQL 实例。

Redis

默认情况下,极狐星TowerFox chart 包含由 bitnami/Redis 提供的集群内 Redis 部署。此部署仅供试用,不建议在生产中使用。

您应该设置一个外部、生产就绪的 Redis 实例。

ElasticSearch 和 Kibana

默认情况下,极狐星TowerFox chart 包含由 bitnami/ElasticSearchbitnami/Kibana 提供的集群内 ES 和 Kibana 部署。此部署仅供试用,不建议在生产中使用。

您应该设置一个外部、生产就绪的 ElasticSearch 实例和 Kibana 实例。

其他选项

Secrets

您必须创建一些 secrets,例如 ingress SSL 证书密钥。默认情况下一些 secrets 会自动生成,但是如果您想要对它们进行自定义配置,您可以自行创建。

网络和 DNS

默认情况下,为了公开服务,极狐星TowerFox chart 使用配置了 Ingress 对象的基于名称的虚拟服务器。默认使用 ingress-nginx 来进行服务暴露和转发。

您需要事先在 Kubernetes 集群上安装配置好 ingress-nginx 服务。

TLS 证书

推荐您使用 https 并配置 TLS 证书来运行极狐星TowerFox。极狐星TowerFox chart 当前并未提供默认获得免费 TLS 证书的方式(比如 cert-manager)。

您需要事先准备好对应域名(比如:towerfox.test.gitlab.cn)的 TLS 证书,并通过如下命令保存在 secret 对象中:

kubectl  -n towerfox create secret generic towerfox.local-jh-tls  --from-file=./certs/tls.crt --from-file=./certs/tls.key

然后在 value.yml 中配置 ingress 字段如下:

ingress:
enabled: true

hosts:
- host: towerfox.test.gitlab.cn
tls:
- secretName: towerfox.local-jh-tls
hosts:
- towerfox.test.gitlab.cn

外发电子邮件

如果您决定启用邮件功能(比如审计信息发送邮件通知),想要设置提供您的 SMTP 服务器的详细信息,包括 smtp server 地址,smtp server 端口,发件人地址等,具体可参见使用配置说明。

安装步骤

下载指定版本的极狐星TowerFox chart,您可以通过如下两种方式将极狐星TowerFox 部署到指定 Kubernetes 集群中。

指定 yml 配置文件

新建如下 tfvalue.yml 文件,并写入如下内容:

towerfox:
railsLogToStdout: "false"
towerfoxHost: "http://131.140.13.22"
rootEmail: "myadmin@163.com"
gitlabUrl: "https://testgitlab.jhgitlab.cn"
railsEnv: "qa"
envSecret:
name: ""
config:
rootPassword: "Password123"
oauthApplicationId: "0b96616d19307e2530e2e9201161656ac4a389fb24e35f8678875563edef5bbc"
oauthSecret: "6f585f346442f6645ed4d1a0be450a33219e3017eaa77c61957f597e73ea409a"
secret_key_base: "a32f597e86391ef357fb8e89fb0a942d0e0e3f01b052cc8842295b514ced8f8b8895125bcb2094251b0a53914720844e6af2f6aa7397f7099a93b09c5c479796"
db_key_base: "b5356f8c1145f2b0882a6cfa5da25fbb"
audit_event_endpoint_token: "ebb11612849bc80077968e7c4e4b2f24"

redis:
master:
persistence:
enabled: true
storageClass: cbs

postgresql:
primary:
persistence:
size: 20Gi
storageClass: cbs

elasticsearch:
enabled: false
master:
persistence:
storageClass: cbs
data:
persistence:
storageClass: cbs

externalElasticsearch:
host: "http://172.19.5.46:9200"
username: "elastic"
password: "Password123"

说明如下:

  • Helm 命令使用 Helm V3 语法
  • 手动指定极狐星TowerFox 的前后端镜像使用 latest。如果不指定,将使用当前 chart 版本使用的镜像版本。
  • towerfox.towerfoxHost:最终极狐星TowerFox 服务对外暴露的地址。比如对于部署 ingress-nginx 服务的 Kubernetes 来说,就是自动创建的 ELB 地址,这里就是 131.140.13.22
  • secret_key_baseTOWERFOX_DB_KEY_BASETOWERFOX_AUDIT_EVENT_ENDPOINT_TOKEN:三个参数意义以及用法参看说明,也可以使用默认值。
  • redispostgresql 使用极狐星TowerFox 自带的服务,并指定使用 storageClass 类型(腾讯云的 cbs),用以自动创建数据卷,保存数据。
  • Elasticsearch 使用外部 elastic 服务,并指定这个 elasgic 服务的 URL 和访问的用户名/密码信息。

在当前helm chart所在目录下,执行命令进行部署:

helm  upgrade --install testtf  -f  ./tfvalue.yml ./ --create-namespace -n towerfox

部署完成后,就可以通过 http://131.140.13.22 访问极狐星TowerFox 服务。

通过命令行

您也可以通过命令行方式部署极狐星TowerFox,类似如下:

helm upgrade --install testtf  ./    --set towerfox.towerfoxHost=http://131.140.13.22  --set towerfox.rootEmail=myadmin@163.com \
--set towerfox.envSecret.config.rootPassword=Password123 --set redis.master.persistence.enabled=false \
--set postgresql.primary.persistence.enabled=false --set elasticsearch.master.persistence.enabled=false \
--set elasticsearch.data.persistence.enabled=false --set kibana.persistence.enabled=false -n towerfox

说明:

  • redispostgresqlelasticsearchkibana 都是用极狐星TowerFox 的自带服务,并且不使用数据卷保存数据(使用本地磁盘,容器删除数据即丢失)。

配置

公共配置

  1. 镜像仓库

当前极狐星TowerFox 用到的镜像资源保存在私有容器仓库,拉取这些镜像资源需要相关 credential 信息,极狐星TowerFox Helm Chart 默认提供了私有镜像仓库的 credential 信息。这些信息不需要更改:

# -- image pull secret name
imagePullSecrets: []
# -- image pull user name
imagePullUsername: "deploy-read_registry-token"
# -- image pull password
imagePullPassword: "MDhMjX8f1zR7Dud9ntUs"
# -- image pull server
imagePullServer: "registry.jihulab.com"
  1. Pod 属性

极狐星TowerFox 各个组件默认的属性,比如副本数量、自定义annotation、nodeSelector 和 affinity 等。

这些值可以根据实际情况自定定义使用。

Ingress 配置

极狐星TowerFox Helm Chart 默认采用 ingress 机制实现服务的对外暴露,如果 Kubernetes 集群采用其他对外暴露服务机制,如 NodePort 和 LoadBalancer,可以关闭改配置,并更改其他相关配置项目。

默认配置如下:

ingress:
enabled: true
className: ""
# -- ingress annotations
annotations:
kubernetes.io/ingress.class: nginx

当前只支持 nginx 类型的 ingress controller,直接通过 IP 地址以 HTTP 协议提供服务。

生产环境建议开启 TLS,并将 SSL 证书和私钥保存在 secret 对象中,采用类似如下配置:

ingress:
enabled: true
className: ""
# -- ingress annotations
annotations:
kubernetes.io/ingress.class: nginx

# -- ingress hosts
hosts:
- host: towerfox.test.gitlab.cn
tls:
- secretName: towerfox.local-tls
hosts:
- towerfox.test.gitlab.cn

secret 创建和相关字段说明详见 TLS 证书

Job 任务

位于 jobs 键下,定义极狐星TowerFox 用于初始化的相关任务,当前主要有两类:

  1. init 初始化

包括数据库初始化,ElasticSearch 初始化配置,极狐星TowerFox 初始管理员账号配置。

  1. migrate 任务

主要包括数据库表字段更改适配。

默认都是 true,即开启。

核心组件

Frontend 设置

极狐星TowerFox 前端组件设置,包括镜像配置、Service 配置和 autoscaling 配置等。

镜像 tag 默认使用当前 chart 的 app version。

Backend 设置

极狐星TowerFox 后端服务组件的镜像配置,包括 API 组件、worker 组件和 workerauditalert 组件。

镜像 tag 默认使用当前 chart 的 app version。

API 设置

极狐星TowerFox 后端 server 组件设置,包括镜像配置、Service 配置、autoscaling 配置和持久卷配置等。

组件所使用的镜像信息通过 Backend 设置字段指定。

持久化卷配置用于保存需要共享的资源,包括项目代码和图片资源信息等。默认关闭,即不使用 persistence volume,使用容器的本地持久化卷。

persistence:
# -- used to store shared blob resources. hence only one running pod is allowed for api deployment. S3 or NFS will be used in future
enabled: false
storageClass:
size: 20Gi

Worker 和 Workerauditalert 设置

极狐星TowerFox 用于处理普通数据任务和告警任务的队列服务。

组件所使用的镜像信息由 Backend 设置字段指定。

Docs 设置

极狐星TowerFox 的帮助文档设置,包括镜像配置、Service 配置和 autoscaling 配置等。

帮助文档组件默认关闭,即不部署。

Pages 设置

极狐星TowerFox 企业黄页设置,包括镜像配置、Service 配置和 autoscaling 配置等。

该组件只有在 园区模式 下才会加载,默认的 企业模式 不会部署。

极狐星TowerFox 安装配置

极狐星TowerFox 初始安装配置项,其定义和说明参见安装指南

该配置字段分两类:机密信息和非机密信息。保存在 towerfox.envSecret 字段中的都是机密信息,它们会被保存在 Kubernetes 的 secret 中;也可以提前保存在 secret 对象,然后通过 towerfox.envSecret.name 字段直接引用。

Redis 设置

默认情况下会部署使用单个、非复制的 Redis 实例,极狐星TowerFox 暂不支持部署高可用 Redis 集群。

您可以通过设置 redis.enabled=false,并配置 redis.externalRedis 字段,对接使用一个外部 Redis 实例。

Postgresq 设置

默认情况下会部署使用单实例的 Postgersql 数据库,极狐星TowerFox 暂不支持部署高可用 Postgresql 集群。

您可以通过设置 postgresql.enabled=false,并配置 postgresql.externalPostgresql 字段,对接使用一个外部 Postgresq 实例。

Elasticsearch 设置

默认情况下极狐星TowerFox 部署使用"单 master 单 data" 模式的 ElasticSearch 集群,不支持 credential 访问,即只支持免密访问。

您可以通过设置 elasticsearch.enabled=false,并配置 elasticsearch.externalElasticsearch 字段,对接使用一个外部 ElasticSearch 实例。

Kibana 设置

elasticsearch.enabled=true 时会部署 kibana 实例到极狐星TowerFox。

版本对照

极狐星TowerFox Helm Chart 的版本和极狐星TowerFox 应用的版本对应关系如下表所示:

Helm Chart 版本极狐星TowerFox 版本说明
13.0.0v2.0.0