Kubernetes 是一个开源的容器编排平台,被广泛用于容器化工作负载的管理,支持多云、多区域的部署,有助于实现高可用性和弹性。
ACK 是阿里云提供的容器服务,基于 Kubernetes 构建。它允许用户在阿里云上轻松部署、管理和扩展容器化应用程序。
本文简单介绍如何在 ACK 中部署帆软应用
(FineReport、FineBI、FineDataLink)。
|
序号
|
步骤
|
简介
|
|
此部分均为准备操作,旨在准备好容器安装所需的镜像和空间。
除获取部分帆软镜像以外的其他操作,如有问题或需使用指导,建议查阅阿里云帮助文档或联系阿里云售后支持。
|
|
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工程,正式使用
|
在容器化部署中,镜像仓库用于管理、存储和共享容器镜像,因此在正式部署之前,用户需要先将镜像推送到镜像仓库中。
本文以阿里云镜像仓库为例,演示镜像推送的过程。
注1:除 2.1 节需联系帆软获取镜像,本章节其他步骤如有问题,或需使用指导,建议查阅阿里云帮助文档或联系阿里云售后支持。
注2:用户如另有镜像仓库,请自行调整操作步骤。
如需部署帆软应用,请联系帆软技术支持,获取以下容器镜像和镜像版本号。
所需镜像
|
是否必需
|
说明
|
bi6/fr/fdl
|
必需
|
FineBI/FineReport/FineDataLink的工程节点组件,其中不带任何的demo数据
|
|
app-init
|
必需
|
执行初始化任务,预加载数据,设置文件权限、从外部获取配置信息等,确保帆软应用
在启动时处于一个良好的状态
|
|
elasticsearch
|
可选
|
替换帆软应用中原有的swift作为日志存储
对项目中FineReport、外接数据库、业务库和其他集群组件的请求进行采集
|
1)创建命名空间
创建一个命名空间,该命名空间用于存放帆软提供的所有镜像仓库。
建议帆软所有应用涉及的组件,均存放于该命名空间中。
-
登录
容器镜像服务控制台
。在顶部菜单栏,选择所需地域。在左侧导航栏,选择实例列表。
-
在实例列表页面单击目标企业版实例。(若无企业版实例,可参考阿里云文档创建:
使用企业版实例推送和拉取镜像
。)
-
在企业版实例管理页面选择「仓库管理>命名空间」。单击「创建命名空间」。
-
设置命名空间名称、是否自动创建仓库、默认仓库类型。单击「确定」。即可在该实例下创建一个命名空间。
2)创建镜像仓库
创建镜像仓库,用于存放帆软提供的各个镜像,如有多个镜像,需创建多个镜像仓库。
-
登录
容器镜像服务控制台
。在顶部菜单栏,选择所需地域。在左侧导航栏,选择实例列表。
-
在实例列表页面单击目标企业版实例。选择「仓库管理>镜像仓库」。
-
点击「创建镜像仓库」,
选择上一步创建的命名空间,建议根据镜像名称设置仓库名称。
-
点击「下一步」,选择代码源为「本地仓库」,点击「创建镜像仓库」即可。
2.3 推送镜像
点击对应镜像仓库后,即可查看仓库镜像指南相关指令。
请参考该镜像指南,将2.1节帆软提供的组件镜像推送到阿里云镜像仓库中。
详情请参见阿里云文档:
使用企业版实例推送和拉取镜像
当镜像仓库中出现对应版本的镜像信息时,说明镜像已成功推送。
3.1 新建集群
当使用容器服务时,需要先创建阿里云ACK集群,容器服务运行在集群中。一个集群由若干节点(云服务器)构成,可运行多个容器服务。
3.2 新建命名空间
一个 Kubernetes 集群支持设置多个命名空间(Namespace),每个命名空间相当于一个相对独立的虚拟空间,不同空间的资源相互隔离互不干扰。
建议同一帆软应用下的所有组件,安装在同一阿里云集群的同一命名空间下,且该命名空间中不再安装其他组件,实现多应用之间的资源隔离。
本节演示,在阿里云集群中,新建一个名叫 fanruan-test 的命名空间(如果已有命名空间,可跳过本节)。
-
登录
容器服务管理控制台
,
单击集群名称进入集群。
-
在左侧导航栏单击
「
命名空间与配额
」
,单击「创建」。
-
在创建命名空间页面中,设置名称为「fanruan-test」。点击「确定」。
详情请参见阿里云文档:
管理命名空间与配额
3.3 新建保密字典
保密字典
可用于存储密码、令牌、密钥等敏感信息,降低直接对外暴露的风险。在下文 yaml 文件中需要用到。
登录
容器服务管理控制台
,
在左侧导航栏中选择「集群」,单击目标集群 ID,进入集群详情页。
在左侧导航栏选择「配置管理 > 保密字典」,选择所属命名空间后,单击右上角的创建,配置信息即可创建。
配置项
|
说明
|
|
名称
|
自定义名称
|
|
类型
|
选择「私有镜像仓库登录密钥」
|
|
镜像仓库
|
手动填写
2.2节创建的镜像仓库地址前
缀
例如:fineops-registry.cn-hangzhou.ce.aliyuncs.com
|
|
用户名密码
|
登录阿里云的用户名密码
|
详情请参见阿里云文档:
管理保密字典
3.4 创建存储类
集群的存储管理是保存业务数据的重要组件,如果已有可用存储,可跳过本节内容。
本节演示,在阿里云集群中,新建一个名叫 data 的 storageclass 作为帆软应用的存储。
详情请参见阿里云文档:
存储
在执行下文创建帆软应用操作前,请先自行部署相关组件,确保工程启动所依赖的组件均完备。
组件可部署在3.2节创建的命名空间中,也可自行安装在其他服务器空间中,只需确保和该命名空间可内网联通即可。
组件
|
镜像
|
说明
|
|
配置数据库
|
自行准备
|
组件作用:
作为工程的外接配置库(即finedb)。存储系统相关配置信息,包括:平台目录、定时任务、用户权限等
是否必需:
可选,强烈建议安装
建议准备
MySQL8 类型数据库
支持的数据库类型包括:M
ySQL5、MySQL8、Oracle
信息准备:
请记录下数据库表空间的URL、模式、用户密码等信息
|
|
状态服务器
|
自行准备
|
组件作用:
作为集群的状态服务器
是否必需:
单机无需,集群
必需
支持的状态服务器类型包括:Redis单机、Redis集群
信息准备:
请记录下Redis的IP、端口、密码等信息
|
文件服务器
|
自行准备
|
组件作用:
作为集群的文件服务器
是否必需:
单机无需,集群
必需
支持的文件服务器类型包括:SFTP、FTP、共享外部目录
信息准备:
请记录下文件服务器的访问信息
|
|
elasticsearch
|
帆软提供
|
组件作用:
作为帆软应用的日志存储(即logdb)。
对工程、外接数据库、业务库和其他集群组件的请求进行采集
是否必需:
可选,集群强烈建议安装
如安装,
则取代帆软应用中原有的swift,作为日志存储
如不安装,将启用帆软应用中原有的swift(logdb)进行日志存储
信息准备:
请记录下
elasticsearch
的
IP、端口、用户密码等信息
|
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节的保密字典
|
|
storageClassName
|
请修改
storageClassName
值为3.4节存储类名称
|
5.2 YAML创建资源
使用 YAML 文件创建资源的主要作用是定义和配置 Kubernetes 集群中的各种资源。这些资源可以包括应用程序的部署、服务、持久卷声明、配置映射、Ingress规则等等。
-
登录
容器服务管理控制台
,
在左侧导航栏中选择「集群」,单击目标集群 ID,进入集群详情页。
-
在左侧导航栏选择「工作负载>有状态」,
选择所属命名空间。
-
单击右上方「使用YAML 创建资源」按钮,将上节生成的 YAML 文件内容拷贝进来,点击「创建」即可。
5.3 新建 Nginx Ingress
用户需要为 Kubernetes 集群创建一个流量管理器,用于处理从外部进入集群的所有请求。
用户需要同时配置 NginxIngress 组件和创建适当的 Nginx Ingress 实例来实现流量控制和路由。
1)安装 NginxIngress 组件(如果已经安装,可跳过)
2)确认阿里云ACK集群域名
3)新建
Nginx Ingress 实例
-
登录
容器服务管理控制台
,
在左侧导航栏中选择「集群」,单击目标集群 ID,进入集群详情页。
-
选择左侧菜单栏中的「网络>路由」,选择所属命名空间后,单击「创建 Ingress」,在创建 Ingress对话框配置路由。
-
网关类型选择「Nginx」;名称自定义;域名填写上一步获取的,其中*改为组件名称;路径修改为/webroot,端口设置为8080
详情请参见阿里云文档:
创建Nginx Ingress
5.4 访问帆软应用
此时即可访问fr工程。
1)获取访问路径
-
登录
容器服务管理控制台
,
在左侧导航栏中选择「集群」,单击目标集群 ID,进入集群详情页。
-
选择左侧菜单栏中的「网络>路由」,选择所属命名空间。
-
查看fr组件的规则地址,在后面拼接/decision,即为工程实际的访问地址。
-
例如后端服务地址为
http://ip:port/webroot
,则工程访问地址为
http://ip:port/webroot/decision
2)访问工程
根据上一步得到的工程访问地址,即可登录帆软工程进行访问。