以下是定义 CRD 版本的关键属性:
1. version: 指定 CRD 的 API 版本。在 CRD 的 YAML 文件中,你会看到 apiVersion 字段,该字段由 apiextensions.k8s.io/v1 或其他相应的 API 版本组成。
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: myresources.example.com
spec:
...
2. versions: 定义 CRD 支持的版本。在 spec 部分,你可以列出一个或多个版本,每个版本有自己的自定义资源规格。
spec:
...
versions:
- name: v1
served: true
storage: true
schema:
openAPIV3Schema:
type: object
properties:
...
- name: 版本的名称,通常使用 v1、v2 等表示。
- served: 表示这个版本的资源是否由 API 服务器提供服务,为 true 表示提供服务。
- storage: 表示这个版本的资源是否存储在 etcd 中,为 true 表示存储。
3. schema: 定义了 CRD 的 OpenAPI v3 模式,描述了自定义资源规格的结构。
schema:
openAPIV3Schema:
type: object
properties:
key1:
type: string
key2:
type: integer
...
通过使用版本,你可以在不破坏现有自定义资源实例的情况下,逐步演进自定义资源的规格。在对版本进行更改时,你需要确保实现适当的转换和向后兼容性,以便现有的自定义资源实例可以顺利迁移到新的规格。
要注意的是,CRD 的版本机制在 Kubernetes 的发展中可能会有一些变化,因此建议查阅最新的 Kubernetes 官方文档以获取准确和最新的信息。
转载请注明出处:http://www.zyzy.cn/article/detail/9947/Kubernetes