美文网首页
API 公约

API 公约

作者: cdz620 | 来源:发表于2020-03-02 14:19 被阅读0次

命名规范

kinds

Objects

  • 代表一个可以持久化的 resource
  • 可以被create, update, delete
  • eg: Pod, ReplicationController, Service, Namespace, Node

Lists

  • resources 常用资源的集合
  • 命名必须包含“List”后缀, 有metadata限制,每个List必须有“items"包含一个数组
  • eg:PodList, ServiceList, NodeList

Simple

  • 代表特殊的操作或者非存储的对象
  • 有metadata限制

Resource

每个API请求和返回都会包含如下字段(请求中如果没填,会采用系统默认值):

  • kind
  • apiVersion

Objects

每个嵌套的Object kind,必须 要有metadata字段,metadata 必须 包含以下字段

  • namespace, label, dns需要使用到
  • name 唯一名称
  • uid, 集群内的唯一标识,name删除后可以重用,uid,集群内唯一

metadata其他字段

  • resourceVersion:
    • 资源版本,用于并发控制,要更新时对比服务器上的版本号,如果相同,代表没人进行更新操作,可以更新成功。否则返回http 409
    • 每次修改resouceVersion都会被修改
    • 设置时,必须从server GET得到
  • generation:生成的唯一序列号
  • creationTimestamp:创建时间
  • deletionTimestamp:删除时间
  • labels 标签
  • annotations 备注信息

Spec

设计规范,想要达到预期状态的描述,包含以下部分

  • 用户配置
  • 系统自动填充的默认值
  • 初始化后,或者创建后被其他组件设置的值

Typical status properties(aka Condition)

Condition 代表最新观察到的object的状态

  • Type: Ready, Succeeded, Failure, Unknown
  • Status:True, False, Unknown
  • LastHeartbeatTime unversioned.Time
  • LastTransitionTime unversioned.Time
  • Reason 简洁的最新状态显示
  • Message 详细信息

Primitive types 变量类型

  • 避免使用浮点数
  • 所有的数值类型(uint32, int64)都会转化成float64,当精度超过 > 53bits 时,使用字符串
  • 不能使用unsigned int,由于平台和库的解析不同原因
  • 不要使用枚举,使用alias替代
  • 不要使用api中的关键字
  • 所有的整形字段必须使用go语言的(u)int32 or (u)int64 types,不能使用(u)int

Constants 常量

首字母大写驼峰式,替代枚举

union 类型

只能设置为其中的一个

Lists and Simple kinds

嵌套的metadata字段中必须包含resourceVersion,并行控制,和幂等性控制

api

  • GET /<resourceNamePlural> 获取资源列表
  • POST /<resourceNamePlural> 创建新的资源
  • GET /<resourceNamePlural>/<name> 获取resoucrce 名称为name
  • DELETE /<resourceNamePlural>/<name> 删除特定的资源,删除资源需要经过一定的时间
  • PUT /<resourceNamePlural>/<name> 创建或者更新资源
  • PATCH /<resourceNamePlural>/<name> 修改特定的字段
  • GET /<resourceNamePlural>&watch=true 订阅,接收修改的信息

PATCH 修改操作

根据Content-Type有三种PATCH操作:

JSON Patch, Content-Type: application/json-patch+json

Merge Patch, Content-Type: application/merge-patch+json

Strategic Merge Patch, Content-Type: application/strategic-merge-patch+json

  • 自定义替换的策略,入list采用合并,而不是替换
    • 列表操作覆盖替换
    containers:
    - name: nginx
      image: nginx-1.0
    - $patch: replace  
    
    • 列表删除
    containers:
    - name: nginx
      image: nginx-1.0
    - $patch: delete
      name: log-tailer  # merge key and value goes here
    
    • map merge
    $patch: replace  # recursive and applies to all fields of the map it's in
    containers:
    - name: nginx
      image: nginx-1.0
    
    • map 删除某个字段的值
    name: nginx
    image: nginx-1.0
    labels:
      live: null  # set the value of the map key to null
    

http状态码

https://github.com/kubernetes/kubernetes/blob/64a0e0ee193a532cdcaf30330fe9937af0bbc4cd/docs/devel/api-conventions.md#http-status-codes

Response Status Kind 返回结果的kind是Status类型

返回Status的两种情况

  • http 状态码,非20x
  • http delte 操作成功

返回包体

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {},
  "status": "Failure",
  "message": "pods \"grafana\" not found",
  "reason": "NotFound",
  "details": {
    "name": "grafana",
    "kind": "pods"
  },
  "code": 404
}
  • status: Success, Failure
  • message: 错误详情
  • reason: machine-readable 错误原因

相关文章

  • API 公约

    命名规范 resource 集合必须是小写复数形式,kinds驼峰单数形式 go 字段名CamelCase, js...

  • 互联网客户端基于Android O(API等级26)需解决问题

    背景:之前的项目targetSDK的版本是23,今年所有应用需要按照《移动应用软件高API等级预置与分发自律公约》...

  • 家庭因公约而幸福   生命因公约而精彩

    家庭因公约而幸福 生命因公约而精彩 ——家庭公约初级教练训练营有感 张...

  • 2018-02-04

    家庭公约之“双五一好”践行复盘 ---写在践行第73天 从偶遇家庭公约到结缘公约,践行公约“双五一好”打卡第73天...

  • 康老师带班|班级公约精简版

    康老师带班|班级公约精简版 关于班级公约 班会上我们来共同学习了“班级公约”。之所以,由原来的班规,最终定为“公约...

  • 应用targetSdkVersion升级指导(一)

    电信终端产业协会(TAF)发布的《移动应用软件高 API 等级预置与分发自律公约》要求,截止到2019年5月1日所...

  • 应用 targetSdk 版本升级指导(二)

    电信终端产业协会(TAF)发布的《移动应用软件高API等级预置与分发自律公约》要求,截止到2019年5月1日所有新...

  • 公约

    第一条:第一次罚一毛钱,每多犯一次增加一毛。第二条:物品及时归位。第三条:每周打扫自己所属空间的卫生,公共卫生和工...

  • 公约

    无规矩不成方圆,大家在一个团队里没有规章制度就乱了,每个人都有自己的心思,为了公平,整个团队积极向上发展,我们自愿...

  • 常用的简单函数 ——求最大公约数的函数

    当计算多个数的公约数时,需要知道,前两个的最大公约数,依次和后面的数求公约数,得到的就是所有数字的最大公约数。

网友评论

      本文标题:API 公约

      本文链接:https://www.haomeiwen.com/subject/cgfdchtx.html