Pivotal 是云原生应用的提出者,并推出了 Pivotal Cloud Foundry 云原生应用平台和Spring开源Java开发框架,成为云原生应用架构中先驱者和探路者。linux
早在2015年Pivotal公司的Matt Stine写了一本叫作迁移到云原生应用架构的小册子,其中探讨了云原生应用架构的几个主要特征,符合12因素应用:git
我已于2017年翻译了本书,详见迁移到云原生应用架构。github
到了2015年Google主导成了云原生计算基金会(CNCF),起初CNCF对云原生(Cloud Native)的定义包含如下三个方面:spring
到了2018年,而随着仅几年来云原生生态的不断状态,全部主流云计算供应商都加入了该基金会,且从Cloud Native Landscape中能够看出云原生有意蚕食原先非云原生应用的部分。CNCF基金会中的会员以及容纳的项目愈来愈多,该定义已经限制了云原生生态的发展,CNCF为云原生进行了从新定位。apache
如下是CNCF对云原生的从新定义(中英对照):网络
Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.架构
云原生技术帮助公司和机构在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的表明技术包括容器、服务网格、微服务、不可变基础设施和声明式API。app
These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.框架
这些技术可以构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术可使开发者轻松地对系统进行频繁并可预测的重大变动。运维
The Cloud Native Computing Foundation seeks to drive adoption of this paradigm by fostering and sustaining an ecosystem of open source, vendor-neutral projects. We democratize state-of-the-art patterns to make these innovations accessible for everyone.
云原生计算基金会(CNCF)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。咱们经过将最前沿的模式普惠,让这些创新为大众所用。
注:该定义的中文译本还未正式肯定,详见Cloud Native Definition in Chinese。
CNCF(云原生计算基金会)是Linux基金会旗下的一个基金会,加入CNCF等于同时加入Linux基金会(也意味着你还要交Linux基金会的份子钱),对于想加入CNCF基金会的企业或者组织首先要作的事情就是要了解CNCF的章程(charter),就像是做为一个国家的公民,必须遵照该国家的宪法同样。CNCF之因此能在短短三年的时间内发展壮大到如此规模,很大程度上是与它出色的社区治理和运做模式有关。了解该章程能够帮助咱们理解CNCF是如何运做的,也能够当咱们本身进行开源项目治理时派上用场。
该章程最后更新于2018年5月15日,详见https://www.cncf.io/about/charter/。下文中关于CNCF章程的介绍部分引用自CNCF 是如何工做的,有改动。
下图是我根据CNCF章程绘制的组织架构图。
图片 - CNCF组织架构图
CNCF 没有偏离本身的主题,核心是解决技术问题:基金会的使命是建立并推进采用新的计算模式,该模式针对现代分布式系统环境进行了优化,可以扩展至数万个自愈式多租户节点。
所谓的云原生系统须具有下面这些属性:
CNCF 实际上是在开源社区的基础上发挥着做用,应负责:
a) 项目管理
b) 促进生态系统的发展和演进
c) 推广底层技术和应用定义和管理方法,途径包括:活动和会议、营销(SEM、直接营销)、培训课程和开发人员认证。
d) 经过使技术可访问和可靠来为社区服务
CNCF 会极力遵循如下一些原则:
CNCF中的会员包括白金、金牌、银牌、最终用户、学术和非赢利成员等级别,不一样级别的会员在理事会中的投票权不一样。
a) 白金会员:在CNCF理事会中任命1名表明,在理事会的每一个次级委员会和活动中任命1名有投票权的表明,在网站能够突出显示;若是也是终端用户成员将继承终端用户成员的全部权利
b) 金牌会员:基金会中每有5个金牌会员,该级别的会员就能够任命1名表明,最多任命3个;若是也是终端用户成员将继承终端用户成员的全部权利
c) 银牌会员:基金会中每有10个银牌会员,该级别的会员就能够任命1名表明,最多任命3个;若是也是终端用户成员将继承终端用户成员的全部权利
d) 终端用户:参加终端用户咨询社区;向终端用户技术咨询委员会中提名1名表明
e) 学术和非赢利会员:学术和非营利会员分别限于学术和非营利机构,须要理事会批准。学术成员和非营利成员有权将其组织认定为支持CNCF使命的成员以及理事会肯定的任何其余权利或利益。
a) CNCF理事会负责市场营销、业务监督和预算审批,不负责技术方面,除了与TOC配合肯定CNCF工做范围、完成时间表a)、更新CNCF网站
b) 负责平常事务
c) 理事会投票成员由会员表明和社区表明组成:
d) 职责
e) 基金会的收入用途
CNCF 技术监督委员会,为了保持中立,则达成了如下共识:
得到 TOC 提名的开源贡献者应该具有下面条件:
a) CNCF的最终用户成员有权协调和推进CNCF用户做为CNCF设计的消费者的重要活动。任何做为最终用户的成员或非成员,每一个“最终用户参与者”都可被邀请参加。最终用户参与者将帮助向技术咨询委员会和CNCF社区就与用户有关的主题提供意见。
b) 最终用户技术咨询委员会是由最终用户社区成员选举所产生。
c) 最终用户社区成员将得到CNCF执行董事的批准,或者 CNCF 执行董事缺席的话,则由 Linux 基金会执行董事来批准。
a) 构成:最终用户TAB应由来自最终用户参与者的7名表明加上TOC的1名成员组成,以便于从最终用户TAB到TOC的晋级。
b) 选举:为了鼓励最终用户参与CNCF,前7名最终用户会员能够委任1名表明参加初始最终用户TAB,并将CNCF董事分配给任何最终用户参与者的任何剩余席位。在第一年以后,全部最终用户参与者能够提名1名表明而且最终用户社区应该投票选择使用当前最终用户 TAB 批准流程的最终用户TAB成员。
c) 通过三分之二投票经过后最终用户 TAB 能够更改最终用户社区的大小,前提是至少有7名可能的表明。
d) 最终用户表明应当基于业务和技术敏锐度提名。候选人应该具有建设和运营体现CNCF原则的基础设施和应用方面的重要实践经验。
e) 最终用户 TAB 将讨论和推动主题,重点是找出TOC和CNCF开发者社区的差距并提出优先事项。
f) 也会侧重于主动推动最终用户关心的话题,促进CNCF的市场采用,为最终用户举办会议或向理事会提供咨询。
g) 若是最终用户 TAB 有意愿的话,它能够批准小组委员会特别兴趣小组 (“SIG”)来解决行业或专业话题。
h) 最终用户 TAB 是技术监督委员会的主要输入方,应与技术监督委员会的其余输入方和反馈一块儿做出决策和计划。这些建议只是建议性的,在任什么时候候,最终用户TAB的建议都不能用于命令或指导任何TOC或项目参与者采起任何行动或结果。
i) 为促进与TOC的双边互动,最终用户技术咨询委员会应选出1名TOC表明。最终用户 TAB 可邀请任何人参加最终用户会议、SIG或其余讨论。
一般状况下,是由CNCF的成员公司、开源社区的成员将项目先是带到CNCF 的技术监督委员会来进行讨论,而后决定是否被CNCF接纳。要贡献给CNCF的项目必须是通过技术监督委员会制定的标准的,以后固然还要通过理事会的批准。CNCF 的目标是但愿捐赠给CNCF的项目和CNCF已有的项目在必定程度上是有关联的,并且是可集成的。
和CNCF 关联起来有如下三种方法:
已经在CNCF的纳管之下,毕竟CNCF是中立的,致力于成为你们的协做的归属地。
a) 项目的方方面面都交由CNCF来打理
b) 项目是由CNCF 来进行市场推广的
c) 项目是解决云原生计算问题的核心组件,如Kubernetes、Mesos、etcd等等
经过API或规范与CNCF相关联XM
a) 包括CNCF可能提供或启用多个选项的组件
b) 该项目被称为CNCF集成的一个组成部分,而不是由CNCF主办的项目
c) 集成和合规性由API或规范定义
d) 项目或组件的开发是由上游社区所开发,并且保持必定的活跃度
CNCF 使用到的
a) 项目或组件彻底根据OSI批准的开源许可证进行受权,而且管理良好,并在CNCF中被用做组件。
b) 项目并无由CNCF 来进行市场推广
c) 项目或组件的开发是由上游社区所开发,并且保持必定的活跃度
现有的开源项目应该继续保持其现有的技术治理结构,以保持凝聚力和速度。可是由技术监督委员会批准以后,则会适当的进行一些适应。
应根据我的的水平和贡献期限在项目间创建一个达到提交者地位的标准协议。由于提交者是维护者的选拔人才池,有了必定程度的贡献,且通过同行们的承认,提交者就可晋升为维护者。
CNCF启动的新开源项目应完成TOC采纳的项目建议模板,并由TOC批准归入CNCF。TOC成员应有充足的时间讨论和审查新的项目建议书。新的项目建议书应包括项目中的角色细节,为项目提出的治理,并肯定与CNCF的角色和价值观保持一致。
a) 构成,市场委员会将向全部成员开放参与,应选举市场委员会主席制定会议议程,进行通常的讨论,并帮助委员会实现其目标。市场委员会应尽量寻求共识。在市场委员会中没法达成共识的任何问题应提交给理事会。
b) 职责,市场委员会表明理事会负责设计,开发和执行相关的市场工做。
c) 若是市场委员会变得太大而没法有效运做,市场委员会能够选择选举市场董事,并将决策权委托给市场董事。
a) 任何加入到CNCF的项目都必须将其拥有的商标和徽标资产转让给Linux基金会的全部权。
b) 每一个项目应肯定是否须要使用经批准的CNCF CLA。对于选择使用CLA的项目,全部代码贡献者将承担Apache贡献者许可协议中规定的义务,只有在必要时才做出修改,以肯定CNCF是捐赠的接受者,而且应由理事会批准。请参阅 https://github.com/cncf/cla 上提供的CNCF参与者许可协议。
c) 全部向CNCF提交的新入站代码应当(i)附有开发者原始证书签名(http://developercertificate.org和(ii)根据Apache许可证2.0版(可从http://developercertificate.org和http://www.apache.org/licenses/LICENSE-2.0 得到)该许可证除了而且不得取代根据上文(b)规定的供款许可协议所承担的义务。
d) 全部出站代码将在Apache许可证2.0版下提供。
e) 全部评估归入CNCF的项目都必须得到OSI批准的开源许可证的彻底许可,若是CNCF中包含的项目的许可证不是Apache许可证2.0版,则须要得到理事会的批准。
f) 全部文档将由CNCF根据知识共享署名4.0国际许可证来提供。
g) 若是须要替代入站或出站许可证以符合杠杆式开放源代码项目的许可证或为实现CNCF的使命而须要其余许可证,理事会能够批准使用替代许可证 对于例外状况下的接受或提供的项目捐赠。
a) 全部成员均应遵照http://www.linuxfoundation.org/antitrust-policy上提供的Linux基金会反托拉斯政策中规定的Linux基金会的要求。
b) 全部成员都应鼓励任何可以知足成员要求的组织的公开参与,而不论其竞争利益如何。换言之,理事会不该根据除用于全部成员的标准,要求或缘由以外的任何标准,要求或理由寻求排除成员。
全部参与者都须赞成遵照 Linux基金会行为准则。 TSC能够投票经过本身的CNCF行为准则。
a) 定义:
b) 只有执行了参与协议的法人实体及其子公司才有权享有该会员的权利和特权;但条件是该成员及其子公司应做为单一成员共同对待。
c) 只有一名属于一组关联公司的成员有权一次性任命或提名理事会表明参加类别选举。
d) 若是会员自己是会员或赞助商的基金会,联盟,开源项目,会员组织,用户组或其余实体,那么授予该成员的权利和特权只能扩展到该成员的员工表明,而不能扩展到其成员或发起人,除非理事会不时在特定状况下另行批准。
e) 会员资格不得转让,不可转让、也不能转让,除非现有会员将其现有的会员利益和义务转让给其大部分业务和/或资产的继任者,不管是经过合并,出售仍是其余方式;只要受让人赞成遵照 CNCF 的章程以及Linux Foundation成员所需的章程和政策。
a) 理事会应批准年度预算,毫不会承诺超出筹集的资金。预算应与Linux基金会的非营利性使命相一致。
b) Linux基金会应按期报告预算支出。
a) Linux基金会应保管任何费用,资金和其余现金收据。
b) 通常和行政(G&A)费用将用于筹集资金以支付财务、会计和运营费用。 G&A费用应等于CNCF首期总收入1,000,000美圆的9%以及CNCF总收入超过1,000,000美圆的6%。
参与CNCF 应作到:
a) 展现与开源项目开发人员社区进行协调的计划和方法,包括关于表明社区的品牌、徽标和其它标志性的主题;
b) 以专业的方式体现维持社区的凝聚力为目标,同时还要保持Linux基金会在开放源代码软件社区的善意和尊重;
c) 尊重全部商标全部人的权利,包括任何品牌和使用准则;
d) 参与Linux基金会的全部新闻和分析师关系活动;
e) 根据要求,向Linux基金会提供关于项目参与的信息,包括参加项目赞助活动的信息;
f) 直接参与到基金会旗下的任何站点。
g) 根据理事会批准的规则和程序进行运营,前提是这些规则和程序不得与Linux基金会的宗旨和政策不一致,而且不得损害Linux基金会。
本章程能够经过全部理事会成员的三分之二票数(不包括弃权)进行修改,前提是任何此类修改不得与Linux基金会的目的或政策不一致,而且不得对Linux基金会产生不利影响。
CNCF背后的首要目标是支持和加速“云原生计算”的采用。如下内容是初步范围,旨在阐明CNCF将努力实施的“云原生计算”的核心概念。该初始范围应成为发布在CNCF网站上的文档。
CNCF社区坚信云原生计算包含三个核心属性:
注:关于云原生的定义正在从新设定中,已经与上述不一样了。
云原生计算系统支持基于这些核心属性的计算,并包含如下理想:
图片 - 云原生的理想分层架构
由于上述时间表已经有些过期了,CNCF成立已经有三年时间了,正在规划新的方案。