1. 概述
1.1 版本
运维平台版本 | 功能变更 |
---|---|
V1.10.0 | - |
1.2 应用场景
Kubernetes 是一个开源的容器编排平台,被广泛用于容器化工作负载的管理,支持多云、多区域的部署,有助于实现高可用性和弹性。
TKE (Tencent Kubernetes Engine) 是腾讯云提供的 Kubernetes 托管服务,用于管理、部署和运行容器化应用。
它提供了在云环境中轻松使用 Kubernetes 的能力,减少了运维负担,帮助用户更容易地构建、扩展和管理容器化应用程序。
本文简单介绍如何在TKE中部署帆软应用(FineReport、FineBI)。
1.3 步骤简介
序号 | 步骤 | 简介 | |
---|---|---|---|
此部分均为准备操作,旨在准备好容器安装所需的镜像和空间。 除获取部分帆软镜像以外的其他操作,如有问题或需使用指导,建议查阅腾讯云帮助文档或联系腾讯云售后支持。 | |||
1 | 准备镜像 | 获取镜像 | 联系帆软获取帆软相关组件的镜像包和版本号 自行准备mysql/redis/minio相关镜像包 |
新建镜像仓库 | 创建一个命名空间,创建每个组件的镜像仓库 建议帆软应用所需的所有组件镜像,均存储在同一命名空间下的镜像仓库中 | ||
推送镜像 | 将本地镜像推送到镜像仓库 | ||
2 | 配置集群 | 新建集群 | 创建一个K8S集群,容器服务运行在集群中 |
新建命名空间 | 创建一个命名空间,该命名空间用于安装存储该帆软应用下的所有组件 建议同一帆软应用下的所有组件,安装在同一腾讯云集群的同一命名空间下,且该命名空间中不再安装其他组件,实现多应用之间的资源隔离 | ||
新建保密字典 | 创建该命名空间的保密字典,用于存储密码、令牌、密钥等敏感信息,降低直接对外暴露的风险 | ||
创建存储 | 创建存储,用于保存bi6/fr/fdl组件的业务数据 | ||
3 | 自行提前安装组件 | 先自行部署相关组件,确保工程启动所依赖的组件均完备 elasticsearch可选,用作日志存储,即logdb mysql可选,强烈建议准备。作为工程配置库,存储工程相关配置信息 redis/minio作为集群状态服务器和文件服务器,集群必备,单机无需 | |
此部分进入正式部署容器环节 | |||
3 | 安装组件 | 修改YAML | 根据自身配置信息,修改 yaml 文件 本文提供文件示例和修改方案,用户可自行修改或联系帆软协助 |
YAML 创建资源 | 使用生成的 yaml 文件,在腾讯云集群中创建资源 | ||
新建 Nginx Ingress 实例 | 创建一个 Nginx Ingress 实例,用于提供进入 Kubernetes 集群的外部流量管理和路由功能 | ||
访问帆软应用 | 访问bi6/fr/fdl工程,正式使用 |
2. 准备镜像
在容器化部署中,镜像仓库用于管理、存储和共享容器镜像,因此在正式部署之前,用户需要先将镜像推送到镜像仓库中。
本文以购买的腾讯云镜像仓库为例,演示镜像推送的过程。
注1:除 2.1 节需联系帆软获取镜像,本章节其他步骤如有问题,或需使用指导,建议查阅腾讯云帮助文档或联系腾讯云售后支持。
注2:用户如另有镜像仓库,请自行调整操作步骤。
2.1 获取镜像
如需部署帆软应用,请联系帆软技术支持,获取以下容器镜像和镜像版本号。
所需镜像 | 是否必需 | 说明 |
---|---|---|
bi6/fr/fdl | 必需 | FineBI/FineReport/FineDataLink的工程节点组件,其中不带任何的demo数据 |
app-init | 必需 | 执行初始化任务,预加载数据,设置文件权限、从外部获取配置信息等,确保帆软应用在启动时处于一个良好的状态 |
elasticsearch | 可选 | 替换帆软应用中原有的swift作为日志存储 对项目中FineReport、外接数据库、业务库和其他集群组件的请求进行采集 |
2.2 创建镜像仓库
1)创建命名空间
创建一个命名空间,该命名空间用于存放帆软提供的所有镜像仓库。
建议帆软所有应用涉及的组件,均存放于该命名空间中,
登录 容器镜像服务 控制台,选择左侧导航栏中的「命名空间」,选择指定实例。
单击「新建」,配置命名空间名称及访问级别。点击「确认」即可在该实例下创建一个命名空间。
详情请参见腾讯云文档:管理命名空间
2)创建镜像仓库
创建镜像仓库,用于存放帆软提供的各个镜像,如有多个镜像,需创建多个镜像仓库。
登录 容器镜像服务 控制台,选择左侧导航栏中的「镜像仓库」,选择指定实例。
单击「新建」,进行镜像仓库配置,选择上一步创建的命名空间,建议根据镜像名称设置仓库名称。
详情请参见腾讯云文档:管理镜像仓库
3)查看仓库信息
点击对应镜像仓库后的「快捷指令」,即可查询登录和推送镜像相关指令,下节推送镜像时需要使用。
2.3 推送镜像入库
1)配置访问控制
首次推送镜像请先配置实例的访问控制功能,确认镜像上传客户端可通过内网或公网稳定访问实例。
详情请参见腾讯云文档:设置访问网络控制
2)推送镜像
请根据2.1节帆软提供的组件镜像,和2.2节生成的快捷指令,将本地镜像推送到腾讯容器镜像仓库中。
详情请参见腾讯云文档:如何上传 Docker 镜像至腾讯容器镜像仓库 TCR
3)效果预览
当镜像仓库中出现对应版本的镜像信息时,说明镜像已成功推送。
3. K8S集群准备
3.1 新建集群
当使用容器服务时,需要先创建集群,容器服务运行在集群中。一个集群由若干节点(云服务器)构成,可运行多个容器服务。
3.2 新建命名空间
一个 Kubernetes 集群支持设置多个命名空间(Namespace),每个命名空间相当于一个相对独立的虚拟空间,不同空间的资源相互隔离互不干扰。
建议同一帆软应用下的所有组件,安装在同一腾讯云集群的同一命名空间下,且该命名空间中不再安装其他组件,实现多应用之间的资源隔离。
本节演示,在腾讯云集群中,新建一个名叫 ops-test 的 命名空间(如果已有命名空间,可跳过本节)。
登录 容器服务控制台,在左侧导航栏中选择「集群」,单击目标集群 ID,进入集群详情页。
选择左侧菜单栏中的「命名空间」,单击「新建」。
在新建命名空间页面中,设置名称为「ops-test」。如下图所示:
3.3 新建Secrets
Secret 可用于存储密码、令牌、密钥等敏感信息,降低直接对外暴露的风险。在下文 yaml 文件中需要用到。
登录 容器服务控制台,在左侧导航栏中选择「集群」,单击目标集群 ID,进入集群详情页。
选择左侧导航栏中的「配置管理 > Secret」,配置 Secret 信息即可创建。
配置项 | 说明 |
---|---|
名称 | 自定义名称 |
Secret类型 | 选择「Dockercfg」 |
生效范围 | 指定命名空间,选择3.3节新建的命名空间 |
镜像仓库域名 | 手动填写2.2节创建的镜像仓库地址前缀 例如: 仓库地址为fine-image-registry.tencentcloudcr.com/fanruan/fr 则仓库域名为fine-image-registry.tencentcloudcr.com |
用户名密码 | 登录腾讯云的用户名密码 |
详情请参见腾讯云文档:Secret 管理
3.4 创建存储
集群的存储管理是保存业务数据的重要组件,如果已有可用存储,可跳过本节内容。
本节演示,在腾讯云集群中,新建一个名叫 data 的 storageclass 作为帆软应用的存储。
登录 容器服务控制台,在左侧导航栏中选择「集群」,单击目标集群 ID,进入集群详情页。
选择左侧菜单栏中的「存储 > StorageClass」,在 StorageClass 页面单击「新建」。
在新建 StorageClass 页面中,配置 StorageClass 参数,示例名称为 data 。如下图所示:
详情请参见腾讯云文档:存储
4. 自行准备组件
在执行下文创建帆软应用操作前,请先自行部署相关组件,确保工程启动所依赖的组件均完备。
组件可部署在3.2节创建的命名空间中,也可自行安装在其他服务器空间中,只需确保和该命名空间可内网联通即可。
组件 | 镜像 | 说明 |
---|---|---|
配置数据库 | 自行准备 | 组件作用:作为工程的外接配置库(即finedb)。存储系统相关配置信息,包括:平台目录、定时任务、用户权限等 是否必需:可选,强烈建议安装 建议准备 MySQL8 类型数据库 支持的数据库类型包括:MySQL5、MySQL8、Oracle 信息准备: 请记录下数据库表空间的URL、模式、用户密码等信息 |
状态服务器 | 自行准备 | 组件作用:作为集群的状态服务器 是否必需:单机无需,集群必需 支持的状态服务器类型包括:Redis单机、Redis集群 信息准备: 请记录下Redis的IP、端口、密码等信息 |
文件服务器 | 自行准备 | 组件作用:作为集群的文件服务器 是否必需:单机无需,集群必需 支持的文件服务器类型包括:SFTP、FTP、共享外部目录 信息准备: 请记录下文件服务器的访问信息 |
elasticsearch | 帆软提供 | 组件作用:作为帆软应用的日志存储(即logdb)。对工程、外接数据库、业务库和其他集群组件的请求进行采集 是否必需:可选,集群强烈建议安装 如安装,则取代帆软应用中原有的swift,作为日志存储 如不安装,将启用帆软应用中原有的swift(logdb)进行日志存储 信息准备: 请记录下elasticsearch的IP、端口、用户密码等信息 |
5. 创建帆软应用
5.1 修改YAML
点击下载并解压,获取示例YAML文件:demo_example.zip
请根据自身情况,修改以下内容:
配置项 | 说明 |
---|---|
namespace | 请修改namespace值为3.2节选的的命名空间名称 文件中有多处,请逐一修改 |
datasource | 若未准备配置数据库,请修改enabled值为false 若准备了配置数据库,请修改相关配置信息 enabled: 是否启用配置数据库 password: 数据库密码 schema: 数据库模式 type: 数据库类型 url: 数据库访问URL username: 数据库用户名 |
elasticSearch | 若未准备elasticSearch,请修改enabled值为false 若准备了elasticSearch,请修改相关配置信息 enabled: 是否启用elasticSearch组件 ip: elasticSearch所在服务器IP password: elasticSearch用户的密码 port: elasticSearch占用端口 user: elasticSearch用户名称 |
fileService | 单机工程,请修改enabled值为false 集群工程,请修改为文件服务器相关配置信息 config: 文件服务器信息 enabled: 是否启用文件服务器 type: 文件服务器类型 |
redis | 单机工程,请修改enabled值为false 集群工程,请修改为状态服务器相关配置信息 enabled: 是否启用状态服务器 nodes: 状态服务器IP和端口 password: 状态服务器密码 type: 状态服务器类型 |
image | 请修改image为2.3节的的镜像信息和3.3节的Secrets |
storageClassName | 请修改storageClassName值为3.4节存储类名称 |
5.2 YAML创建资源
使用 YAML 文件创建资源的主要作用是定义和配置 Kubernetes 集群中的各种资源。这些资源可以包括应用程序的部署、服务、持久卷声明、配置映射、Ingress规则等等。
登录 容器服务控制台,在左侧导航栏中选择「集群」,单击目标集群 ID,进入集群详情页。
单击右上方「YAML 创建资源」按钮,将上节生成的 YAML 文件内容拷贝进来,点击「完成」即可。
5.3 新建 Ingress
此时工程其实已经创建成功。
用户需要为 Kubernetes 集群创建一个流量管理器,用于处理从外部进入集群的所有请求。
用户需要同时配置 NginxIngress 组件和创建适当的 Nginx Ingress 实例来实现流量控制和路由。
Nginx Ingress 实例告诉 NginxIngress 组件如何处理流量
NginxIngress 组件则负责实际处理流量并执行规则
1)新建 NginxIngress 组件
登录 容器服务控制台,在左侧导航栏中选择「集群」,单击目标集群 ID,进入集群详情页。
选择左侧菜单栏中的「组件管理」,单击「新建」。勾选「网络>NginxIngress」,点击「完成」。
2)新增 Nginx Ingress 实例
登录 容器服务控制台,在左侧导航栏中选择「集群」,单击目标集群 ID,进入集群详情页。
选择左侧菜单栏中的「服务与路由>NginxIngress」,单击「新增 Nginx Ingress 实例」。
本示例创建一个叫「fine-nginx」的实例。
3)新建Ingress实例
登录 容器服务控制台,在左侧导航栏中选择「集群」,单击目标集群 ID,进入集群详情页。
选择左侧菜单栏中的「服务与路由>Ingress」,单击「新建」。
在新建 Ingress 页面中,配置参数,如下图所示:
Ingress 名称:fr
命名空间:3.2节创建的「ops-test」
Ingress 类型:Nginx Ingress Controller
class:上一步创建的「fine-nginx」实例
转发配置:工程的通信协议(http)、访问路径(/webroot)、后端服务(fr-headless)、服务端口(8080)
5.4 访问帆软应用
此时即可访问fr工程。
1)获取访问路径
登录 容器服务控制台,在左侧导航栏中选择「集群」,单击目标集群 ID,进入集群详情页。
选择左侧菜单栏中的「服务与路由>Ingress」。
查看fr组件的后端服务地址,在后面拼接/decision,即为工程实际的访问地址。
例如后端服务地址为http://ip:port/webroot,则工程访问地址为http://ip:port/webroot/decision
2)访问工程
根据上一步得到的工程访问地址,即可登录帆软工程进行访问。