云原生应用管理:原理与实践
上QQ阅读APP看书,第一时间看更新

2.7.4 使用crd-install来定义一个CRD

自定义资源(CRD)是Kubernetes中的一种特殊类型,它提供了定义其他类型的方法。

有时,Chart需要定义一种类型并使用,可以通过crd-install hook来完成。

crd-install hook在安装期间很早就执行完毕,然后验证其余资源。用户可以使用该Hooks对CRD进行创建,以便在引用该CRD的任何实例前安装它们。通过这种方式,在后面的资源需要使用该CRD的时候,CRD的定义就已经安装完毕了。

以下是使用Hooks定义CRD和CRD实例的示例。

如下所示为CRD定义:


apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: crontabs.stable.example.com
  annotations:
    "helm.sh/hook": crd-install
spec:
  group: stable.example.com
  version: v1
  scope: Namespaced
  names:
    plural: crontabs
    singular: crontab
    kind: CronTab
    shortNames:
    - ct

如下所示为CRD实例:


apiVersion: stable.example.com/v1
kind: CronTab
metadata:
  name: {{ .Release.Name }}-inst

这样通过先安装CRD的定义再安装对应资源的方式,就可以正确安装Chart了。