安装指南
本指南为您提供基于 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/ElasticSearch 和 bitnami/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_base
、TOWERFOX_DB_KEY_BASE
和TOWERFOX_AUDIT_EVENT_ENDPOINT_TOKEN
:三个参数意义以及用法参看说明,也可以使用默认值。redis
和postgresql
使用极狐星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
说明:
redis
、postgresql
、elasticsearch
和kibana
都是用极狐星TowerFox 的自带服务,并且不使用数据卷保存数据(使用本地磁盘,容器删除数据即丢失)。
配置
公共配置
- 镜像仓库
当前极狐星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"
- 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 用于初始化的相关任务,当前主要有两类:
- init 初始化
包括数据库初始化,ElasticSearch 初始化配置,极狐星TowerFox 初始管理员账号配置。
- 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.0 | v2.0.0 |