帖子
帖子
用户
博客
课程

一文读懂YonBIP旗舰版多云适配

YonBuilder应用构建 2024-1-20 16:26 265人浏览 0人回复
摘要

### 背景 站在厂商的角度,会在产品出场时带着一套默认的技术PaaS平台底座。 站在客户的角度,会使用不同厂商的产品,而每家厂商的产品底座不尽相同,因此每家客户会面临一个问题: - 各类数字化资产统一运维 基于此 ...

背景

站在厂商的角度,会在产品出场时带着一套默认的技术PaaS平台底座。
站在客户的角度,会使用不同厂商的产品,而每家厂商的产品底座不尽相同,因此每家客户会面临一个问题:

  • 各类数字化资产统一运维

基于此,客户方会考虑使用统一的技术PaaS底座,以便:

  • 降低运维复杂度
  • 提升各数字化系统的运行稳定性

基于上述面临的问题,客户方的数字化中心在统一技术PaaS平台底座时需要统一管理以下事项:

  • 容器平台
  • 各类中间件
  • 数据库
  • CI/CD
  • 监控
  • 日志

对于厂商而言,就是要在每个项目之中对于客户的技术PaaS平台底座进行适配,即多云适配。用友目前支持的PaaS平台包括阿里云ACK、华为云CCE、腾讯云ETK、红帽OCP、通用kubernetes等云平台容器引擎。

二、外接场景

用友YKS-K8S已成功外接适配华为云ServiceStage和CCE、红帽OpenShift、阿里云EDAS和ACK、腾讯云TSF和TKE、开源K8S容器引擎,健壮了云原生技术底座多厂商云适配。

2.1用友YKS-K8S容器平台

用友YonBIP产品出厂默认自带一套YKS,其基于开源K8S为底座,增加了DevOps、微服务治理等一体化的一键部署功能,实现了计算资源虚拟化和弹性伸缩,为用户提供资源管理、容器服务、持续集成、持续交付。同时通过内置外接K8S插件适配了不同厂商容器平台。

图1:用友YKS-K8S集成图

2.2开源K8S容器平台

K8S全称 Kubernetes,是一个用于容器管理的开源平台,由Master和Node组成的架构,其中Master节点是整个集群的大脑,Node节点用来运行Master节点调度的应用。

图2:开源K8S架构图

2.3外接K8S容器平台

面对不同厂商的产品技术PaaS底座和其已有统一的技术PaaS底座时,为提升数字化系统的运行安全、稳定性、降低运维复杂度、达到资产统一管理,通常会要求厂商在项目中适配客户有的技术PaaS平台底座。在微服务系统架构中以外接适配K8S容器平台为核心。

2.3.1 获取权限文件

Kubeconfig文件是用于配置Kubernetes集群访问的重要权限文件。它包含了与Kubernetes API Server交互所需的信息,如API Server的地址、集群CA证书、用户名和密码、以及访问集群所需的Token等。

外接K8S容器平台首先需要获取kubeconfig授权文件,实际项目应用中容器平台通常分为独享K8S集群资源和共享K8S集群资源两种。

  • 独享K8S集群资源:即K8S集群资源仅供单个项目使用,kubeconfig文件可以提供全部权限。

申请方式:直接向客户申请kubeconfig管理员权限。

  • 共享K8S集群资源:即K8S集群资源让客户所有项目共享使用,kubeconfig文件只能按需提供最小权限。

申请方式:用友提供YonBIP实际需要的role和clusterrole具体权限列表文件给客户生成此权限文件。

2.3.2 部署用友微服务

获取了kubeconfig授权文件,默认方案用友内置插件通过此权限文件可连接调用外部K8S平台部署微服务,YonBIP平台涉及微服务按功能可划分为三类,即负载均衡微服务、技术平台微服务、应用平台微服务。

图3:用友微服务分类

1.负载均衡微服务:一个连通容器内外的组件,可将集群内部的请求转发到集群外,从而可以把服务映射到集群外部,用友默认使用nginx-ingress-controller微服务实现并做了部分自定义增强功能。已适配项目使用的负载均衡一般可分为三种类型。
第一种:使用用友提供的nginx-ingress-controller微服务实现(推荐)

第二种:使用客户提供的ingress-controller微服务实现,但无法实现分流功能

第三种:经过客户外部LB代理到用友提供的nginx-ingress-controller微服务实现

适配用友ingress-controller微服务需提前给选定节点打标签、手动推送镜像并添加docker-registry类型secret文件,默认使用hostNetWork模式开启80和443端口。同时用友ingress-controller内置LUA脚本实现了微服务实例分流功能。
2.技术平台微服务:提供DevOps持续集成、实现系统监控和日志收集等功能。
3.应用平台微服务:提供YonBIP业务功能、实现用户具体需求的微服务,例如业务中台服务、友互通、低代码开发平台、友企联、大人力领域、供应链领域...等等。

2.3.3 微服务资源适配

