银行基于云原生架构的 DevOps 建设实践经验.docx
背景和需求分析在银行业金融科技的创新过程中,计算基础架构的根基以及应用开发与运营的方式都已发生了翻天覆地的变化.基础架构、平台软件、分布式应用、容器和云原生技术架构,以及适应快速、迭代式应用开发的文化和流程等这些快速发展的技术和方式正在迅速整合,形成一种新型的IT省理方法,并为企业发展所依赖的关键传统型IT架构提供有益补充.全球云计算技术发展历经20年,历经虚拟化时代、传统云计算时代演变为至今的云原生技术时代."云"中的资源可SS时获取,按需使用,按使用付费,可无限扩展,这种特性被称为像水电一样使用IT基础设施.云原生架构是基于云原生技术的一组架构原则和设计模式的集合,旨在将云应用中的非业务的技术组件部分进行最大化的剥商,从而让云原生设施接管应用中原有的大取非功能特性(如弹性、安全、可观测性、灰度等),使业务不再有非功能性业务中断困扰的同时具备轻量、敏捷、高度自动化的特点.云原生架构的典型技术代表是容器技术与KUberneteS编排调度技术,在企业的数字化转型过程中,两者也成为云原生时代下的新型PaaS平台计算基础架构的根基.DevOps(Development和Operations的组合词)起源于2007年,是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合,它是一种重视“软件开发人员(Dev)"和IT运维技术人员(OPS)"之间沟通合作的文化、运动或惯例。通过自动化”软件交付"和"架构变更"的流程,来使得构建、测试、发布软件能终更加地快捷、频繁和可靠。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运维工作必须紧密合作.DevOps优势明显:能够对各种修改需求做出快速的反应、能终实现灵活的安全部署与编排、能够建立完善的协作与沟通柒道、能够快速地识别出代码中的错误或混同、开发团队聚焦关键问题,不必过度专注于各项安全功能.既然云计算和DevOps技术都历经发展了多年,每家金融机构目前所处于的云计算和DevOps建设阶段可能各不相同,如何能全面红盘整个技术的演进历程,不走无谓的弯路和老路,紧跟云原生技术的发展趋势去做云原生化DevOps尤为市要.但在如今开源技术社区的云技术和DevOps系统种类非甫之多,如何高效、低成本、安全合规且符合技术潮流等多重维度来选型相应的工具系统对于企业进行数字化转型尤为蚤要.还有金融互联网业务如雨后春笋发展迅猛,对于业务产品上线速率和用户体验尤为重要,对于灰度发布技术栈的选型和实践也急需提上日程.最后金融级云原生容器云建设如何满足生产级别要求,对于容器化和非容器化系统共存且都应用微服务平台的架构下,如何做网络插件选型改造,针对以上需求痛点进行以下内容分享.二.“传统"DevOps如何技术演进为“云原生”DevOpsDevOps关键技术发展历程经历了四代,第一代是基于物理机/独立虚机技术的时代缺点较多,如资源环境交付:资源环境的搭建与应用部署过程割裂开来,创建系统资源环境效率低、耗时、风险高,系统变更需睁态配置结合人工作调;应用软件交付的周期长、迭代慢,且手工配置、自动化率低,不能可视化交付,不能以环境+系统为单位交付。第二代是基于IaaS技术的时代优势明显,可一键自动化:创建环境到部若安装应用组件整个过程的一犍创建和部善,资源和应用同时交付,扩缩容后服务自动注册;集群感知能力强:IaaS资源可编程接口实现集群感知,自动协调控制、动态配2S,可提商开发测试和交付的效率.第一代和第二代可定义为"传统"DevOps时代.第三代是基于容器技术的时代,容器技术的轻量级和迁移便捷性体现的淋漓尽致。应用暗云迁移性:迁移后环境一致性,迁移部署速度快,一次打包、到处运行;轻星级交付能力强:快速弹性伸缩、提高资源利用率、故障自动迁移.第四代是基于云原生技术的时代,全面体现在全栈自动化和云原生工具生态能力类.全栈自动化体现为:流水线自动化、故障自愈、支持跨数据中心调度、以整套环境为单位交付;云原生工具生态丰富:K8S原生类Q/CD系统、服务可视化编排、滚动升级发布、流量接入/灰度发布能力.第三代和第四代可定义为"云化"DeVoPS时代。独丽云OMiCfiagRg¾n*jwu(三w3MMmM0>*m4-11.MtttT“传统"DeVoPS和"云化"DeVoPS的区别数踞Oogcz :CUMSMMTKKS0ZCDMi三M*cm*于自;技术的时代SS于云霞生技术的时代Mi4W e恰内mh;SMazMDM云原生和DevOps的结合实践江苏苏宁银行DevOps总体架构江苏苏宁银行DevOps总体架构是以平台为支撑,以流程为引擎全面打造金融级云原生DeVoPS平台架构。从底至上分为三层,支掾平台层:管理DevOps流程中涉及的各类资源,包括代码管理、持续集成、配笈文件、应用实例等,同时提供部署、配笆等OPS服务.自动化流程引擎层:面向可编排任务流程,提供任务的编俳、配置、执行等功能,通过该流程引擎支撑不同应用的不同DevOps流程,实现DevOps的自定义特性;可自定义流程层:把DevOps流程抽象并具体化成一个个独立的动作,形成标准化DevOps流程.苏宁银行DeVoPS总体架构HGtWtG3»OPU0M齐IKt40ZHaHlGgMBJWMn,.伊俣号fir*.UWTg.aqjuiq.MDvOp三rnftm三cvp<rsa*trnrRaaeflwG=IWMH,K三WOhW.江苏苏宁银行DevOps系统选型分析上面介绍了"云化"DevOps时代的技术能力,但在当今市面上开源的DevOps系统工具种类繁多,如何正确、高效且符合云原生技术发展趋势等多田维度来选型DevOps工具系统对于企业进行数字化转型尤为电要。那么云化DevOps系统到底是什么?对比分析开源界主流DevOpsCI/CD工具系统Jenkins作为老牌CI/CD工具具备一定的技术历史背景,但明显感觉太重、JenkinS的PiPeIine语法学习成本较高、非kubernetes原生态工具Spinnaker持续交付平台,是一款专注于多云平台的CD平台,功镭专注于持续交付,对于CI/CT并不擅长;Gitlab虽带有CI/CD系统,但非kubernetes原生,考虑低相合设计,为避免和Gitlab耦合,不想用gitlab-ci;Tekton是Google开源的kubernetes原生CI/CD系统,作为CDF四个初始项目之一、基于kuBernetesCRD可自定义的pipeline流水线,但在工作流控制上的支持较弱;Argo则是一款遨循声明式GitOps理念的持续部署工具,应用定义、配舌和环境信息是声明式的且可以进行版本控制,应用部署和生命周期管理是全自动化的且可审计,支持对多环境、多Kubernetes集群上的应用进行统一部罟和管理.结合以上分析,我们选择Tekton+ArgoCD进行云原生的DevOps实践.江苏苏宁银行Tekton+ArgoCD实段-场景准备工作:1.准备GitRepoTektonPipeline,appcode,kubernetesdeploy三部分2、安装Tekton/ArgoCD客户端、TektonOperator.ArgoCDOperator?QArgoCD服务端环境3、创建ArgoCD的应用4、创建TektonPiPeiine5、允许TektonPipeline更新InfraRepo中的内容6.创建WebhOOk并配舌CodeRePO的WebhoOk7、运行TektonPipeline手动执行tknpipelinestartGitlab上修改及提交Code,Webhook触发场景描述如下:应用代码放在CodeRepository中,代码变化后会通过Webhook触发Tekton的Pipeline运行.Tekton的Pipeline先从CodeRepository中获得应用代码然后Build成Imager随后将应用Image推送到容器云平台内部的ImageRegistry中.最后再更新InfraRepository中的部署配署.ArgoCD发现InfraRepository中的部署配置发生变化后自动同步到容器云平台。容器平台根据新的部署配置从其内部的ImageRegistry获取最新的应用Image,然后部署到容器云平台.ArgoCD+ArgoRollouts支持blue/green.canary多种部署方式,结合开源的keptn做SU/S1.O及自动化测试.基于Argocd-Rollouts进行blue/greencanary发布在云计算技术或云原生技术出现之前,一些互联网公司也有灰度发布的需求,也会用基于一些开源工具做定制化研发,如使用NginX等,使用其定制开发一些基于RequestHeader流量切分、基于服务权室的流量切分、基于Cookie的流量切分等的规则引擎.目前业内流行的blue/green.Canary发布技术有几类,引入和改进适合自身场景的灰度发布技术很电要.如可以使用服务网格Istio的IstioGateway+VirtuaIService+DestinationRuIe做灰度发布,但由于Istio自身技术栈具体有一定深度,要全面掌握其技术运用和维护需要一定的成本,故只为了进行灰度发布选用IStiO会导致学习成本和应用成本过高;另外也可以基于K8S的Ingress进行配芭IngressAnnotations来实现不同场景下的灰度发布和测试,其本质就是Nginx的应用;第三类则是使用基于Argocd-Rollouts进行blue/greencanary发布,既然我们选择使用Tekton+ArgoCD做DevOps系统工具,为保持技术栈统一则继续深度使用基于云原生的Argocd-Rollouts进行灰度发布.提前编写好yaml编排文件,发布流程如下:基于Arg。Cd-RoHoUtS迸行bhe/greenCanary发布SNBRcyw发布流程瓯本全帮(一)下线新旧灰度对比在使用了云原生灰度发布技术后,很大程度上改进了原灰度系统的不足,改善了用户业务系统体验,提升了代码发布质量和业务投产效率.新旧灰度对比三¾!3新旧灰度对比原灰度系统新灰度发布版本发布费8U%二户口SJ1W力*H2行他本即加(*«系统中断».夜色球WWHS中.M*>三urWWWMT<5田Q休蛤waci*三Ga*-wJukmp与至RrgP.好"码用1.y亚IKMKiw3。eQttm.PB>?田靖H,第"照8蚣蛔太向泪JMjm切IQ.令MJW拿Ml左JncFW.城CiiWX5eS.M1.Sb"版小回IaKJwWMrMMWl»徐坨生Ild:JXU8nWa无<*MC.3或8T,孑*a<d*X三WU*IlfiHlxrWtmt3MI专划而无.>*对口及RtR>也优力>0,N,*EasB四、金融生产级云原生容器云平台的优化江苏苏宁根行云平台总体架构江苏苏宁银行在南京有两个数据中心,基于双数据中心的基础设施之上构建云计算平台,从底而上的分为四层:底层是基础设施平台,含计算服务器、存储、网络、安全设备等,双数据中心基础设施池化;基于底层基础设施平台构建云计算IaaS层,技术栈分为开源栈OpenStack云平台和闭源栈VMware云平台,两者形成统一混合资源池,资源申请无需关注底层是何技术栈,双数据中心网络二层打通,跨数据中心可迁移云主机;基于IaaS层资源池构建云原生容器云平台;顶层通过多租户管理体系设计统一云管管理和编排调度各类资源,并提供丰者的服务目录含各资源管理类、DeVoPS类、监控运维类,以此满足金融业的服务指标、服务目标、服务质髭等级等.®苏宁再行、UAHXMK云8平台99ynffl<SU)苏宁银行云平台总体架构金融云原生容器云建设以上生产为目标如我们是以上生产为目标,列举几个原则:1.尽量不改变现有生产网络架构模式、不改变生产系统IP地址以及防火墙策略.使现有的防火墙规则对K8S集群中的POD也生效,那么可以使用macvlan这种网络模型,这样PODip和宿主机属于同一网络平面,既所有的网络流量都会经过现有交换机和防火墙(这种场景下可以简单的理解为POD就是虚拟机),需要提前规划足够多的IP地址资源池来给后面所有的POD使用.使用macvlan最大的问题:受技术原理限制(主要是UnderIay2层流量不经过宿主机的3层及以上的协议栈,报文没有用iptables,ipvs处理,所以K8s里的Service.QoS.Networkp。IiCy没法实现),二是需要开启混杂模式,这种模式下会造成网卡过多的接受非自身处理的数据包.2、还用要考虑集群内部的网络安全策略以及QoS,虽可通过Calico的Networkpolicy来配普ipvs来实现,但原生Calico均是命令行,操作不方便和易出错.3、需要考虑集群内POD与第三方外围系统(如虚机某端口)安全策略(如核心生产区到外联DMZ区或者核心生产区到互联网DMZ区,需要开点到点的防火墙策略,源和目的都是物理IP),用macvlan也可以解决此需求,但不支持Service4、金融场景下可考虑使用Iinuxbrige-vlan模式解决以上痛点.需要考虑的底层技术栈有根多由于金融业对生产系统的高可用、稳定性、性能、安全等要求较高,故云原生容器云要达到生产级别的要求需要考虑、优化解决的底层技术问题有很多,现仅举例如下:I,K8S中CPUNUMA调度能力优化2、K8S集群调度能力优化,如:宿主机宕机场景后的调度策略3、K8S管理Node的能力4.弹性伸缩CA、HPAxVPA能力优化5、拉取镜像规则:空负载服务器、有负载服务器,计数器规则、就"近"原则6、东西向QoS,Networkpolicy,可视化操控等7、IPAM能力网络定制8、APlSerVer/ETCD性能优化9、Harbor需要做双Harbor进行同步,保证镜像仓库高可用10、Etcd要用ssd做加速,做两个etcd集群,把存储的数据按事件类型不同分别读写不同的集群11、还有很多.苦于Kubemetes构建的云原生DevOps容41云底座DevOps基础架构监控中心DeVOPS基础架构监控中心可全面监控KUberneteS各大组件的核心参数如EtCd的库大小、客户端流最、gRPC流式消息、WA1.日志同步时间、库同步时间、Raft提议等;APISerVer的请求延迟时间、每秒请求数等;调度器监控调度次数、调度速率、调度延迟等,可视化监控粒度之细、监控参数之全面性在K8S的监控领域并不多见.5sIRj5ND苏宁银行DeVoPS基础架构监控-ETCDSNBJStTtRli3«MMC苏宁银行DeVoPS基础架构监控-调度器苏宁银行DeVoPS基础架构节点用员排行®呼宁擀行tulcAtIMB*1_0一.),6*OaM.mC«MMS3*57-.Ji.6=-CBEl*.m.7*6MIS-OB*9.t»62-S-2大一*.,Ces*C.*CnCS-9.*.-*X-AAJBTCDevOps项目管理DevOps项目管理可以根据企业空间、用户空间、项目命名空间等有效规划和隔需各类资源和对象的抽蕊集合,便于DeVoPS项目日常常理和运维操控.苏宁银行DeVoPS项目管理江苏苏宁根行DevOps+容器云实践效果容器云实践效果极大程度的节源提效:资源利用率提升60%,服务器/机柜成本下降60%,且在生产环境各场景下发挥自动化和应急的重要作用,具体如下:云原生DeVOPS实践效果环境交付、版本发布周期提速2-3倍;提升投产质量,提升用户体验,具体如下:苏宁银行DeVOPs+容器云实践效果SNBt55tWtiuc.a>s坏Ia交付、版本发布w三iS2e8S»T»B»rCBS*tJKaT-aac三r3否SUt.Man9««*im>a3M.ne>,丽如gwuuenHzzrcaiUegHiaHW9-Sraw(i9mftiUrntwR三OM1M“应!AIA三。,津人1/40TU2Xf8<tOS;.mw乃Ce>Cp¾XJI9caMAJMr1研爆升投产陵星,提升用的的五、基于云原生的DeVOPS技术趋势云原生技术已逐渐成为金融科技行业的技术标配,DevOps技术也已发展有十几年,两者的强强联手、有效结合必将是金融业数字化转型的利器和必经之路。基于云原生的DevOps全行业技术趋势预测为:DeVSeCoPS将被优先考虑、将更广泛的深度使用Kubernetes,从CIpipeline转移到DevOps组装线、强调SerVerIeSS架构、AI助力DeVoPS团队实现自动化、G。Iang将更受欢迎.银行是非常生视安全合规的机构、金融互联网产品发布快目奥视用户产品体验、在金融领域会全面使用金融Al技术,因此江苏苏宁银行会更点关注DevOps的安全、基于云原生的灰度发布回滚技术使用、金融AI助力DevOps等方面.基于云原生的DeVOPS技术趋势在宁谓行银行的关注点: