论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
ToB圈子
›
虚拟化.容器.超融合.云计算
›
云计算圈
›
某券商容器云项目方案设计最佳实践
某券商容器云项目方案设计最佳实践
万万哇
金牌会员
|
2025-3-7 04:01:37
|
显示全部楼层
|
阅读模式
楼主
主题
927
|
帖子
927
|
积分
2781
作者:王作敬 汪照辉
本方案设计基于我们整理的容器云平台可行性分析陈诉,和对容器云平台需求的详细分析和设计,以及在我们和容器云厂商BoCloud博云在容器云项目实施方案根本上整理而成。本文为非正式实施文档,仅用于技能讨论和交换。我们认为这样的文档是容器云平台生产就绪的一个告急尺度,也是和厂商沟通、确认需求和验证功能的告急载体。本文档是容器云项目方案设计主文档,尚有各组件的详细方案设计文档作为补充。
一、容器云平台需求概述
平台需求可以分为功能性需求和非功能性需求两部门。
平台功能需求概述
根据容器云平台项目需求说明书,功能性需求总共分为三个部门,容器云平台管理和资源管理、多租户管理和应用管理,尺度化交付和管理。各部门的关系梳理如下:
平台管理要求具备平台资源管理和资源隔离、租户账户管理、公共镜像库(中心件市肆)、分层安全机制、高可用、易于扩展/更新/迁移能力。预留将来可扩展支持多云管理等能力。重点在于资源管理,具备向租户按需提供根本设施资源的能力。平台管理同时创建租户账号,维护公共镜像仓库和仓库中镜像。
多租户特性需求要求具备租户管理、租户资源管理、租户应用管理、微服务及服务治理、私有镜像库、租户安全等能力。重点是租户应用管理及服务治理能力,以及安全能力。同时提供维护租户下用户、权限、角色、构造架构、分配的资源,租户私有镜像仓库的能力。租户账号由容器员平台管理员创建,租户使用租户账号登录容器云平台租户管理界面,维护租户下的构造架构、用户、角色、权限、资源、应用、服务等。
尺度化交付的对象是镜像,向公共镜像仓库或私有镜像仓库构建镜像。公共镜像是指对所有租户可用的镜像,通常由平台管理员来维护。私有镜像是租户本身的镜像,仅对租户自身可见。同时支持镜像上传下载同步等能力。重点是构建持续集成工具链(使用Jenkins),持续集成止于镜像仓库,以镜像仓库为前言实现持续摆设、持续反馈、持续改进闭环DevOps流程。
根据每部门的详细需求,我们定义平台管理员视图和租户视图,以及持续集成流程实现尺度化交付能力,详细功能如下:
平台初始化之后只有平台管理员账户,租户账户平台管理员按需创建。安全需要覆盖全方位,确保每个层次都具备可靠的安全机制。
容器云平台面临着支持客户中心和服务中心的上线需求。必须建立基于SpringCloud框架的微服务支持。
非功能性需求概述
容器云平台非功能性需求最告急的是安全性、可扩展性和稳定性以及满足业务服务摆设管理的性能需求、用户操作友爱性需求。以满足容器云平台升级、迁移、更新、扩展需求。
可用性:可用性是平台可靠性、稳定性等的综合体现,可靠稳定的平台可用性才高。通常可用性是评判一个平台或体系的最告急维度,可用的平台才气思量性能等其他维度。
可扩展性:可扩展性或者弹性是容器云平台或者云计算平台的价值所在。容器云平台需要提供弹性的根本设施资源,用于业务应用的弹性扩展。
界面友爱:在每一个用户登录后都有个Dashboard来总括该用户的资源分配使用、应用摆设运行、体系组件运行状况等;然后通过链接可以直接跳转查看详情。各环节相关联成为一个闭环。需要注意的是诸如“项目”等是开发测试阶段的概念,在运维过程中统一使用应用或服务。在接纳微服务架构之后,统一是服务和应用建立,不再有“项目”概念,一切皆是服务。服务编排为应用。
性能:性能分两个方面,一是平台的性能需求,另一个是服务的性能需求。平台的性能每每决定着其上摆设的单个服务实例的最大性能。平台的性能每每取决于平台根本设施资源的能力。也就是平台的硬件设施配置。另一方面,服务的扩展能力,负载均衡能力也是实现高性能的告急方式。
二、容器云平台方案设计原则
建立容器云平台的目的是用来承载业务应用的,为了实现IT融合、应急相应、敏捷开发、应用交付、权限认证、弹性伸缩、异常迁移、环境一致性、高可用、网络隔离、资源配额、日记收集、健康检查、监控告警等能力;中远期目的是通过接纳微服务架构、DevOps方法论等逐步构建企业的服务中台。
容器云平台的方案设计需要遵照建立容器云的目的和需求,满足以下设计原则:
高可用原则:关键核心组件,都要求高可用设计、高可用摆设,保障在服务器宕机等故障情况下,应用不受影响。
先进性原则:平台的建立所接纳的技能是业界主流云计算技能,确保平台在一定时间内具备稳定的更新和保持先进性。
成熟性原则: 技能选型确保先进性的技能上,接纳成熟的技能,确保平台功能稳定。
开放性和兼容性原则:尺度化或通用的技能手段兼容主流的装备和体系、软件、工具等。
可靠性原则:提供可靠的计算、存储、网络等资源,在平台、服务、应用、组件等方面实现高可用,避免单点故障,保证业务的一连性。
可扩展性原则:接纳分布式架构,支持在不更改团体架构的前提下进行体系扩容和业务范围的扩展。平台的计算、存储、网络资源等根据业务应用工作负载的需要进行动态伸缩。
松耦合原则:容器云平台架构接纳松耦合架构,平台各组件提供开放尺度的API接口,方便客户已有体系的集成或平台组件的扩展和替换。
安全性原则:安全无处不在。支持覆盖全方位的安全机制。横向:弹性伸缩、负载均衡、异常迁移等;纵向:协议层加密、网关、访问控制、过滤、限流、熔断、禁用root用户运维权限、体系资源用户受限访问、资源隔离、网络策略等。容器云平台应该在各个层面进行美满的安全防护,确保信息的安全和私密性。
用户友爱原则:注意用户体验,提供简便便利的操作体验,避免二义性,界面操作保证流通简单。
隔离性原则:容器云平台租户之间实现隔离,租户和平台管理之间实现隔离。
生态原则:容器云平台需要构建生态体系,提供和集成认证、权限、配置、日记、监控、告警、注册发现、网关等能力,支撑真正的企业业务应用。
三、容器云平台项目方案设计目的
容器云平台项目方案设计是为了基于容器云平台需求说明书来实现建立容器云平台的目的。容器云平台需求包括平台和资源管理、租户和应用管理和尺度化交付和管理三部门,方案设计目的就是为了满足这些部门的需求,实现业务目的。同时对于平台重点组件和能力进行设计,指导项目实施和运营,解决技能难点和疑点问题。
容器云平台项目方案设计的目的定义如下:
1. 定义容器云平台范围,需求分析
2. 定义容器云平台总体架构和组件
3. 定义容器云平台各组件能力
4. 定义容器云平台交互UI界面
5. 定义容器云平台的摆设架构
6. 确定容器云平台的关键技能选型
7. 定义微服务技能架构、服务治理框架和模子(基于容器平台)
四、容器云平台总体架构设计
团体架构的设计思绪说明
容器云平台是以承载业务应用为中心的,其设计重点在于为业务应用的运营提供资源和分租户管理运维业务应用。同时为了提升敏捷开发和测试的能力,提升持续集成、持续反馈、持续相应的能力,实现合理的DevOps流程和工具选择。
容器云平台架构设计时, 遵照设计原则,明确设计目的,提供真正意义上的企业级方案,权限、职责、范围要明确定义。仅有容器或容器调度管理不敷以支撑业务应用,需要构建容器云生态组件体系,包括认证、权限、配置、日记、监控、告警、注册发现、网关等组件。容器云平台各生态组件松耦合摆设,接纳开放性尺度API接口,可以根据需要进行扩展或替换。
总体架构设计图
深刻理解容器云平台是承载业务应用的,平台总体架构以业务应用管理为核心,覆盖业务应用全生命周期过程。容器云平台基于容器技能,通过容器编排和调度框架,实现对根本设施资源层的管理和对应用服务的资源供给,提供计算、网络、存储等资源。容器云平台提供平台级日记服务、监控服务、认证服务、权限服务、多租户能力、镜像仓库等根本组件。
租户管理和租户应用管理提供灵活的构造架构、用户、角色、权限的定义和业务应用、服务的运营阶段管理。CI/CD实现业务应用、服务的开发、测试、摆设发布阶段管理,平台完整实现业务应用、服务的整个生命周期管理能力。以支持我司微服务应用客户中心、服务中心以及产品中心的上线,以及互联网应用、大数据应用等。
平台管理架构设计
平台管理重点在于资源管理,资源划分为集群——节点(CPU、内存)、存储(本地、长途存储)、网络。容器云平台可能有多集群,每个集群在创建时定义集群网络,管理容器云节点,存储。一个集群可能有一到多个逻辑分区,分区是资源的逻辑划分。容器云资源支持标签,通过标签来分类资源,在应用/服务摆设时作为资源选择的依据。根据选择的网络类型来确定是否支持网络策略定义,网络策略从网络层实现网络隔离。
容器云平台支持认证、日记、监控告警、计量计费等根本功能,这些组件和平台是松耦合架构,但各组件之间需要实现统一认证、单点登录能力。
容器云平台Dashboard展示平台资源使用情况(总的资源、已使用、可用)以及资源使用最多的top 10租户及使用明细;平台节点情况(节点配置、节点资源占用、可用,节点上Pods或容器数量,资源告急的予以不同色彩提示);平台Pods、Containers运行情况(Pods量、状态、异常;平台组件使用的Pods和租户应用使用的Pods,两者要分开);公共镜像统计;平台组件运行状况。
租户账户由平台管理员创建,包括租户名称、账号、密码、租户接洽方式、租户资源分配。
公共镜像仓库由平台管理员来维护,提供平台级的中心件镜像服务等。
体系设置定义容器云平台级配置和设置。
权限管理提供不同级别的平台管理员权限,好比平台管理员为每一个集群创建集群管理员来维护其独立的容器集群。
租户管理架构设计
租户管理重点在于应用管理和服务治理能力。一切围绕业务应用的运营、治理为中心。
租户Dashboard展示当前租户或用户下主要业务应用或资源使用最多的若干业务应用的运行状况。好比应用的负载、相应时间、并发量、异常哀求数;最近5分钟、30分钟、1小时、4小时、8小时、24小时、48小时等运行情况统计;业务应用下服务实例的数量(Pods/容器数量)、运行情况、异常次数,处置处罚哀求数、平均相应时间、最大相应时间等;展示业务应用使用的资源情况等,汗青资源使用,总的和分应用图形展示。
权限中心提供对租户下构造架构、用户、角色、权限的管理维护,支持灵活的构造架构和角色定义。
租户资源由平台管理员分配,咱不思量支持自动扩展,分配固定资源,若资源不敷的告警再次申请扩容。
每个租户有本身独立的私有镜像仓库。服务/应用镜像存储于私有镜像仓库。租户可以贡献镜像到公有镜像仓库供所有租户使用,经平台管理员验证后公开可用。
应用管理和服务治理是租户的核心工作。容器云平台为租户提供注册发现机制、服务配置管理中心、服务网关实现访问控制/路由/过滤等安全机制、集中日记中心、链路跟踪、监控告警中心、任务调度中心、弹性伸缩、负载均衡、健康检查等服务治理能力。
CI流程设计
接纳Jenkins工具构建持续集成流程。JDK1.8.171,代码仓库是用SVNv1.7,源码检查工具Sonar ,构建工具Maven 3.3.9 or Gradle 4.0, 镜像仓库DTR or Clair,镜像扫描工具,缺陷管理工具Jira。单元测试Junit。自动化测试Selenium,自动化运维Ansible, 拓扑关系图支持zipkin。
开发工具Eclipse, 测试工具Jmeter。
Eclipse集成Sonar完成源码检查,代码完成之后提交到代码仓库SVN,Jenkins实现对SVN代码更改的监控,自动触发代码编译、构建过程,完成后天生jar 或者war文件或镜像文件(构建服务器需要安装Docker,操作体系版本要求CentOS7.4或以上)。单元测试过程中假如不通过则自动天生邮件通知源码提交人。
测试过程起首构建该服务相关测试域,即该服务依赖的服务的聚集(根据配置自动拉取镜像完成摆设)。QA则依据需求提供测试数据,输入测试数据完成测试。有异常则发邮件通知,确认是缺陷转入缺陷管理。
完成测试后镜像文件同步到生产镜像仓库。测试和生产环境是隔离的,通过跳转机来完成,只有经过镜像安全扫描确认安全的镜像才可以被同步到生产环境镜像仓库。
生产环境中镜像根据需要进行摆设和发布。
五、容器云平台各模块及组件功能定义
容器云平台是一个生态体系,包括容器云平台及支撑其上的业务应用和服务体系架构所需的各项组件,所有的组件可以定义为平台级和服务级,但也有些组件既服务于平台也服务于业务应用,好比日记中心组件。我们也曾和BoCloud博云等厂商深入讨论过相关组件建立,相互都有受益。
集中日记中心
集中日记中心是容器云平台日记的采集、存储、汇聚、分析、展示的组件,接纳基于ELK + Graylog等工具来实现集中日记中心的能力。提供基于中性化集群的管理、查询功能。支持尺度输出日记采集、文件日记采集、log4j日记文件采集,kafka数据采集等。
日记采集工具除了logstash,另外接纳filebeat、metricbeat、packetbeat、winlogbeat、auditbeat、heartbeat等工具。
数据采集组件支持Fluentd、Logstash、filebeat等。
需要注意的是,平台日记和应用日记是两个层次,可以用集中日记中心来集中管理平台和应用的日记,因此,集中日记中心的权限体系需要支持租户权限体系,平台管理员就是一个特殊租户,需要实现和打通各组件之间的统一认证和权限能力。
日记中心的设计和BoCloud博云也讨论过许多次,需要支持通用的ELK方案,但又不能和平台紧耦合,任何一个组件的设计都需要实现插拔的能力。
监控告警中心
监控告警中心是容器云平台监控平台各组件运行状况、监控告警规则定义、收集并展示平台运行情况的组件。监控告警中心是运维的告急助手,没有它就如同两眼一抹黑,难以有效保障容器云平台的正常运行,无法猜测体系运行资源使用,就无法保障其可用性。
监控告警中心接纳Prometheus + AlterManager工具,使用Grafana实现监控面板,展示监控内容项,另外自定义实现一些监控面板,以更好的集成到平台不同的组件中显现相关监控内容。
博云原来的产品使用的是Zabbix,在新的版本中计划接纳Prometheus和Grafana,更好的实现监控需求。
API网关
API网关是实现业务应用安全和服务治理的告急组件。可独立于容器云平台,但由于其独立性,我们把它作为一个独立服务组件来建立。API网关也是实现OpenAPI管理和提供稳定的接口能力的组件,通常包括API网关、API 管理工具,API集市等组件。
服务注册中心
服务注册发现中心是提供服务注册和查阅的地方。一个服务要给其他客户使用,就需要根据注册机制注册到注册中心,提供一个公开的地点,方便客户查阅。客户假如想使用某些服务,通过注册中心进行查阅,找到符合的服务及其地点,就可以在本身的服务中调用。
服务注册发现中心和容器云平台自身的注册发现组件不是一个内容,通常作为容器云平台的外部组件来支撑整个服务或微服务体系。和API网关等组件精密联合实现服务治理。
服务配置中心
服务配置中心是容器云平台支撑微服务必不可少的组件,也是为了更好的使用容器的特性,支持运行时服务配置更新,解耦合服务配置和服务实现框架。服务配置中心是独立的组件,也可应用于其他平台和体系。在容器云平台,可以扩展支持不同层级的配置,好比应用层、服务层、实例层,根据实际需要来定义和管理业务应用和服务的配置。Config Client 和Config Server之间接纳JMS或Kafka等消息组件作为通讯组件。
服务配置中心设计思想我们也和BoCloud博云做了详细的讨论和交换,由BoCloud博云来完成代码实现。
统一认证中心
认证中心起首支持容器云平台各生态组件之间的统一认证和授权,和权限中心组件集成实现各组件的访问控制。认证中心提供单点登录能力。
平台管理
平台管理是容器云平台管理员视角或平台管理员角色所能利用的功能。重点是根本设施资源管理和租户账户管理。理论上这一块更象是IaaS层的能力,不过目前Kubernetes等实现有些不同,无法做资源假造化,不过可以使用IaaS层的假造化能力,但仍旧需要做一些额外的工作,好比标签标记不同的资源类型。和IaaS层提供不同的假造机服务类似相同。
根本设施资源中心
根本设施资源包括计算资源、存储资源、网络资源以及操作体系资源等,为整个容器云平台提供资源服务。通过标签来标记不同的资源,以满足不同的服务对资源的个性需求。根本设施资源不拘泥于物理机或者假造机的选择,按需进行资源分配和管理。资源分配以节点为基本单元,分区为节点的聚集。但对于每个节点可以设置资源限额,设置资源预留额等,以实现更细粒度的资源控制。
有个问题是资源分配面临着分配实际的资源照旧理论上的资源的问题,可能需要基于基于根本设置资源层所能提供的能力来决定。目前Kubernetes可能还无法实现资源超分的能力。容器云平台在实现时需要思量充分的使用和共享资源。但在容器云建立初期资源总量较小的情况下,可能实现资源超分也意义不大。
租户账户管理
租户账户统一由平台管理,每个租户申请或注册一个租户账户,由平台管理员检查评估并确认(开通或不开通),分配所需根本设施资源。同时维护租户账户的基本信息、登录密码、认证方式等。
平台权限中心
平台权限主要思量多平台管理员的情况下,对不同平台管理员进行授权,权限中心模块可以和租户权限中心使用同一个组件,平台管理是一个特殊的租户(平台管理员看到的权限和租户看到的权限列表是不一样的)。
公共镜像仓库
平台管理还有一项告急的工作就是维护公共的中心件镜像,好比Kafka、Redis、JDK、Tomcat、MySQL等,这样所有租户都可以使用这些中心件镜像快速摆设为本身的服务,用于快速的环境搭建、测试,甚至是生产摆设。
企业级中心件的摆设建议统一来思量,容器云平台提供的中心件更多的适合敏捷的开发测试。
平台日记中心
平台日记集成到日记中心,只管理查看平台的日记。
监控告警中心
平台监控告警中心侧重于平台各组件的运行情况监控,不监控业务服务的运行情况,集成监控中心组件。
平台设置
容器云平台设置包括Docker、Docker deamon、Kubernetes等配置选项,以及平台集成LDAP、可选组件、界面logo、背景等设置和配置。
多租户管理
多租户机制和能力是容器云平台的核心,因为最终容器云平台是为了支撑业务应用的。平台管理为租户提供根本设施资源,租户使用云资源管理和运营本身的业务应用。租户通过CI持续集成流程构建业务服务镜像,上传到镜像仓库。镜像仓库中的镜像经过安全扫描安全的镜像可以摆设到容器云平台,每个租户都有本身独立的私有镜像库,用于存储租户本身创建的镜像。服务可以摆设为1到多个服务实例,服务摆设后注册到注册中心,通过配置中心来实现服务配置更新,可以实现实例级配置更新。由服务网关层实现服务非业务逻辑功能,好比认证、路由、转换等。
应用管理
应用管理是租户的核心。可以或许提供便利、美满的应用和服务管理能力,是能否赢得租户的关键,我们要认识到容器云平台只是个工具,工具的好坏一定有评判尺度。用起来顺手,是最基本的要求。
应用管理中镜像摆设为“业务服务”,注册到服务注册中心;每个服务可以摆设一到多个“服务实例”,或者根据业务需要实现自动弹性伸缩,一个或多个服务通过服务编排为“业务应用”。哀求通过负载均衡器分发到不同的服务实例上,并行处置处罚,每个服务一个注册地点,不论有摆设有多少服务实例,都通过负载均衡器来实现负载均衡。基于弹性伸缩的需求,负载均衡需要支持多种策略,以支持不同场景下弹性伸缩要求。
服务注册发现中心
租户摆设的服务都起首注册到容器云平台服务注册中心,租户内部的调用无需经过外部的注册中心。租户若需要调用其他租户的服务,则需要从服务注册发现中心查找符合的服务。
这里需要注意的是,为了充分使用容器的特性,我们把服务的注册机制分为两个层次,一个是容器层的服务注册发现机制,一个是容器云平台外的服务注册发现机制。需要明确认识到这两个服务注册发现层次的不同。
服务配置中心
镜像在摆设过程中,转到服务配置页面进行参数配置,完成配置之后实现摆设并启动。配置共分三层:应用层配置、服务层配置和实例层配置。通常情况下是服务层配置,不需要控制每一个服务实例。但某些情况下也可能需要对每一个服务实例进行配置,或者接纳单实例服务摆设方式。容器云平台需要和服务配置中心组件集成,实现服务在容器云平台的配置和更新。
服务网关
服务网关是服务实现服务治理的告急组件,所有租户间的服务通过API网关提供统一的API服务(租户内部服务成为私有服务,租户间服务成为公有服务,公有服务通过API 网关定义开放API,供其他租户使用),隔离服务实现和API接口定义,服务网关提供了稳定的API接口层,服务的更新和替换不会影响API提供的服务。非兼容性的更新摆设为新的API服务。服务网关分离业务服务的所有非业务功能,业务开发人员专注于业务逻辑的设计研发,不再思量认证授权、访问控制等安全机制以及限流、限额、熔断、优先级配置等能力。
权限中心
权限中心支撑租户构造架构、人员、角色、权限的设置需求,以满足不同租户的不同场景要求。权限来自于平台功能项的操作粒度(平台操作员和租户看到的功能项是不同的),不同的权限聚集组成定义为一个角色。构造架构和人员可以被赋予某种角色。构造架构下的所有人员继续构造架构的角色权限,一个人员可以被赋予多种角色。租户可以定义基于角色的权限管理体系,支持不同的构造架构和层级。
权限中心可以集成LDAP,证书中心、认证中心等功能实现企业级各体系的统一认证、权限管理服务。
链路跟踪
以图形化展示服务之间的调用关系,更清晰的定位异常节点,跟踪信息。链路跟踪可以有效避免服务之间的循环调用,尽可能的减少调用链路长度。更短的调用链路也是性能、安全等方面的要求。
负载均衡
负载均衡分容器层负载均衡和网关层负载均衡。在我们的整个平台生态体系中不建议接纳客户端负载均衡机制。服务实例之间接纳容器层负载均衡,通常可以思量容器平台的负载均衡机制,但需要思量弹性伸缩时的伸缩策略,不能接纳随机策略来收缩容器,必须确保容器已经完成的业务哀求的处置处罚才可以被回收。
根本设施资源中心
租户的根本设施资源是由平台来分配的。通常情况下租户不需要再对本身的资源进行分配,我们暂不思量租户的资源管理或再分配需求,只思量租户使用分配的资源需求。资源中心可以查看已分配资源及在使用资源,空闲资源等信息,也可以再申请资源。
镜像仓库
租户本身构建的镜像保存于租户本身的私有镜像仓库中,同时租户也可以使用公共镜像仓库中的镜像。两个镜像仓库是分开的。租户的私有镜像仓库可能有多个,租户可以通过镜像仓库配置连接到不同的镜像库。
租户日记中心
租户日记中心主要采集租户摆设应用的日记信息。容器中应用服务日记输出到尺度输出,通过Logstash的组件来从尺度输出中采集日记,每个服务的每条日记有固定的格式和标签来区分。集成集中日记中心实现租户日记管理。
监控告警中心
监控告警中心和链路跟踪机制、日记中心等共同实现业务服务、实例运行情况的监控及异常告警,协助定位分析。集成监控告警中心组件。
任务调度中心
任务调度中心主要支持批量任务、定时任务的处置处罚。
尺度化交付和管理
尺度化交付就是从源码到尺度化镜像构建的流程,包括源码开发、单元测试、源码管理、源码检查、编译、构建、上传镜像仓库、镜像检查、测试环境摆设测试、测试用例管理、缺陷管理、文档管理等。主要实行持续集成CI流程。尺度化交付作为容器云平台的一个独立组件可独立摆设,和容器云平台之间通过镜像仓库实现尺度镜像传递。
持续集成工具及流程
持续集成起于源码研发,止于镜像仓库。持续集成涉及代码编辑工具、源码管理工具、源码检查、编译、打包、天生镜像,以及缺陷管理、文档管理、API接口管理等众多的工具。
镜像仓库
镜像仓库是容器云平台的关键组件之一,是持续集成和应用摆设运营的前言,包括Server端和Client端。目前有众多的开源实现。安全性有待加强。
六、交互UI界面设计
详细可参阅《容器云平台UI 界面原型设计》
七、组件摆设架构设计
容器云平台不是所有组件都适合容器化摆设,也没必要都容器化,有些时间容器化反而复杂化了,所以需要根据具体的情况来确定各组件的摆设方式和摆设架构。
八、关键技能难点、选型
统一认证、权限管理
容器云平台生态体系涉及众多的组件,大部门都是开源的组件,大部门组件没有默认没有实现认证授权机制。在容器云平台,所有选择的组件都需要思量接纳统一的认证和权限体系,也就是各生态组件要接纳同样的权限体系和认证方式。在不改变组件架构等根本上实现各组件之间权限打通,实现统一的权限管理和认证,是一个重大的难点。
弹性伸缩策略支持
容器平台价值很大程度上在于其伸缩能力,或叫弹性。伸缩不能随便伸缩,必须有一定的规则,按照定义的规则进行伸缩。这就需要定义弹性伸缩的策略。通常情况下不能接纳随机策略,支持弹性伸缩策略配置,不同的服务接纳不同的策略可能是一个比较好的解决方案,但目前实现也是个难点。
安全机制
安全是永远绕不开的话题。在容器云平台需要思量不同层次的安全机制和不同组件的安全机制。需要实现:
登录安全,需随机验证码或手机验证码
租户用户权限管理安全
代码安全,不仅指安全的代码存储,也包括编码的安全,防备编码中潜在的漏洞和Sql注入等。
根本镜像安全
服务安全访问,由协议层安全和API Gateway安全共同实现。API Gateway实现认证授权、限流、熔断、路由、服务映射配置、转换等功能。
统一认证单点登录
微服务摆设运营安全
中心件安全设置(Tomcat、Kafka)
体系、网络安全配置(网络策略)、存储安全等资源安全
需要思量root用户运行容器云组件的问题。
安全涉及业务应用和服务、容器平台、容器调度组件、根本设施资源各个层次的安全。这会是一个非常告急不得不做的工作,也是容器云平台建立的难点。
应用服务配置管理
配置中心的设计实现也可能是个难点,需要支持运行时更新以及多层次的配置。不仅仅是读取配置文件
应用管理
应用管理是核心也是难点,所有的组件都是围绕应用管理来服务的。在应用管理中需要集成各个组件的能力,而各组件又是松耦合的,又需要思量多租户机制和权限管理,设计实现会是个难点。
监控、故障跟踪定位
监控和故障处置处罚永远都是告急的一环,采集到符合的新监控信息并定义合理的监控规则,在异常情况下能协助快速定位,也不是件容易的事。
DevOps流程定义
不改变现有构造架构的情况下实现DevOps,为了一个项目去期望调整构造架构永远都是幼稚的想法。不管场景多复杂,都会有最简单的解决方法。DevOps方法论的指导下实现DevOps流程定义和落地,需要的不仅仅是技能能力,这是一个很难的难点。
关键装备选型
从容器云平台架构和组件来看,平台关键组件会涉及到根本设施组件、容器调度框架、容器、镜像仓库、API网关组件、中心件摆设、微服务框架、微服务架构定义等选型。
网络技能方案和存储技能方案选型
网络和存储方案是在建立容器云平台之前就需要调研确认,具体接纳什么方案,需要进行分析和对比,选择符合的方案。
节点(物理机、假造机选择)方案选择
许多人一直在争论建立容器云应该选择物理机照旧假造机,我们也讨论过,不过从后来的实际情况来看,假如企业已经实现了假造化,接纳假造机配合标签应该会更方便些。最终需要根据呆板配置及企业假造化建立情况来确定。
容器调度管理框架
在2018年Kubernetes成为了发展最快的容器调度管理框架,Mesos和Docker Swarm英雄不再。不过基于Kubernetes上的Openshift似乎更胜一酬。基于Openshift的容器云研发相对更容易些。
容器
Docker已是究竟上的尺度。
镜像仓库
镜像仓库也有多种方案可供选择,DTR、Harbor、Registry等。重点在于镜像仓库的镜像安全扫描能力。
API网关
API网关有商用、开源产品,也可自研。不过从自身技能实力和成本投入来说,选择开源和商用比较符合。但从服务和安全角度来说,传统企业更适合成熟的商用产品。
中心件摆设方案
容器云平台组件摆设原则上变化不剧烈、没有频繁扩展需求的,选择非容器化摆设。对于运维和管理更容易些。也减小整个平台的复杂度。
微服务框架和架构
微服务框架虽然不是重点,但假如有统一的开发框架,将有利于统一的管控和高效。SpringCould目前应该是比较符合的选择。微服务架构定义存在一定的难度,需要基于实际的业务确定。
九、微服务技能架构、服务治理模子
微服务开发框架选用SpringCloud,一方面由于SpringCloud相对成熟,好比别的框架好不少。另外团队成员也相对比较熟悉。
微服务技能架构我们自行定义了微服务设计原则、路线图、实施模子、微服务成熟度模子等来帮助分拆、重构服务和业务应用。服务间通讯和事件处置处罚也定义了一些原则和规范,借助了体系集成和数据集成技能的一些理念。数据层的设计和定义主要思量主数据模子和行业通用数据模子。
基于微服务技能架构和容器云平台所提供的特性,定义微服务治理模子:微服务治理模子根据微服务的架构分为数据层、服务层和应用层。数据层支持不同的数据存储方式和数据集成方式,通过服务层来统一向外提供尺度的接口微服务;根据业务需求来使用微服务实现业务应用服务;应用接纳Client /Server前后端的方式实现,所有应用的哀求通过API Gateway集群分发到相应的业务应用服务上。API网关层同时提供API管理能力、API访问控制能力、负载均衡能力、路由、容错、过滤、映射转换、限流、熔断等,以及联合容器云的多租户管理能力,实现服务的分类管理和权限管理等。为了支撑微服务架构,实现服务注册发现机制、提供服务配置能力、服务日记记录能力、服务运行监控和告警能力以及服务访问统一认证、单点登录能力等;在服务的开发、运营等整个生命周期过程中碰到的问题、需求等持续反馈到DevOps中心,并持续的改进这些应用服务,以更好的满足实际业务需求。
十、DevOps方案设计
DevOps目的是为了促进应用开发、应用运维和质量保障(QA)部门之间的沟通、协作与整合。许多人把DevOps成为开发运维一体化,也不能说错,但也不全对。我们认为假如要落地DevOps就必须要求调整构造架构,那无异于纸上谈兵。开发运维一体化不一定是要一个人把业务应用全生命周期都做了,DevOps是一种方法论,根据具体的业务流程,通过选择相应的工具,定义相应的职责,优化业务流程,从而实现敏捷协作和高效整合,这些工具、职责和流程就是“沟通”,目的是为了敏捷协作和高效整合。因此我们定义DevOps中持续集成的终点是镜像仓库,输出是尺度化镜像,持续摆设的出发点是镜像仓库,镜像仓库是一个尺度化的前言工具。
十一、总结说明
本文所述与BoCloud博云为我公司容器云项目的实施方案并不完全一致,是本文作者基于该项目情况的研究和探讨,不能视为容器云建立的正式实施文档,仅供大家参考。由于项目还在实施中,许多设计细节和实施方式不能详细讲述,我们将通过别的文章进行讲解。
长按二维码关注公众号
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
发新帖
回复
万万哇
金牌会员
这个人很懒什么都没写!
楼主热帖
markdown day 01
Linux系统调用四、lseek()函数详解 ...
Nacos注册中心-----从0开始搭建和使用 ...
基于CSDN云和docker全家桶的微服务项目 ...
ClickHouse(05)ClickHouse数据类型详解 ...
应急救灾物资行业标准与规范 ...
【云原生】Docker 进阶 -- 数据卷使用 ...
100天精通Python(进阶篇)——第39天 ...
谈谈技术能力
读Java性能权威指南(第2版)笔记02_ J ...
标签云
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表