Pod生命周期中从开始创建到最终销毁所需资源适配总共分为如下五种,即需要节点选择标签做调度,磁盘挂载做存储,域名解析做访问,镜像仓库认证做下载启动,日志存储做维护。因而每种资源都需要客户平台提供做相应适配。

图4:微服务资源适配

1.节点标签
节点选择标签(Node Selector)是Kubernetes中用于将特定的Pod调度到特定的节点上的一种调度策略。通过在Pod定义中添加一个或多个标签选择器,可以指定Pod应该调度到具有相应标签的Node节点上。

  1. Nginx-ingress-controller负载均衡微服务所需标签示例

kubectl label nodes [节点名称] node-role.kubernetes.io/ingress=true

  1. 技术平台微服务所需标签示例

kubectl label nodes [节点名称] node-role.kubernetes.io/system=

  1. 应用平台微服务所需标签示例

kubectl label nodes [节点名称] "资源池ID"=c87e2267-1001-4c70-bb2a-ab41f3b81aa3

2.磁盘挂载

服务磁盘挂载是指将存储设备(如硬盘或共享资源)上的计算机文件和目录挂载到微服务中,使这些文件和目录可以通过微服务的文件系统进行访问。在微服务架构中,各个服务通常独立部署在不同容器或虚拟机上,因此需将存储设备挂载到每个服务容器或虚拟机上,以确保各个服务能够访问所需的文件和目录。

图5:YPR制品仓库和流水线磁盘挂载

YPR制品仓库和流水线在yonbip名称空间下需要提供两个名称是yprsetting和iuapypr模式为ReadWriteMany的PVC。

3.域名解析

在微服务架构中,服务之间的通信通常依赖于主机名和端口号。通过将服务的主机名解析为IP地址,可以方便地实现服务之间的通信。作为K8S集群DNS解析方式,有多种组件将服务的域名解析为IP地址。

图6:微服务内域名解析流程

分为两种情况,一种是甲方提供,我们可以随便添加域名解析记录;另一种是审批严格,不允许添加内部系统使用的域名。
(1) 针对第一种情况,我们可以不自建DNS服务,采用外接方式部署DNS组件。
手动将我们需要用到的域名注册进客户的DNS域名解析服务。 比如 ingress用到的域名、技术中台、业务中台域名、nexus域名、监控组件用到的域名等等。

  • 甲方提供的技术中台/业务中台域名解析,需要甲方DNS解析提供实际用户访问;
  • 用友产品使用的域名解析,需要甲方DNS提供用友产品内部访问;

*.iuap-yks.local -> 应用平台和领域用ingress域名,解析到[外接 K8S的Ingress主机|有多个配多个]

*.yyuap.local -> 技术平台用ingress域名,解析到[外接 K8S的Ingress主机|有多个配多个]

nexus.yyuap.local -> 解析到[安装器主机IP]

(2) 针对第二种情况,用友安装器自建DNS组件。

用友产品内部访问的域名解析在自建DNS配置解析,技术中台、业务中台的域名解析放到甲方提供的域名解析服务上, 然后将自建DNS的上游DNS设置为甲方提供的DNS。

4.镜像仓库认证

自建镜像仓库或使用云平台镜像仓库无强制要求,保证访问、权限和磁盘空间足够即可。用友微服务镜像默认使用imagePullSecrets认证,若使用云平台镜像仓库需在用友使用到的所有namespace下创建默认名称为c87e2267-1001-4c70-bb2a-ab41f3b81aa3的docker-registry类型secret,否则镜像无法拉取。

图7:imagePullSecrets实现流程
另外微服务生成时的镜像URL地址通过YMS接口获取,外接镜像仓库时必须在安装完YMS后登录点击“iuap”在配置项中修改“镜像仓库平台公共配置”里的镜像仓库信息并下发,以确保后续安装的微服务能正确找到外部镜像仓库信息。

5.日志存储

微服务日志存储是指将微服务应用程序的日志信息存储在可靠的存储介质上,以便后续的分析和排查问题。微服务日志存储是微服务架构中非常重要的组成部分,可以帮助开发人员和运维人员监控系统的运行状态、诊断问题、排查故障和优化性能。

图8:应用微服务日志持久存储

应用微服务日志磁盘挂载默认使用hostPath挂载node主机磁盘/data/logs目录,用于业务日志收集。部分项目可能不允许使用node主机目录作为日志存储,需要客户单独提供共享存储替换现有hostPath方式。

三、未来发展

当下,每家客户的技术PaaS平台底座不尽相同,对于厂商而言需要不断的针对当下流行PaaS平台相关组件进行适配。
未来,PaaS平台是否能够做成统一的技术标准、或者对于不同的PaaS平台组件进行类似拆装机组合的模式进行选配适配,然后基于PaaS组合的套件进行一键式的安装,这些正是当下的技术发展的探索与实践之路。
技术包罗万象,技术永无止境,你我皆兄弟,共同搞定BIP。
下一期技术分享,敬请期待!

本文暂无评论,快来抢沙发!