1. 概述编辑
2. 准备镜像编辑
在容器化部署中,镜像仓库用于管理、存储和共享容器镜像,因此在正式部署之前,用户需要先将镜像推送到镜像仓库中。
2.1 使用前提
用户在进行本节操作之前,需自行准备好镜像仓库,用于存储帆软应用镜像
2.2 获取镜像
如需部署帆软应用,请联系帆软技术支持,获取以下容器镜像和镜像版本号。
注:FineBI中自带FineReport、FineDataLink功能点,FineReport中自带FineDataLink功能点。
所需镜像 | 是否必需 | 说明 |
---|---|---|
bi6/fr/fdl | 必需 | FineBI/FineReport/FineDataLink的工程节点组件,其中不带任何的demo数据 |
elasticsearch | 可选 | 替换帆软应用中原有的swift作为日志存储 对项目中FineReport、外接数据库、业务库和其他集群组件的请求进行采集 |
filebeat | 可选 | 与elasticSearch组件配套安装,用于抓取工程日志到elasticSearch |
skywalking_opa | 可选 | 与elasticSearch组件配套安装,用于提供链路追踪功能 |
2.3 推送镜像
请将获取的镜像包上传到镜像仓库中。请记住镜像最终的存储地址和版本号。
1)登录到镜像仓库
使用 docker login 命令登录到你的镜像仓库。你需要提供用户名、密码和仓库地址。
docker login <registry_address>
2)标记镜像
使用 docker tag 命令标记你的镜像,将其命名为包含仓库地址的完整名称。
docker tag <image_name:tag> <registry_address>/<image_name:tag>
例如:docker tag fr:11.0 fr/fr:v11.0.19
3)上传镜像
使用 docker push 命令将标记的镜像上传到镜像仓库。
docker push <registry_address>/<image_name:tag>
例如:docker push fr/fr:v11.0.19
3. 配置集群编辑
3.1 使用前提
用户在进行本节操作之前,需自行使用 Rancher 创建好 Kubernetes 集群。
本节所有操作,均在已创建好的K8S集群中进行。
3.2 创建命名空间
一个 Kubernetes 集群支持设置多个命名空间(Namespace),每个命名空间相当于一个相对独立的虚拟空间,不同空间的资源相互隔离互不干扰。
建议同一帆软应用下的所有组件,安装在同一K8S集群的同一命名空间下,且该命名空间中不再安装其他组件,实现多应用之间的资源隔离。
本节演示,在K8S集群中,新建一个名叫 fanruan-test 的命名空间(如果已有命名空间,可跳过本节)。
1)创建项目
进入集群,点击「集群>项目/命名空间」,点击「创建项目」,创建一个名叫「fanruan-ops」的项目。
2)创建命名空间
在「fanruan-ops」项目中,点击「创建命名空间」,创建一个名叫「fanruan-test」的命名空间。
3.3 生成YAML
在 Kubernetes 中,用户可以使用 YAML 文件来定义和创建各种资源。
本节提供必要的信息清单,请参考下表逐项对照收集。收集后的信息请提供给帆软技术同学,协助生成正式的 YAML 文件。
信息 | 说明 | 示例 |
---|---|---|
镜像 | image imageTag | 2.3节上传的镜像仓库地址和版本 例如:fr:11.0-20230914 |
imagePullSecrets(可选) | 镜像拉取凭证 | |
应用名 | fullnameOverride | 待创建的应用名称,自定义 例如:fr |
存储(二选一) | data.volumeClaimTemplates.storageclass | 1)选择使用动态存储 2)准备一个 storageclass 名称,作为帆软应用的存储,自定义 例如:data 3)按需准备 storage 大小,可不填 |
data.volumeClaim.claimName | 1)选择使用静态存储 2)volumeClaimTemplates.enabled值为false 3)准备一个claimName ,作为帆软应用的存储,自定义 例如:data | |
用户 | serviceAccount.create serviceAccount.name | 建议使用默认配置,创建一个应用同名用户 |
服务 | service.enabled | 建议使用默认配置,创建一个应用同名服务 |
ingress(可选) | ingress.enable ingress.className | 1) 选择创建一个ingress ingress.enable=true 准备一个ingress.className,自定义,例如:fr 2)选择不创建ingress ingress.enable=false,后续也可手动创建 |
3.3 创建工作负载
StatefulSet是为了适应有状态应用程序而设计的,通过为每个Pod提供唯一的标识和有序的部署,它提供了更好的稳定性和可维护性。
1)创建Headless服务
StatefulSets通过Headless服务为每个Pod提供了唯一的网络标识。这对于需要节点间通信的应用程序非常有用。
选择左侧「服务」,点击「创建」,创建一个「Headless」服务。
选择3.2节创建的命名空间「fanruan-test」,自定义服务名称为「fine-nginx」,设置服务端口,点击「创建」即可。
2)创建statefulset工作负载
StatefulSet适用于需要持久化存储和唯一网络标识的有状态应用程序,推荐使用。
在 Kubernetes 中,用户可以使用 YAML 文件来定义和创建各种资源。
本节提供必要的信息清单,请参考下表逐项对照收集。收集后的信息请提供给帆软技术同学,协助生成正式的 YAML 文件。
信息 | 说明 | 示例 |
---|---|---|
镜像 | ||
image | bi6/fr/fdl镜像仓库地址 | |
imageTag | bi6/fr/fdl镜像版本 | |
imagePullSecrets | 镜像拉取凭证 | |
工作负载 | ||
namespace | 命名空间名称 | |
headless | headless服务信息,包括: 服务名称、目标端口、协议类型 | |
StatefulSet | 工作负载信息,包括: 负载名称、容器名称、容器端口 | |
存储 | ||
存储卷名称 | ||
持久卷声明 | ||