Longhorn 的部署与使用

官网:https://www.rancher.cn/longhorn

Github:https://github.com/longhorn/longhorn

架构图:

1.安装要求

官网提供:https://longhorn.io/docs/1.5.3/deploy/install

注:这里关于安装要求我们就不多做赘述,请看官方文档内的要求,这里只是将需要的进行安装,目前系统为:ubuntu 22.04,集群版本:v1.26.5

apt-get install open-iscsi nfs-common jq -y
​
# iscsi启动
modprobe iscsi_tcp
bash -c 'echo iscsi_tcp > /etc/modprobe.d/iscsi-tcp.conf'
systemctl enable  iscsid.service
systemctl restart   iscsid.service
systemctl status  iscsid.service
​
# 检查项
##请确保在 iscsid 服务启动之前iscsi_tcp模块已加载。通常,它应该与软件包安装一起自动加载。
sudo lsmod | grep iscsi -i
​
##启用了支持NFSv4.1、NFSv4.2
cat /boot/config-`uname -r`| grep CONFIG_NFS_V4_1
cat /boot/config-`uname -r`| grep CONFIG_NFS_V4_2

1.1.使用容器安装open-iscsi、nfs

前言:这里二选一要么直接安装命令,要么使用容器去进行安装,这里选择之间安装的命令。

# open-iscsi
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.5.3/deploy/prerequisite/longhorn-iscsi-installation.yaml
​
# nfs
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.5.3/deploy/prerequisite/longhorn-nfs-installation.yaml

环境检查脚本:

curl -sSfL https://raw.githubusercontent.com/longhorn/longhorn/v1.5.3/scripts/environment_check.sh | bash
[INFO]  Required dependencies 'kubectl jq mktemp sort printf' are installed.
[INFO]  All nodes have unique hostnames.
[INFO]  Waiting for longhorn-environment-check pods to become ready (0/2)...
[INFO]  All longhorn-environment-check pods are ready (2/2).
[INFO]  MountPropagation is enabled
[INFO]  Checking kernel release...
[INFO]  Checking iscsid...
[INFO]  Checking multipathd...
[INFO]  Checking packages...
[INFO]  Checking nfs client...
[INFO]  Cleaning up longhorn-environment-check pods...
[INFO]  Cleanup completed.

2.Longhorn部署

官网提供:https://longhorn.io/docs/1.5.3/deploy/install/install-with-kubectl kubectl方式部署。

kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.5.3/deploy/longhorn.yaml
# 查看pod情况
kubectl get pods --namespace longhorn-system
NAME                                                READY   STATUS    RESTARTS   AGE
csi-attacher-785fd6545b-29hb6                       1/1     Running   0          90m
csi-attacher-785fd6545b-bw8f5                       1/1     Running   0          90m
csi-attacher-785fd6545b-wb6rd                       1/1     Running   0          90m
csi-provisioner-8658f9bd9c-5rj72                    1/1     Running   0          90m
csi-provisioner-8658f9bd9c-8l2mm                    1/1     Running   0          90m
csi-provisioner-8658f9bd9c-dc6z8                    1/1     Running   0          90m
csi-resizer-68c4c75bf5-9jqqq                        1/1     Running   0          90m
csi-resizer-68c4c75bf5-zljnc                        1/1     Running   0          90m
csi-resizer-68c4c75bf5-zsxnc                        1/1     Running   0          90m
csi-snapshotter-7c466dd68f-52c9c                    1/1     Running   0          90m
csi-snapshotter-7c466dd68f-fsrrx                    1/1     Running   0          90m
csi-snapshotter-7c466dd68f-rr6lm                    1/1     Running   0          90m
engine-image-ei-68f17757-bq55k                      1/1     Running   0          90m
engine-image-ei-68f17757-prcx6                      1/1     Running   0          90m
instance-manager-544a56b5046e48a6d0f28f76191f9c69   1/1     Running   0          90m
instance-manager-66c416b8fb1e0289ae85f2edca30bccc   1/1     Running   0          90m
longhorn-csi-plugin-hzt6t                           3/3     Running   0          90m
longhorn-csi-plugin-x56sr                           3/3     Running   0          90m
longhorn-driver-deployer-7d5dc67667-wgbm4           1/1     Running   0          90m
longhorn-manager-dw65w                              1/1     Running   0          90m
longhorn-manager-x487m                              1/1     Running   0          90m
longhorn-ui-85cc67494f-7fcfk                        1/1     Running   0          90m
longhorn-ui-85cc67494f-l5kw2                        1/1     Running   0          90m

2.1.Longhorn使用

注:这里如果部署完成

创建pod:

# https://raw.githubusercontent.com/longhorn/longhorn/v1.5.3/examples/pod_with_pvc.yaml
cat > pod_with_pvc.yaml <<EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: longhorn-volv-pvc
  namespace: default
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: longhorn
  resources:
    requests:
      storage: 2Gi
---
apiVersion: v1
kind: Pod
metadata:
  name: volume-test
  namespace: default
spec:
  restartPolicy: Always
  containers:
  - name: volume-test
    image: nginx:stable-alpine
    imagePullPolicy: IfNotPresent
    livenessProbe:
      exec:
        command:
          - ls
          - /data/lost+found
      initialDelaySeconds: 5
      periodSeconds: 5
    volumeMounts:
    - name: volv
      mountPath: /data
    ports:
    - containerPort: 80
  volumes:
  - name: volv
    persistentVolumeClaim:
      claimName: longhorn-volv-pvc
EOF
cat pod_with_pvc.yaml | kubectl apply -f -

查看资源创建情况:

kubectl get pvc
longhorn-volv-pvc                Bound    pvc-4ad1865e-6d68-4f24-af7d-6020c2ed1978   2Gi        RWO            longhorn       4m17s
​
kubectl get  pod  | grep  volume-test
volume-test                              1/1     Running   0              4m42s

2.2.附件:

2.2.1longhorn.yaml

longhorn.yaml
 # https://raw.githubusercontent.com/longhorn/longhorn/v1.5.3/deploy/longhorn.yaml
---
# Builtin: "helm template" does not respect --create-namespace
apiVersion: v1
kind: Namespace
metadata:
  name: longhorn-system
---
# Source: longhorn/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: longhorn-service-account
  namespace: longhorn-system
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
---
# Source: longhorn/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: longhorn-support-bundle
  namespace: longhorn-system
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
---
# Source: longhorn/templates/default-setting.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: longhorn-default-setting
  namespace: longhorn-system
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
data:
  default-setting.yaml: |-
---
# Source: longhorn/templates/storageclass.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: longhorn-storageclass
  namespace: longhorn-system
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
data:
  storageclass.yaml: |
    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: longhorn
      annotations:
        storageclass.kubernetes.io/is-default-class: "true"
    provisioner: driver.longhorn.io
    allowVolumeExpansion: true
    reclaimPolicy: "Delete"
    volumeBindingMode: Immediate
    parameters:
      numberOfReplicas: "3"
      staleReplicaTimeout: "30"
      fromBackup: ""
      fsType: "ext4"
      dataLocality: "disabled"
---
# Source: longhorn/templates/crds.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    longhorn-manager: ""
  name: backingimagedatasources.longhorn.io
spec:
  group: longhorn.io
  names:
    kind: BackingImageDataSource
    listKind: BackingImageDataSourceList
    plural: backingimagedatasources
    shortNames:
    - lhbids
    singular: backingimagedatasource
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The current state of the pod used to provision the backing image file from source
      jsonPath: .status.currentState
      name: State
      type: string
    - description: The data source type
      jsonPath: .spec.sourceType
      name: SourceType
      type: string
    - description: The node the backing image file will be prepared on
      jsonPath: .spec.nodeID
      name: Node
      type: string
    - description: The disk the backing image file will be prepared on
      jsonPath: .spec.diskUUID
      name: DiskUUID
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: BackingImageDataSource is where Longhorn stores backing image data source object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            x-kubernetes-preserve-unknown-fields: true
          status:
            x-kubernetes-preserve-unknown-fields: true
        type: object
    served: true
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: The system generated UUID of the provisioned backing image file
      jsonPath: .spec.uuid
      name: UUID
      type: string
    - description: The current state of the pod used to provision the backing image file from source
      jsonPath: .status.currentState
      name: State
      type: string
    - description: The data source type
      jsonPath: .spec.sourceType
      name: SourceType
      type: string
    - description: The backing image file size
      jsonPath: .status.size
      name: Size
      type: string
    - description: The node the backing image file will be prepared on
      jsonPath: .spec.nodeID
      name: Node
      type: string
    - description: The disk the backing image file will be prepared on
      jsonPath: .spec.diskUUID
      name: DiskUUID
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta2
    schema:
      openAPIV3Schema:
        description: BackingImageDataSource is where Longhorn stores backing image data source object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: BackingImageDataSourceSpec defines the desired state of the Longhorn backing image data source
            properties:
              checksum:
                type: string
              diskPath:
                type: string
              diskUUID:
                type: string
              fileTransferred:
                type: boolean
              nodeID:
                type: string
              parameters:
                additionalProperties:
                  type: string
                type: object
              sourceType:
                enum:
                - download
                - upload
                - export-from-volume
                type: string
              uuid:
                type: string
            type: object
          status:
            description: BackingImageDataSourceStatus defines the observed state of the Longhorn backing image data source
            properties:
              checksum:
                type: string
              currentState:
                type: string
              ip:
                type: string
              message:
                type: string
              ownerID:
                type: string
              progress:
                type: integer
              runningParameters:
                additionalProperties:
                  type: string
                nullable: true
                type: object
              size:
                format: int64
                type: integer
              storageIP:
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: longhorn/templates/crds.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    longhorn-manager: ""
  name: backingimagemanagers.longhorn.io
spec:
  group: longhorn.io
  names:
    kind: BackingImageManager
    listKind: BackingImageManagerList
    plural: backingimagemanagers
    shortNames:
    - lhbim
    singular: backingimagemanager
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The current state of the manager
      jsonPath: .status.currentState
      name: State
      type: string
    - description: The image the manager pod will use
      jsonPath: .spec.image
      name: Image
      type: string
    - description: The node the manager is on
      jsonPath: .spec.nodeID
      name: Node
      type: string
    - description: The disk the manager is responsible for
      jsonPath: .spec.diskUUID
      name: DiskUUID
      type: string
    - description: The disk path the manager is using
      jsonPath: .spec.diskPath
      name: DiskPath
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: BackingImageManager is where Longhorn stores backing image manager object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            x-kubernetes-preserve-unknown-fields: true
          status:
            x-kubernetes-preserve-unknown-fields: true
        type: object
    served: true
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: The current state of the manager
      jsonPath: .status.currentState
      name: State
      type: string
    - description: The image the manager pod will use
      jsonPath: .spec.image
      name: Image
      type: string
    - description: The node the manager is on
      jsonPath: .spec.nodeID
      name: Node
      type: string
    - description: The disk the manager is responsible for
      jsonPath: .spec.diskUUID
      name: DiskUUID
      type: string
    - description: The disk path the manager is using
      jsonPath: .spec.diskPath
      name: DiskPath
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta2
    schema:
      openAPIV3Schema:
        description: BackingImageManager is where Longhorn stores backing image manager object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: BackingImageManagerSpec defines the desired state of the Longhorn backing image manager
            properties:
              backingImages:
                additionalProperties:
                  type: string
                type: object
              diskPath:
                type: string
              diskUUID:
                type: string
              image:
                type: string
              nodeID:
                type: string
            type: object
          status:
            description: BackingImageManagerStatus defines the observed state of the Longhorn backing image manager
            properties:
              apiMinVersion:
                type: integer
              apiVersion:
                type: integer
              backingImageFileMap:
                additionalProperties:
                  properties:
                    currentChecksum:
                      type: string
                    message:
                      type: string
                    name:
                      type: string
                    progress:
                      type: integer
                    senderManagerAddress:
                      type: string
                    sendingReference:
                      type: integer
                    size:
                      format: int64
                      type: integer
                    state:
                      type: string
                    uuid:
                      type: string
                  type: object
                nullable: true
                type: object
              currentState:
                type: string
              ip:
                type: string
              ownerID:
                type: string
              storageIP:
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: longhorn/templates/crds.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    longhorn-manager: ""
  name: backingimages.longhorn.io
spec:
  conversion:
    strategy: Webhook
    webhook:
      clientConfig:
        service:
          name: longhorn-conversion-webhook
          namespace: longhorn-system
          path: /v1/webhook/conversion
          port: 9501
      conversionReviewVersions:
      - v1beta2
      - v1beta1
  group: longhorn.io
  names:
    kind: BackingImage
    listKind: BackingImageList
    plural: backingimages
    shortNames:
    - lhbi
    singular: backingimage
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The backing image name
      jsonPath: .spec.image
      name: Image
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: BackingImage is where Longhorn stores backing image object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            x-kubernetes-preserve-unknown-fields: true
          status:
            x-kubernetes-preserve-unknown-fields: true
        type: object
    served: true
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: The system generated UUID
      jsonPath: .status.uuid
      name: UUID
      type: string
    - description: The source of the backing image file data
      jsonPath: .spec.sourceType
      name: SourceType
      type: string
    - description: The backing image file size in each disk
      jsonPath: .status.size
      name: Size
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta2
    schema:
      openAPIV3Schema:
        description: BackingImage is where Longhorn stores backing image object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: BackingImageSpec defines the desired state of the Longhorn backing image
            properties:
              checksum:
                type: string
              disks:
                additionalProperties:
                  type: string
                type: object
              sourceParameters:
                additionalProperties:
                  type: string
                type: object
              sourceType:
                enum:
                - download
                - upload
                - export-from-volume
                type: string
            type: object
          status:
            description: BackingImageStatus defines the observed state of the Longhorn backing image status
            properties:
              checksum:
                type: string
              diskFileStatusMap:
                additionalProperties:
                  properties:
                    lastStateTransitionTime:
                      type: string
                    message:
                      type: string
                    progress:
                      type: integer
                    state:
                      type: string
                  type: object
                nullable: true
                type: object
              diskLastRefAtMap:
                additionalProperties:
                  type: string
                nullable: true
                type: object
              ownerID:
                type: string
              size:
                format: int64
                type: integer
              uuid:
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: longhorn/templates/crds.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    longhorn-manager: ""
  name: backups.longhorn.io
spec:
  group: longhorn.io
  names:
    kind: Backup
    listKind: BackupList
    plural: backups
    shortNames:
    - lhb
    singular: backup
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The snapshot name
      jsonPath: .status.snapshotName
      name: SnapshotName
      type: string
    - description: The snapshot size
      jsonPath: .status.size
      name: SnapshotSize
      type: string
    - description: The snapshot creation time
      jsonPath: .status.snapshotCreatedAt
      name: SnapshotCreatedAt
      type: string
    - description: The backup state
      jsonPath: .status.state
      name: State
      type: string
    - description: The backup last synced time
      jsonPath: .status.lastSyncedAt
      name: LastSyncedAt
      type: string
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: Backup is where Longhorn stores backup object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            x-kubernetes-preserve-unknown-fields: true
          status:
            x-kubernetes-preserve-unknown-fields: true
        type: object
    served: true
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: The snapshot name
      jsonPath: .status.snapshotName
      name: SnapshotName
      type: string
    - description: The snapshot size
      jsonPath: .status.size
      name: SnapshotSize
      type: string
    - description: The snapshot creation time
      jsonPath: .status.snapshotCreatedAt
      name: SnapshotCreatedAt
      type: string
    - description: The backup state
      jsonPath: .status.state
      name: State
      type: string
    - description: The backup last synced time
      jsonPath: .status.lastSyncedAt
      name: LastSyncedAt
      type: string
    name: v1beta2
    schema:
      openAPIV3Schema:
        description: Backup is where Longhorn stores backup object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: BackupSpec defines the desired state of the Longhorn backup
            properties:
              labels:
                additionalProperties:
                  type: string
                description: The labels of snapshot backup.
                type: object
              snapshotName:
                description: The snapshot name.
                type: string
              syncRequestedAt:
                description: The time to request run sync the remote backup.
                format: date-time
                nullable: true
                type: string
            type: object
          status:
            description: BackupStatus defines the observed state of the Longhorn backup
            properties:
              backupCreatedAt:
                description: The snapshot backup upload finished time.
                type: string
              compressionMethod:
                description: Compression method
                type: string
              error:
                description: The error message when taking the snapshot backup.
                type: string
              labels:
                additionalProperties:
                  type: string
                description: The labels of snapshot backup.
                nullable: true
                type: object
              lastSyncedAt:
                description: The last time that the backup was synced with the remote backup target.
                format: date-time
                nullable: true
                type: string
              messages:
                additionalProperties:
                  type: string
                description: The error messages when calling longhorn engine on listing or inspecting backups.
                nullable: true
                type: object
              ownerID:
                description: The node ID on which the controller is responsible to reconcile this backup CR.
                type: string
              progress:
                description: The snapshot backup progress.
                type: integer
              replicaAddress:
                description: The address of the replica that runs snapshot backup.
                type: string
              size:
                description: The snapshot size.
                type: string
              snapshotCreatedAt:
                description: The snapshot creation time.
                type: string
              snapshotName:
                description: The snapshot name.
                type: string
              state:
                description: The backup creation state. Can be "", "InProgress", "Completed", "Error", "Unknown".
                type: string
              url:
                description: The snapshot backup URL.
                type: string
              volumeBackingImageName:
                description: The volume's backing image name.
                type: string
              volumeCreated:
                description: The volume creation time.
                type: string
              volumeName:
                description: The volume name.
                type: string
              volumeSize:
                description: The volume size.
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: longhorn/templates/crds.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    longhorn-manager: ""
  name: backuptargets.longhorn.io
spec:
  conversion:
    strategy: Webhook
    webhook:
      clientConfig:
        service:
          name: longhorn-conversion-webhook
          namespace: longhorn-system
          path: /v1/webhook/conversion
          port: 9501
      conversionReviewVersions:
      - v1beta2
      - v1beta1
  group: longhorn.io
  names:
    kind: BackupTarget
    listKind: BackupTargetList
    plural: backuptargets
    shortNames:
    - lhbt
    singular: backuptarget
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The backup target URL
      jsonPath: .spec.backupTargetURL
      name: URL
      type: string
    - description: The backup target credential secret
      jsonPath: .spec.credentialSecret
      name: Credential
      type: string
    - description: The backup target poll interval
      jsonPath: .spec.pollInterval
      name: LastBackupAt
      type: string
    - description: Indicate whether the backup target is available or not
      jsonPath: .status.available
      name: Available
      type: boolean
    - description: The backup target last synced time
      jsonPath: .status.lastSyncedAt
      name: LastSyncedAt
      type: string
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: BackupTarget is where Longhorn stores backup target object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            x-kubernetes-preserve-unknown-fields: true
          status:
            x-kubernetes-preserve-unknown-fields: true
        type: object
    served: true
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: The backup target URL
      jsonPath: .spec.backupTargetURL
      name: URL
      type: string
    - description: The backup target credential secret
      jsonPath: .spec.credentialSecret
      name: Credential
      type: string
    - description: The backup target poll interval
      jsonPath: .spec.pollInterval
      name: LastBackupAt
      type: string
    - description: Indicate whether the backup target is available or not
      jsonPath: .status.available
      name: Available
      type: boolean
    - description: The backup target last synced time
      jsonPath: .status.lastSyncedAt
      name: LastSyncedAt
      type: string
    name: v1beta2
    schema:
      openAPIV3Schema:
        description: BackupTarget is where Longhorn stores backup target object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: BackupTargetSpec defines the desired state of the Longhorn backup target
            properties:
              backupTargetURL:
                description: The backup target URL.
                type: string
              credentialSecret:
                description: The backup target credential secret.
                type: string
              pollInterval:
                description: The interval that the cluster needs to run sync with the backup target.
                type: string
              syncRequestedAt:
                description: The time to request run sync the remote backup target.
                format: date-time
                nullable: true
                type: string
            type: object
          status:
            description: BackupTargetStatus defines the observed state of the Longhorn backup target
            properties:
              available:
                description: Available indicates if the remote backup target is available or not.
                type: boolean
              conditions:
                description: Records the reason on why the backup target is unavailable.
                items:
                  properties:
                    lastProbeTime:
                      description: Last time we probed the condition.
                      type: string
                    lastTransitionTime:
                      description: Last time the condition transitioned from one status to another.
                      type: string
                    message:
                      description: Human-readable message indicating details about last transition.
                      type: string
                    reason:
                      description: Unique, one-word, CamelCase reason for the condition's last transition.
                      type: string
                    status:
                      description: Status is the status of the condition. Can be True, False, Unknown.
                      type: string
                    type:
                      description: Type is the type of the condition.
                      type: string
                  type: object
                nullable: true
                type: array
              lastSyncedAt:
                description: The last time that the controller synced with the remote backup target.
                format: date-time
                nullable: true
                type: string
              ownerID:
                description: The node ID on which the controller is responsible to reconcile this backup target CR.
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: longhorn/templates/crds.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    longhorn-manager: ""
  name: backupvolumes.longhorn.io
spec:
  group: longhorn.io
  names:
    kind: BackupVolume
    listKind: BackupVolumeList
    plural: backupvolumes
    shortNames:
    - lhbv
    singular: backupvolume
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The backup volume creation time
      jsonPath: .status.createdAt
      name: CreatedAt
      type: string
    - description: The backup volume last backup name
      jsonPath: .status.lastBackupName
      name: LastBackupName
      type: string
    - description: The backup volume last backup time
      jsonPath: .status.lastBackupAt
      name: LastBackupAt
      type: string
    - description: The backup volume last synced time
      jsonPath: .status.lastSyncedAt
      name: LastSyncedAt
      type: string
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: BackupVolume is where Longhorn stores backup volume object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            x-kubernetes-preserve-unknown-fields: true
          status:
            x-kubernetes-preserve-unknown-fields: true
        type: object
    served: true
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: The backup volume creation time
      jsonPath: .status.createdAt
      name: CreatedAt
      type: string
    - description: The backup volume last backup name
      jsonPath: .status.lastBackupName
      name: LastBackupName
      type: string
    - description: The backup volume last backup time
      jsonPath: .status.lastBackupAt
      name: LastBackupAt
      type: string
    - description: The backup volume last synced time
      jsonPath: .status.lastSyncedAt
      name: LastSyncedAt
      type: string
    name: v1beta2
    schema:
      openAPIV3Schema:
        description: BackupVolume is where Longhorn stores backup volume object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: BackupVolumeSpec defines the desired state of the Longhorn backup volume
            properties:
              syncRequestedAt:
                description: The time to request run sync the remote backup volume.
                format: date-time
                nullable: true
                type: string
            type: object
          status:
            description: BackupVolumeStatus defines the observed state of the Longhorn backup volume
            properties:
              backingImageChecksum:
                description: the backing image checksum.
                type: string
              backingImageName:
                description: The backing image name.
                type: string
              createdAt:
                description: The backup volume creation time.
                type: string
              dataStored:
                description: The backup volume block count.
                type: string
              labels:
                additionalProperties:
                  type: string
                description: The backup volume labels.
                nullable: true
                type: object
              lastBackupAt:
                description: The latest volume backup time.
                type: string
              lastBackupName:
                description: The latest volume backup name.
                type: string
              lastModificationTime:
                description: The backup volume config last modification time.
                format: date-time
                nullable: true
                type: string
              lastSyncedAt:
                description: The last time that the backup volume was synced into the cluster.
                format: date-time
                nullable: true
                type: string
              messages:
                additionalProperties:
                  type: string
                description: The error messages when call longhorn engine on list or inspect backup volumes.
                nullable: true
                type: object
              ownerID:
                description: The node ID on which the controller is responsible to reconcile this backup volume CR.
                type: string
              size:
                description: The backup volume size.
                type: string
              storageClassName:
                description: the storage class name of pv/pvc binding with the volume.
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: longhorn/templates/crds.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    longhorn-manager: ""
  name: engineimages.longhorn.io
spec:
  preserveUnknownFields: false
  conversion:
    strategy: Webhook
    webhook:
      clientConfig:
        service:
          name: longhorn-conversion-webhook
          namespace: longhorn-system
          path: /v1/webhook/conversion
          port: 9501
      conversionReviewVersions:
      - v1beta2
      - v1beta1
  group: longhorn.io
  names:
    kind: EngineImage
    listKind: EngineImageList
    plural: engineimages
    shortNames:
    - lhei
    singular: engineimage
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: State of the engine image
      jsonPath: .status.state
      name: State
      type: string
    - description: The Longhorn engine image
      jsonPath: .spec.image
      name: Image
      type: string
    - description: Number of resources using the engine image
      jsonPath: .status.refCount
      name: RefCount
      type: integer
    - description: The build date of the engine image
      jsonPath: .status.buildDate
      name: BuildDate
      type: date
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: EngineImage is where Longhorn stores engine image object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            x-kubernetes-preserve-unknown-fields: true
          status:
            x-kubernetes-preserve-unknown-fields: true
        type: object
    served: true
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: State of the engine image
      jsonPath: .status.state
      name: State
      type: string
    - description: The Longhorn engine image
      jsonPath: .spec.image
      name: Image
      type: string
    - description: Number of resources using the engine image
      jsonPath: .status.refCount
      name: RefCount
      type: integer
    - description: The build date of the engine image
      jsonPath: .status.buildDate
      name: BuildDate
      type: date
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta2
    schema:
      openAPIV3Schema:
        description: EngineImage is where Longhorn stores engine image object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: EngineImageSpec defines the desired state of the Longhorn engine image
            properties:
              image:
                minLength: 1
                type: string
            required:
            - image
            type: object
          status:
            description: EngineImageStatus defines the observed state of the Longhorn engine image
            properties:
              buildDate:
                type: string
              cliAPIMinVersion:
                type: integer
              cliAPIVersion:
                type: integer
              conditions:
                items:
                  properties:
                    lastProbeTime:
                      description: Last time we probed the condition.
                      type: string
                    lastTransitionTime:
                      description: Last time the condition transitioned from one status to another.
                      type: string
                    message:
                      description: Human-readable message indicating details about last transition.
                      type: string
                    reason:
                      description: Unique, one-word, CamelCase reason for the condition's last transition.
                      type: string
                    status:
                      description: Status is the status of the condition. Can be True, False, Unknown.
                      type: string
                    type:
                      description: Type is the type of the condition.
                      type: string
                  type: object
                nullable: true
                type: array
              controllerAPIMinVersion:
                type: integer
              controllerAPIVersion:
                type: integer
              dataFormatMinVersion:
                type: integer
              dataFormatVersion:
                type: integer
              gitCommit:
                type: string
              noRefSince:
                type: string
              nodeDeploymentMap:
                additionalProperties:
                  type: boolean
                nullable: true
                type: object
              ownerID:
                type: string
              refCount:
                type: integer
              state:
                type: string
              version:
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: longhorn/templates/crds.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    longhorn-manager: ""
  name: engines.longhorn.io
spec:
  group: longhorn.io
  names:
    kind: Engine
    listKind: EngineList
    plural: engines
    shortNames:
    - lhe
    singular: engine
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The current state of the engine
      jsonPath: .status.currentState
      name: State
      type: string
    - description: The node that the engine is on
      jsonPath: .spec.nodeID
      name: Node
      type: string
    - description: The instance manager of the engine
      jsonPath: .status.instanceManagerName
      name: InstanceManager
      type: string
    - description: The current image of the engine
      jsonPath: .status.currentImage
      name: Image
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: Engine is where Longhorn stores engine object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            x-kubernetes-preserve-unknown-fields: true
          status:
            x-kubernetes-preserve-unknown-fields: true
        type: object
    served: true
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: The current state of the engine
      jsonPath: .status.currentState
      name: State
      type: string
    - description: The node that the engine is on
      jsonPath: .spec.nodeID
      name: Node
      type: string
    - description: The instance manager of the engine
      jsonPath: .status.instanceManagerName
      name: InstanceManager
      type: string
    - description: The current image of the engine
      jsonPath: .status.currentImage
      name: Image
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta2
    schema:
      openAPIV3Schema:
        description: Engine is where Longhorn stores engine object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: EngineSpec defines the desired state of the Longhorn engine
            properties:
              active:
                type: boolean
              backendStoreDriver:
                enum:
                - v1
                - v2
                type: string
              backupVolume:
                type: string
              desireState:
                type: string
              disableFrontend:
                type: boolean
              engineImage:
                type: string
              frontend:
                enum:
                - blockdev
                - iscsi
                - nvmf
                - ""
                type: string
              logRequested:
                type: boolean
              nodeID:
                type: string
              replicaAddressMap:
                additionalProperties:
                  type: string
                type: object
              requestedBackupRestore:
                type: string
              requestedDataSource:
                type: string
              revisionCounterDisabled:
                type: boolean
              salvageRequested:
                type: boolean
              unmapMarkSnapChainRemovedEnabled:
                type: boolean
              upgradedReplicaAddressMap:
                additionalProperties:
                  type: string
                type: object
              volumeName:
                type: string
              volumeSize:
                format: int64
                type: string
            type: object
          status:
            description: EngineStatus defines the observed state of the Longhorn engine
            properties:
              backupStatus:
                additionalProperties:
                  properties:
                    backupURL:
                      type: string
                    error:
                      type: string
                    progress:
                      type: integer
                    replicaAddress:
                      type: string
                    snapshotName:
                      type: string
                    state:
                      type: string
                  type: object
                nullable: true
                type: object
              cloneStatus:
                additionalProperties:
                  properties:
                    error:
                      type: string
                    fromReplicaAddress:
                      type: string
                    isCloning:
                      type: boolean
                    progress:
                      type: integer
                    snapshotName:
                      type: string
                    state:
                      type: string
                  type: object
                nullable: true
                type: object
              conditions:
                items:
                  properties:
                    lastProbeTime:
                      description: Last time we probed the condition.
                      type: string
                    lastTransitionTime:
                      description: Last time the condition transitioned from one status to another.
                      type: string
                    message:
                      description: Human-readable message indicating details about last transition.
                      type: string
                    reason:
                      description: Unique, one-word, CamelCase reason for the condition's last transition.
                      type: string
                    status:
                      description: Status is the status of the condition. Can be True, False, Unknown.
                      type: string
                    type:
                      description: Type is the type of the condition.
                      type: string
                  type: object
                nullable: true
                type: array
              currentImage:
                type: string
              currentReplicaAddressMap:
                additionalProperties:
                  type: string
                nullable: true
                type: object
              currentSize:
                format: int64
                type: string
              currentState:
                type: string
              endpoint:
                type: string
              instanceManagerName:
                type: string
              ip:
                type: string
              isExpanding:
                type: boolean
              lastExpansionError:
                type: string
              lastExpansionFailedAt:
                type: string
              lastRestoredBackup:
                type: string
              logFetched:
                type: boolean
              ownerID:
                type: string
              port:
                type: integer
              purgeStatus:
                additionalProperties:
                  properties:
                    error:
                      type: string
                    isPurging:
                      type: boolean
                    progress:
                      type: integer
                    state:
                      type: string
                  type: object
                nullable: true
                type: object
              rebuildStatus:
                additionalProperties:
                  properties:
                    error:
                      type: string
                    fromReplicaAddress:
                      type: string
                    isRebuilding:
                      type: boolean
                    progress:
                      type: integer
                    state:
                      type: string
                  type: object
                nullable: true
                type: object
              replicaModeMap:
                additionalProperties:
                  type: string
                nullable: true
                type: object
              restoreStatus:
                additionalProperties:
                  properties:
                    backupURL:
                      type: string
                    currentRestoringBackup:
                      type: string
                    error:
                      type: string
                    filename:
                      type: string
                    isRestoring:
                      type: boolean
                    lastRestored:
                      type: string
                    progress:
                      type: integer
                    state:
                      type: string
                  type: object
                nullable: true
                type: object
              salvageExecuted:
                type: boolean
              snapshots:
                additionalProperties:
                  properties:
                    children:
                      additionalProperties:
                        type: boolean
                      nullable: true
                      type: object
                    created:
                      type: string
                    labels:
                      additionalProperties:
                        type: string
                      nullable: true
                      type: object
                    name:
                      type: string
                    parent:
                      type: string
                    removed:
                      type: boolean
                    size:
                      type: string
                    usercreated:
                      type: boolean
                  type: object
                nullable: true
                type: object
              snapshotsError:
                type: string
              started:
                type: boolean
              storageIP:
                type: string
              unmapMarkSnapChainRemovedEnabled:
                type: boolean
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: longhorn/templates/crds.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    longhorn-manager: ""
  name: instancemanagers.longhorn.io
spec:
  group: longhorn.io
  names:
    kind: InstanceManager
    listKind: InstanceManagerList
    plural: instancemanagers
    shortNames:
    - lhim
    singular: instancemanager
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The state of the instance manager
      jsonPath: .status.currentState
      name: State
      type: string
    - description: The type of the instance manager (engine or replica)
      jsonPath: .spec.type
      name: Type
      type: string
    - description: The node that the instance manager is running on
      jsonPath: .spec.nodeID
      name: Node
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: InstanceManager is where Longhorn stores instance manager object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            x-kubernetes-preserve-unknown-fields: true
          status:
            x-kubernetes-preserve-unknown-fields: true
        type: object
    served: true
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: The state of the instance manager
      jsonPath: .status.currentState
      name: State
      type: string
    - description: The type of the instance manager (engine or replica)
      jsonPath: .spec.type
      name: Type
      type: string
    - description: The node that the instance manager is running on
      jsonPath: .spec.nodeID
      name: Node
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta2
    schema:
      openAPIV3Schema:
        description: InstanceManager is where Longhorn stores instance manager object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: InstanceManagerSpec defines the desired state of the Longhorn instancer manager
            properties:
              image:
                type: string
              nodeID:
                type: string
              type:
                enum:
                - aio
                - engine
                - replica
                type: string
            type: object
          status:
            description: InstanceManagerStatus defines the observed state of the Longhorn instance manager
            properties:
              apiMinVersion:
                type: integer
              apiVersion:
                type: integer
              proxyApiMinVersion:
                type: integer
              proxyApiVersion:
                type: integer
              currentState:
                type: string
              instanceEngines:
                additionalProperties:
                  properties:
                    spec:
                      properties:
                        backendStoreDriver:
                          type: string
                        name:
                          type: string
                      type: object
                    status:
                      properties:
                        endpoint:
                          type: string
                        errorMsg:
                          type: string
                        listen:
                          type: string
                        portEnd:
                          format: int32
                          type: integer
                        portStart:
                          format: int32
                          type: integer
                        resourceVersion:
                          format: int64
                          type: integer
                        state:
                          type: string
                        type:
                          type: string
                      type: object
                  type: object
                nullable: true
                type: object
              instanceReplicas:
                additionalProperties:
                  properties:
                    spec:
                      properties:
                        backendStoreDriver:
                          type: string
                        name:
                          type: string
                      type: object
                    status:
                      properties:
                        endpoint:
                          type: string
                        errorMsg:
                          type: string
                        listen:
                          type: string
                        portEnd:
                          format: int32
                          type: integer
                        portStart:
                          format: int32
                          type: integer
                        resourceVersion:
                          format: int64
                          type: integer
                        state:
                          type: string
                        type:
                          type: string
                      type: object
                  type: object
                nullable: true
                type: object
              instances:
                additionalProperties:
                  properties:
                    spec:
                      properties:
                        backendStoreDriver:
                          type: string
                        name:
                          type: string
                      type: object
                    status:
                      properties:
                        endpoint:
                          type: string
                        errorMsg:
                          type: string
                        listen:
                          type: string
                        portEnd:
                          format: int32
                          type: integer
                        portStart:
                          format: int32
                          type: integer
                        resourceVersion:
                          format: int64
                          type: integer
                        state:
                          type: string
                        type:
                          type: string
                      type: object
                  type: object
                nullable: true
                description: 'Deprecated: Replaced by InstanceEngines and InstanceReplicas'
                type: object
              ip:
                type: string
              ownerID:
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: longhorn/templates/crds.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    longhorn-manager: ""
  name: nodes.longhorn.io
spec:
  preserveUnknownFields: false
  conversion:
    strategy: Webhook
    webhook:
      clientConfig:
        service:
          name: longhorn-conversion-webhook
          namespace: longhorn-system
          path: /v1/webhook/conversion
          port: 9501
      conversionReviewVersions:
      - v1beta2
      - v1beta1
  group: longhorn.io
  names:
    kind: Node
    listKind: NodeList
    plural: nodes
    shortNames:
    - lhn
    singular: node
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: Indicate whether the node is ready
      jsonPath: .status.conditions['Ready']['status']
      name: Ready
      type: string
    - description: Indicate whether the user disabled/enabled replica scheduling for the node
      jsonPath: .spec.allowScheduling
      name: AllowScheduling
      type: boolean
    - description: Indicate whether Longhorn can schedule replicas on the node
      jsonPath: .status.conditions['Schedulable']['status']
      name: Schedulable
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: Node is where Longhorn stores Longhorn node object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            x-kubernetes-preserve-unknown-fields: true
          status:
            x-kubernetes-preserve-unknown-fields: true
        type: object
    served: true
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: Indicate whether the node is ready
      jsonPath: .status.conditions[?(@.type=='Ready')].status
      name: Ready
      type: string
    - description: Indicate whether the user disabled/enabled replica scheduling for the node
      jsonPath: .spec.allowScheduling
      name: AllowScheduling
      type: boolean
    - description: Indicate whether Longhorn can schedule replicas on the node
      jsonPath: .status.conditions[?(@.type=='Schedulable')].status
      name: Schedulable
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta2
    schema:
      openAPIV3Schema:
        description: Node is where Longhorn stores Longhorn node object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: NodeSpec defines the desired state of the Longhorn node
            properties:
              allowScheduling:
                type: boolean
              disks:
                additionalProperties:
                  properties:
                    allowScheduling:
                      type: boolean
                    evictionRequested:
                      type: boolean
                    path:
                      type: string
                    storageReserved:
                      format: int64
                      type: integer
                    tags:
                      items:
                        type: string
                      type: array
                    diskType:
                      enum:
                      - filesystem
                      - block
                      type: string
                  type: object
                type: object
              evictionRequested:
                type: boolean
              instanceManagerCPURequest:
                type: integer
              name:
                type: string
              tags:
                items:
                  type: string
                type: array
            type: object
          status:
            description: NodeStatus defines the observed state of the Longhorn node
            properties:
              conditions:
                items:
                  properties:
                    lastProbeTime:
                      description: Last time we probed the condition.
                      type: string
                    lastTransitionTime:
                      description: Last time the condition transitioned from one status to another.
                      type: string
                    message:
                      description: Human-readable message indicating details about last transition.
                      type: string
                    reason:
                      description: Unique, one-word, CamelCase reason for the condition's last transition.
                      type: string
                    status:
                      description: Status is the status of the condition. Can be True, False, Unknown.
                      type: string
                    type:
                      description: Type is the type of the condition.
                      type: string
                  type: object
                nullable: true
                type: array
              diskStatus:
                additionalProperties:
                  properties:
                    conditions:
                      items:
                        properties:
                          lastProbeTime:
                            description: Last time we probed the condition.
                            type: string
                          lastTransitionTime:
                            description: Last time the condition transitioned from one status to another.
                            type: string
                          message:
                            description: Human-readable message indicating details about last transition.
                            type: string
                          reason:
                            description: Unique, one-word, CamelCase reason for the condition's last transition.
                            type: string
                          status:
                            description: Status is the status of the condition. Can be True, False, Unknown.
                            type: string
                          type:
                            description: Type is the type of the condition.
                            type: string
                        type: object
                      nullable: true
                      type: array
                    diskType:
                      type: string
                    diskUUID:
                      type: string
                    scheduledReplica:
                      additionalProperties:
                        format: int64
                        type: integer
                      nullable: true
                      type: object
                    storageAvailable:
                      format: int64
                      type: integer
                    storageMaximum:
                      format: int64
                      type: integer
                    storageScheduled:
                      format: int64
                      type: integer
                  type: object
                nullable: true
                type: object
              region:
                type: string
              snapshotCheckStatus:
                properties:
                  lastPeriodicCheckedAt:
                    format: date-time
                    type: string
                  snapshotCheckState:
                    type: string
                type: object
              zone:
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: longhorn/templates/crds.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    longhorn-manager: ""
  name: orphans.longhorn.io
spec:
  group: longhorn.io
  names:
    kind: Orphan
    listKind: OrphanList
    plural: orphans
    shortNames:
    - lho
    singular: orphan
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The type of the orphan
      jsonPath: .spec.orphanType
      name: Type
      type: string
    - description: The node that the orphan is on
      jsonPath: .spec.nodeID
      name: Node
      type: string
    name: v1beta2
    schema:
      openAPIV3Schema:
        description: Orphan is where Longhorn stores orphan object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: OrphanSpec defines the desired state of the Longhorn orphaned data
            properties:
              nodeID:
                description: The node ID on which the controller is responsible to reconcile this orphan CR.
                type: string
              orphanType:
                description: The type of the orphaned data. Can be "replica".
                type: string
              parameters:
                additionalProperties:
                  type: string
                description: The parameters of the orphaned data
                type: object
            type: object
          status:
            description: OrphanStatus defines the observed state of the Longhorn orphaned data
            properties:
              conditions:
                items:
                  properties:
                    lastProbeTime:
                      description: Last time we probed the condition.
                      type: string
                    lastTransitionTime:
                      description: Last time the condition transitioned from one status to another.
                      type: string
                    message:
                      description: Human-readable message indicating details about last transition.
                      type: string
                    reason:
                      description: Unique, one-word, CamelCase reason for the condition's last transition.
                      type: string
                    status:
                      description: Status is the status of the condition. Can be True, False, Unknown.
                      type: string
                    type:
                      description: Type is the type of the condition.
                      type: string
                  type: object
                nullable: true
                type: array
              ownerID:
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: longhorn/templates/crds.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  labels:
    longhorn-manager: ""
  name: recurringjobs.longhorn.io
spec:
  group: longhorn.io
  names:
    kind: RecurringJob
    listKind: RecurringJobList
    plural: recurringjobs
    shortNames:
    - lhrj
    singular: recurringjob
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: Sets groupings to the jobs. When set to "default" group will be added to the volume label when no other job label exist in volume
      jsonPath: .spec.groups
      name: Groups
      type: string
    - description: Should be one of "backup" or "snapshot"
      jsonPath: .spec.task
      name: Task
      type: string
    - description: The cron expression represents recurring job scheduling
      jsonPath: .spec.cron
      name: Cron
      type: string
    - description: The number of snapshots/backups to keep for the volume
      jsonPath: .spec.retain
      name: Retain
      type: integer
    - description: The concurrent job to run by each cron job
      jsonPath: .spec.concurrency
      name: Concurrency
      type: integer
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - description: Specify the labels
      jsonPath: .spec.labels
      name: Labels
      type: string
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: RecurringJob is where Longhorn stores recurring job object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            x-kubernetes-preserve-unknown-fields: true
          status:
            x-kubernetes-preserve-unknown-fields: true
        type: object
    served: true
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: Sets groupings to the jobs. When set to "default" group will be added to the volume label when no other job label exist in volume
      jsonPath: .spec.groups
      name: Groups
      type: string
    - description: Should be one of "snapshot", "snapshot-force-create", "snapshot-cleanup", "snapshot-delete", "backup", "backup-force-create" or "filesystem-trim"
      jsonPath: .spec.task
      name: Task
      type: string
    - description: The cron expression represents recurring job scheduling
      jsonPath: .spec.cron
      name: Cron
      type: string
    - description: The number of snapshots/backups to keep for the volume
      jsonPath: .spec.retain
      name: Retain
      type: integer
    - description: The concurrent job to run by each cron job
      jsonPath: .spec.concurrency
      name: Concurrency
      type: integer
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - description: Specify the labels
      jsonPath: .spec.labels
      name: Labels
      type: string
    name: v1beta2
    schema:
      openAPIV3Schema:
        description: RecurringJob is where Longhorn stores recurring job object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: RecurringJobSpec defines the desired state of the Longhorn recurring job
            properties:
              concurrency:
                description: The concurrency of taking the snapshot/backup.
                type: integer
              cron:
                description: The cron setting.
                type: string
              groups:
                description: The recurring job group.
                items:
                  type: string
                type: array
              labels:
                additionalProperties:
                  type: string
                description: The label of the snapshot/backup.
                type: object
              name:
                description: The recurring job name.
                type: string
              retain:
                description: The retain count of the snapshot/backup.
                type: integer
              task:
                description: The recurring job task. Can be "snapshot", "snapshot-force-create", "snapshot-cleanup", "snapshot-delete", "backup", "backup-force-create" or "filesystem-trim"
                enum:
                - snapshot
                - snapshot-force-create
                - snapshot-cleanup
                - snapshot-delete
                - backup
                - backup-force-create
                - filesystem-trim
                type: string
            type: object
          status:
            description: RecurringJobStatus defines the observed state of the Longhorn recurring job
            properties:
              ownerID:
                description: The owner ID which is responsible to reconcile this recurring job CR.
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: longhorn/templates/crds.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    longhorn-manager: ""
  name: replicas.longhorn.io
spec:
  group: longhorn.io
  names:
    kind: Replica
    listKind: ReplicaList
    plural: replicas
    shortNames:
    - lhr
    singular: replica
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The current state of the replica
      jsonPath: .status.currentState
      name: State
      type: string
    - description: The node that the replica is on
      jsonPath: .spec.nodeID
      name: Node
      type: string
    - description: The disk that the replica is on
      jsonPath: .spec.diskID
      name: Disk
      type: string
    - description: The instance manager of the replica
      jsonPath: .status.instanceManagerName
      name: InstanceManager
      type: string
    - description: The current image of the replica
      jsonPath: .status.currentImage
      name: Image
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: Replica is where Longhorn stores replica object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            x-kubernetes-preserve-unknown-fields: true
          status:
            x-kubernetes-preserve-unknown-fields: true
        type: object
    served: true
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: The current state of the replica
      jsonPath: .status.currentState
      name: State
      type: string
    - description: The node that the replica is on
      jsonPath: .spec.nodeID
      name: Node
      type: string
    - description: The disk that the replica is on
      jsonPath: .spec.diskID
      name: Disk
      type: string
    - description: The instance manager of the replica
      jsonPath: .status.instanceManagerName
      name: InstanceManager
      type: string
    - description: The current image of the replica
      jsonPath: .status.currentImage
      name: Image
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta2
    schema:
      openAPIV3Schema:
        description: Replica is where Longhorn stores replica object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: ReplicaSpec defines the desired state of the Longhorn replica
            properties:
              active:
                type: boolean
              backendStoreDriver:
                enum:
                - v1
                - v2
                type: string
              backingImage:
                type: string
              dataDirectoryName:
                type: string
              desireState:
                type: string
              diskID:
                type: string
              diskPath:
                type: string
              engineImage:
                type: string
              engineName:
                type: string
              failedAt:
                type: string
              hardNodeAffinity:
                type: string
              healthyAt:
                type: string
              logRequested:
                type: boolean
              nodeID:
                type: string
              rebuildRetryCount:
                type: integer
              revisionCounterDisabled:
                type: boolean
              salvageRequested:
                type: boolean
              unmapMarkDiskChainRemovedEnabled:
                type: boolean
              volumeName:
                type: string
              volumeSize:
                format: int64
                type: string
            type: object
          status:
            description: ReplicaStatus defines the observed state of the Longhorn replica
            properties:
              conditions:
                items:
                  properties:
                    lastProbeTime:
                      description: Last time we probed the condition.
                      type: string
                    lastTransitionTime:
                      description: Last time the condition transitioned from one status to another.
                      type: string
                    message:
                      description: Human-readable message indicating details about last transition.
                      type: string
                    reason:
                      description: Unique, one-word, CamelCase reason for the condition's last transition.
                      type: string
                    status:
                      description: Status is the status of the condition. Can be True, False, Unknown.
                      type: string
                    type:
                      description: Type is the type of the condition.
                      type: string
                  type: object
                nullable: true
                type: array
              currentImage:
                type: string
              currentState:
                type: string
              evictionRequested:
                type: boolean
              instanceManagerName:
                type: string
              ip:
                type: string
              logFetched:
                type: boolean
              ownerID:
                type: string
              port:
                type: integer
              salvageExecuted:
                type: boolean
              started:
                type: boolean
              storageIP:
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: longhorn/templates/crds.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    longhorn-manager: ""
  name: settings.longhorn.io
spec:
  group: longhorn.io
  names:
    kind: Setting
    listKind: SettingList
    plural: settings
    shortNames:
    - lhs
    singular: setting
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The value of the setting
      jsonPath: .value
      name: Value
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: Setting is where Longhorn stores setting object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          value:
            type: string
        required:
        - value
        type: object
    served: true
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: The value of the setting
      jsonPath: .value
      name: Value
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta2
    schema:
      openAPIV3Schema:
        description: Setting is where Longhorn stores setting object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          value:
            type: string
        required:
        - value
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: longhorn/templates/crds.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    longhorn-manager: ""
  name: sharemanagers.longhorn.io
spec:
  group: longhorn.io
  names:
    kind: ShareManager
    listKind: ShareManagerList
    plural: sharemanagers
    shortNames:
    - lhsm
    singular: sharemanager
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The state of the share manager
      jsonPath: .status.state
      name: State
      type: string
    - description: The node that the share manager is owned by
      jsonPath: .status.ownerID
      name: Node
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: ShareManager is where Longhorn stores share manager object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            x-kubernetes-preserve-unknown-fields: true
          status:
            x-kubernetes-preserve-unknown-fields: true
        type: object
    served: true
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: The state of the share manager
      jsonPath: .status.state
      name: State
      type: string
    - description: The node that the share manager is owned by
      jsonPath: .status.ownerID
      name: Node
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta2
    schema:
      openAPIV3Schema:
        description: ShareManager is where Longhorn stores share manager object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: ShareManagerSpec defines the desired state of the Longhorn share manager
            properties:
              image:
                description: Share manager image used for creating a share manager pod
                type: string
            type: object
          status:
            description: ShareManagerStatus defines the observed state of the Longhorn share manager
            properties:
              endpoint:
                description: NFS endpoint that can access the mounted filesystem of the volume
                type: string
              ownerID:
                description: The node ID on which the controller is responsible to reconcile this share manager resource
                type: string
              state:
                description: The state of the share manager resource
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: longhorn/templates/crds.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    longhorn-manager: ""
  name: snapshots.longhorn.io
spec:
  group: longhorn.io
  names:
    kind: Snapshot
    listKind: SnapshotList
    plural: snapshots
    shortNames:
    - lhsnap
    singular: snapshot
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The volume that this snapshot belongs to
      jsonPath: .spec.volume
      name: Volume
      type: string
    - description: Timestamp when the point-in-time snapshot was taken
      jsonPath: .status.creationTime
      name: CreationTime
      type: string
    - description: Indicates if the snapshot is ready to be used to restore/backup a volume
      jsonPath: .status.readyToUse
      name: ReadyToUse
      type: boolean
    - description: Represents the minimum size of volume required to rehydrate from this snapshot
      jsonPath: .status.restoreSize
      name: RestoreSize
      type: string
    - description: The actual size of the snapshot
      jsonPath: .status.size
      name: Size
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta2
    schema:
      openAPIV3Schema:
        description: Snapshot is the Schema for the snapshots API
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: SnapshotSpec defines the desired state of Longhorn Snapshot
            properties:
              createSnapshot:
                description: require creating a new snapshot
                type: boolean
              labels:
                additionalProperties:
                  type: string
                description: The labels of snapshot
                nullable: true
                type: object
              volume:
                description: the volume that this snapshot belongs to. This field is immutable after creation. Required
                type: string
            required:
            - volume
            type: object
          status:
            description: SnapshotStatus defines the observed state of Longhorn Snapshot
            properties:
              checksum:
                type: string
              children:
                additionalProperties:
                  type: boolean
                nullable: true
                type: object
              creationTime:
                type: string
              error:
                type: string
              labels:
                additionalProperties:
                  type: string
                nullable: true
                type: object
              markRemoved:
                type: boolean
              ownerID:
                type: string
              parent:
                type: string
              readyToUse:
                type: boolean
              restoreSize:
                format: int64
                type: integer
              size:
                format: int64
                type: integer
              userCreated:
                type: boolean
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: longhorn/templates/crds.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    longhorn-manager: ""
  name: supportbundles.longhorn.io
spec:
  group: longhorn.io
  names:
    kind: SupportBundle
    listKind: SupportBundleList
    plural: supportbundles
    shortNames:
    - lhbundle
    singular: supportbundle
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The state of the support bundle
      jsonPath: .status.state
      name: State
      type: string
    - description: The issue URL
      jsonPath: .spec.issueURL
      name: Issue
      type: string
    - description: A brief description of the issue
      jsonPath: .spec.description
      name: Description
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta2
    schema:
      openAPIV3Schema:
        description: SupportBundle is where Longhorn stores support bundle object
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: SupportBundleSpec defines the desired state of the Longhorn SupportBundle
            properties:
              description:
                description: A brief description of the issue
                type: string
              issueURL:
                description: The issue URL
                nullable: true
                type: string
              nodeID:
                description: The preferred responsible controller node ID.
                type: string
            required:
            - description
            type: object
          status:
            description: SupportBundleStatus defines the observed state of the Longhorn SupportBundle
            properties:
              conditions:
                items:
                  properties:
                    lastProbeTime:
                      description: Last time we probed the condition.
                      type: string
                    lastTransitionTime:
                      description: Last time the condition transitioned from one status to another.
                      type: string
                    message:
                      description: Human-readable message indicating details about last transition.
                      type: string
                    reason:
                      description: Unique, one-word, CamelCase reason for the condition's last transition.
                      type: string
                    status:
                      description: Status is the status of the condition. Can be True, False, Unknown.
                      type: string
                    type:
                      description: Type is the type of the condition.
                      type: string
                  type: object
                type: array
              filename:
                type: string
              filesize:
                format: int64
                type: integer
              image:
                description: The support bundle manager image
                type: string
              managerIP:
                description: The support bundle manager IP
                type: string
              ownerID:
                description: The current responsible controller node ID
                type: string
              progress:
                type: integer
              state:
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: longhorn/templates/crds.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    longhorn-manager: ""
  name: systembackups.longhorn.io
spec:
  group: longhorn.io
  names:
    kind: SystemBackup
    listKind: SystemBackupList
    plural: systembackups
    shortNames:
    - lhsb
    singular: systembackup
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The system backup Longhorn version
      jsonPath: .status.version
      name: Version
      type: string
    - description: The system backup state
      jsonPath: .status.state
      name: State
      type: string
    - description: The system backup creation time
      jsonPath: .status.createdAt
      name: Created
      type: string
    - description: The last time that the system backup was synced into the cluster
      jsonPath: .status.lastSyncedAt
      name: LastSyncedAt
      type: string
    name: v1beta2
    schema:
      openAPIV3Schema:
        description: SystemBackup is where Longhorn stores system backup object
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: SystemBackupSpec defines the desired state of the Longhorn SystemBackup
            properties:
              volumeBackupPolicy:
                description: The create volume backup policy Can be "if-not-present", "always" or "disabled"
                nullable: true
                type: string
            type: object
          status:
            description: SystemBackupStatus defines the observed state of the Longhorn SystemBackup
            properties:
              conditions:
                items:
                  properties:
                    lastProbeTime:
                      description: Last time we probed the condition.
                      type: string
                    lastTransitionTime:
                      description: Last time the condition transitioned from one status to another.
                      type: string
                    message:
                      description: Human-readable message indicating details about last transition.
                      type: string
                    reason:
                      description: Unique, one-word, CamelCase reason for the condition's last transition.
                      type: string
                    status:
                      description: Status is the status of the condition. Can be True, False, Unknown.
                      type: string
                    type:
                      description: Type is the type of the condition.
                      type: string
                  type: object
                nullable: true
                type: array
              createdAt:
                description: The system backup creation time.
                format: date-time
                type: string
              gitCommit:
                description: The saved Longhorn manager git commit.
                nullable: true
                type: string
              lastSyncedAt:
                description: The last time that the system backup was synced into the cluster.
                format: date-time
                nullable: true
                type: string
              managerImage:
                description: The saved manager image.
                type: string
              ownerID:
                description: The node ID of the responsible controller to reconcile this SystemBackup.
                type: string
              state:
                description: The system backup state.
                type: string
              version:
                description: The saved Longhorn version.
                nullable: true
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: longhorn/templates/crds.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    longhorn-manager: ""
  name: systemrestores.longhorn.io
spec:
  group: longhorn.io
  names:
    kind: SystemRestore
    listKind: SystemRestoreList
    plural: systemrestores
    shortNames:
    - lhsr
    singular: systemrestore
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The system restore state
      jsonPath: .status.state
      name: State
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta2
    schema:
      openAPIV3Schema:
        description: SystemRestore is where Longhorn stores system restore object
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: SystemRestoreSpec defines the desired state of the Longhorn SystemRestore
            properties:
              systemBackup:
                description: The system backup name in the object store.
                type: string
            required:
            - systemBackup
            type: object
          status:
            description: SystemRestoreStatus defines the observed state of the Longhorn SystemRestore
            properties:
              conditions:
                items:
                  properties:
                    lastProbeTime:
                      description: Last time we probed the condition.
                      type: string
                    lastTransitionTime:
                      description: Last time the condition transitioned from one status to another.
                      type: string
                    message:
                      description: Human-readable message indicating details about last transition.
                      type: string
                    reason:
                      description: Unique, one-word, CamelCase reason for the condition's last transition.
                      type: string
                    status:
                      description: Status is the status of the condition. Can be True, False, Unknown.
                      type: string
                    type:
                      description: Type is the type of the condition.
                      type: string
                  type: object
                nullable: true
                type: array
              ownerID:
                description: The node ID of the responsible controller to reconcile this SystemRestore.
                type: string
              sourceURL:
                description: The source system backup URL.
                type: string
              state:
                description: The system restore state.
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: longhorn/templates/crds.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    longhorn-manager: ""
  name: volumes.longhorn.io
spec:
  preserveUnknownFields: false
  conversion:
    strategy: Webhook
    webhook:
      clientConfig:
        service:
          name: longhorn-conversion-webhook
          namespace: longhorn-system
          path: /v1/webhook/conversion
          port: 9501
      conversionReviewVersions:
      - v1beta2
      - v1beta1
  group: longhorn.io
  names:
    kind: Volume
    listKind: VolumeList
    plural: volumes
    shortNames:
    - lhv
    singular: volume
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The state of the volume
      jsonPath: .status.state
      name: State
      type: string
    - description: The robustness of the volume
      jsonPath: .status.robustness
      name: Robustness
      type: string
    - description: The scheduled condition of the volume
      jsonPath: .status.conditions['scheduled']['status']
      name: Scheduled
      type: string
    - description: The size of the volume
      jsonPath: .spec.size
      name: Size
      type: string
    - description: The node that the volume is currently attaching to
      jsonPath: .status.currentNodeID
      name: Node
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        description: Volume is where Longhorn stores volume object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            x-kubernetes-preserve-unknown-fields: true
          status:
            x-kubernetes-preserve-unknown-fields: true
        type: object
    served: true
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - description: The state of the volume
      jsonPath: .status.state
      name: State
      type: string
    - description: The robustness of the volume
      jsonPath: .status.robustness
      name: Robustness
      type: string
    - description: The scheduled condition of the volume
      jsonPath: .status.conditions[?(@.type=='Schedulable')].status
      name: Scheduled
      type: string
    - description: The size of the volume
      jsonPath: .spec.size
      name: Size
      type: string
    - description: The node that the volume is currently attaching to
      jsonPath: .status.currentNodeID
      name: Node
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1beta2
    schema:
      openAPIV3Schema:
        description: Volume is where Longhorn stores volume object.
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: VolumeSpec defines the desired state of the Longhorn volume
            properties:
              Standby:
                type: boolean
              accessMode:
                enum:
                - rwo
                - rwx
                type: string
              backendStoreDriver:
                enum:
                - v1
                - v2
                type: string
              backingImage:
                type: string
              backupCompressionMethod:
                enum:
                - none
                - lz4
                - gzip
                type: string
              dataLocality:
                enum:
                - disabled
                - best-effort
                - strict-local
                type: string
              dataSource:
                type: string
              disableFrontend:
                type: boolean
              diskSelector:
                items:
                  type: string
                type: array
              encrypted:
                type: boolean
              engineImage:
                type: string
              fromBackup:
                type: string
              frontend:
                enum:
                - blockdev
                - iscsi
                - nvmf
                - ""
                type: string
              lastAttachedBy:
                type: string
              migratable:
                type: boolean
              migrationNodeID:
                type: string
              nodeID:
                type: string
              nodeSelector:
                items:
                  type: string
                type: array
              numberOfReplicas:
                type: integer
              offlineReplicaRebuilding:
                description: OfflineReplicaRebuilding is used to determine if the offline replica rebuilding feature is enabled or not
                enum:
                - ignored
                - disabled
                - enabled
                type: string
              replicaAutoBalance:
                enum:
                - ignored
                - disabled
                - least-effort
                - best-effort
                type: string
              replicaSoftAntiAffinity:
                description: Replica soft anti affinity of the volume. Set enabled to allow replicas to be scheduled on the same node
                enum:
                - ignored
                - enabled
                - disabled
                type: string
              replicaZoneSoftAntiAffinity:
                description: Replica zone soft anti affinity of the volume. Set enabled to allow replicas to be scheduled in the same zone
                enum:
                - ignored
                - enabled
                - disabled
                type: string
              restoreVolumeRecurringJob:
                enum:
                - ignored
                - enabled
                - disabled
                type: string
              revisionCounterDisabled:
                type: boolean
              size:
                format: int64
                type: string
              snapshotDataIntegrity:
                enum:
                - ignored
                - disabled
                - enabled
                - fast-check
                type: string
              staleReplicaTimeout:
                type: integer
              unmapMarkSnapChainRemoved:
                enum:
                - ignored
                - disabled
                - enabled
                type: string
            type: object
          status:
            description: VolumeStatus defines the observed state of the Longhorn volume
            properties:
              actualSize:
                format: int64
                type: integer
              cloneStatus:
                properties:
                  snapshot:
                    type: string
                  sourceVolume:
                    type: string
                  state:
                    type: string
                type: object
              conditions:
                items:
                  properties:
                    lastProbeTime:
                      description: Last time we probed the condition.
                      type: string
                    lastTransitionTime:
                      description: Last time the condition transitioned from one status to another.
                      type: string
                    message:
                      description: Human-readable message indicating details about last transition.
                      type: string
                    reason:
                      description: Unique, one-word, CamelCase reason for the condition's last transition.
                      type: string
                    status:
                      description: Status is the status of the condition. Can be True, False, Unknown.
                      type: string
                    type:
                      description: Type is the type of the condition.
                      type: string
                  type: object
                nullable: true
                type: array
              currentImage:
                type: string
              currentMigrationNodeID:
                description: the node that this volume is currently migrating to
                type: string
              currentNodeID:
                type: string
              expansionRequired:
                type: boolean
              frontendDisabled:
                type: boolean
              isStandby:
                type: boolean
              kubernetesStatus:
                properties:
                  lastPVCRefAt:
                    type: string
                  lastPodRefAt:
                    type: string
                  namespace:
                    description: determine if PVC/Namespace is history or not
                    type: string
                  pvName:
                    type: string
                  pvStatus:
                    type: string
                  pvcName:
                    type: string
                  workloadsStatus:
                    description: determine if Pod/Workload is history or not
                    items:
                      properties:
                        podName:
                          type: string
                        podStatus:
                          type: string
                        workloadName:
                          type: string
                        workloadType:
                          type: string
                      type: object
                    nullable: true
                    type: array
                type: object
              lastBackup:
                type: string
              lastBackupAt:
                type: string
              lastDegradedAt:
                type: string
              offlineReplicaRebuildingRequired:
                type: boolean
              ownerID:
                type: string
              pendingNodeID:
                description: Deprecated.
                type: string
              remountRequestedAt:
                type: string
              restoreInitiated:
                type: boolean
              restoreRequired:
                type: boolean
              robustness:
                type: string
              shareEndpoint:
                type: string
              shareState:
                type: string
              state:
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: longhorn/templates/crds.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    longhorn-manager: ""
  name: volumeattachments.longhorn.io
spec:
  group: longhorn.io
  names:
    kind: VolumeAttachment
    listKind: VolumeAttachmentList
    plural: volumeattachments
    shortNames:
      - lhva
    singular: volumeattachment
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v1beta2
      schema:
        openAPIV3Schema:
          description: VolumeAttachment stores attachment information of a Longhorn volume
          properties:
            apiVersion:
              description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
              type: string
            kind:
              description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
              type: string
            metadata:
              type: object
            spec:
              description: VolumeAttachmentSpec defines the desired state of Longhorn VolumeAttachment
              properties:
                attachmentTickets:
                  additionalProperties:
                    properties:
                      generation:
                        description: A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.
                        format: int64
                        type: integer
                      id:
                        description: The unique ID of this attachment. Used to differentiate different attachments of the same volume.
                        type: string
                      nodeID:
                        description: The node that this attachment is requesting
                        type: string
                      parameters:
                        additionalProperties:
                          type: string
                        description: Optional additional parameter for this attachment
                        type: object
                      type:
                        type: string
                    type: object
                  type: object
                volume:
                  description: The name of Longhorn volume of this VolumeAttachment
                  type: string
              required:
                - volume
              type: object
            status:
              description: VolumeAttachmentStatus defines the observed state of Longhorn VolumeAttachment
              properties:
                attachmentTicketStatuses:
                  additionalProperties:
                    properties:
                      conditions:
                        description: Record any error when trying to fulfill this attachment
                        items:
                          properties:
                            lastProbeTime:
                              description: Last time we probed the condition.
                              type: string
                            lastTransitionTime:
                              description: Last time the condition transitioned from one status to another.
                              type: string
                            message:
                              description: Human-readable message indicating details about last transition.
                              type: string
                            reason:
                              description: Unique, one-word, CamelCase reason for the condition's last transition.
                              type: string
                            status:
                              description: Status is the status of the condition. Can be True, False, Unknown.
                              type: string
                            type:
                              description: Type is the type of the condition.
                              type: string
                          type: object
                        nullable: true
                        type: array
                      generation:
                        description: A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.
                        format: int64
                        type: integer
                      id:
                        description: The unique ID of this attachment. Used to differentiate different attachments of the same volume.
                        type: string
                      satisfied:
                        description: Indicate whether this attachment ticket has been satisfied
                        type: boolean
                    required:
                      - conditions
                      - satisfied
                    type: object
                  type: object
              type: object
          type: object
      served: true
      storage: true
      subresources:
        status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: longhorn/templates/clusterrole.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: longhorn-role
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
rules:
- apiGroups:
  - apiextensions.k8s.io
  resources:
  - customresourcedefinitions
  verbs:
  - "*"
- apiGroups: [""]
  resources: ["pods", "events", "persistentvolumes", "persistentvolumeclaims","persistentvolumeclaims/status", "nodes", "proxy/nodes", "pods/log", "secrets", "services", "endpoints", "configmaps", "serviceaccounts"]
  verbs: ["*"]
- apiGroups: [""]
  resources: ["namespaces"]
  verbs: ["get", "list"]
- apiGroups: ["apps"]
  resources: ["daemonsets", "statefulsets", "deployments"]
  verbs: ["*"]
- apiGroups: ["batch"]
  resources: ["jobs", "cronjobs"]
  verbs: ["*"]
- apiGroups: ["policy"]
  resources: ["poddisruptionbudgets", "podsecuritypolicies"]
  verbs: ["*"]
- apiGroups: ["scheduling.k8s.io"]
  resources: ["priorityclasses"]
  verbs: ["watch", "list"]
- apiGroups: ["storage.k8s.io"]
  resources: ["storageclasses", "volumeattachments", "volumeattachments/status", "csinodes", "csidrivers"]
  verbs: ["*"]
- apiGroups: ["snapshot.storage.k8s.io"]
  resources: ["volumesnapshotclasses", "volumesnapshots", "volumesnapshotcontents", "volumesnapshotcontents/status"]
  verbs: ["*"]
- apiGroups: ["longhorn.io"]
  resources: ["volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings",
              "engineimages", "engineimages/status", "nodes", "nodes/status", "instancemanagers", "instancemanagers/status",
              "sharemanagers", "sharemanagers/status", "backingimages", "backingimages/status",
              "backingimagemanagers", "backingimagemanagers/status", "backingimagedatasources", "backingimagedatasources/status",
              "backuptargets", "backuptargets/status", "backupvolumes", "backupvolumes/status", "backups", "backups/status",
              "recurringjobs", "recurringjobs/status", "orphans", "orphans/status", "snapshots", "snapshots/status",
              "supportbundles", "supportbundles/status", "systembackups", "systembackups/status", "systemrestores", "systemrestores/status",
              "volumeattachments", "volumeattachments/status"]
  verbs: ["*"]
- apiGroups: ["coordination.k8s.io"]
  resources: ["leases"]
  verbs: ["*"]
- apiGroups: ["metrics.k8s.io"]
  resources: ["pods", "nodes"]
  verbs: ["get", "list"]
- apiGroups: ["apiregistration.k8s.io"]
  resources: ["apiservices"]
  verbs: ["list", "watch"]
- apiGroups: ["admissionregistration.k8s.io"]
  resources: ["mutatingwebhookconfigurations", "validatingwebhookconfigurations"]
  verbs: ["get", "list", "create", "patch", "delete"]
- apiGroups: ["rbac.authorization.k8s.io"]
  resources: ["roles", "rolebindings", "clusterrolebindings", "clusterroles"]
  verbs: ["*"]
---
# Source: longhorn/templates/clusterrolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: longhorn-bind
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: longhorn-role
subjects:
- kind: ServiceAccount
  name: longhorn-service-account
  namespace: longhorn-system
---
# Source: longhorn/templates/clusterrolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: longhorn-support-bundle
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: longhorn-support-bundle
  namespace: longhorn-system
---
# Source: longhorn/templates/daemonset-sa.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    app: longhorn-manager
  name: longhorn-backend
  namespace: longhorn-system
spec:
  type: ClusterIP
  sessionAffinity: ClientIP
  selector:
    app: longhorn-manager
  ports:
  - name: manager
    port: 9500
    targetPort: manager
---
# Source: longhorn/templates/deployment-ui.yaml
kind: Service
apiVersion: v1
metadata:
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    app: longhorn-ui
  name: longhorn-frontend
  namespace: longhorn-system
spec:
  type: ClusterIP
  selector:
    app: longhorn-ui
  ports:
  - name: http
    port: 80
    targetPort: http
    nodePort: null
---
# Source: longhorn/templates/services.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    app: longhorn-conversion-webhook
  name: longhorn-conversion-webhook
  namespace: longhorn-system
spec:
  type: ClusterIP
  sessionAffinity: ClientIP
  selector:
    app: longhorn-manager
  ports:
  - name: conversion-webhook
    port: 9501
    targetPort: conversion-wh
---
# Source: longhorn/templates/services.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    app: longhorn-admission-webhook
  name: longhorn-admission-webhook
  namespace: longhorn-system
spec:
  type: ClusterIP
  sessionAffinity: ClientIP
  selector:
    app: longhorn-manager
  ports:
  - name: admission-webhook
    port: 9502
    targetPort: admission-wh
---
# Source: longhorn/templates/services.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    app: longhorn-recovery-backend
  name: longhorn-recovery-backend
  namespace: longhorn-system
spec:
  type: ClusterIP
  sessionAffinity: ClientIP
  selector:
    app: longhorn-manager
  ports:
  - name: recovery-backend
    port: 9503
    targetPort: recov-backend
---
# Source: longhorn/templates/services.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
  name: longhorn-engine-manager
  namespace: longhorn-system
spec:
  clusterIP: None
  selector:
    longhorn.io/component: instance-manager
    longhorn.io/instance-manager-type: engine
---
# Source: longhorn/templates/services.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
  name: longhorn-replica-manager
  namespace: longhorn-system
spec:
  clusterIP: None
  selector:
    longhorn.io/component: instance-manager
    longhorn.io/instance-manager-type: replica
---
# Source: longhorn/templates/daemonset-sa.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    app: longhorn-manager
  name: longhorn-manager
  namespace: longhorn-system
spec:
  selector:
    matchLabels:
      app: longhorn-manager
  template:
    metadata:
      labels:
        app.kubernetes.io/name: longhorn
        app.kubernetes.io/instance: longhorn
        app.kubernetes.io/version: v1.5.3
        app: longhorn-manager
    spec:
      containers:
      - name: longhorn-manager
        image: longhornio/longhorn-manager:v1.5.3
        imagePullPolicy: IfNotPresent
        securityContext:
          privileged: true
        command:
        - longhorn-manager
        - -d
        - daemon
        - --engine-image
        - "longhornio/longhorn-engine:v1.5.3"
        - --instance-manager-image
        - "longhornio/longhorn-instance-manager:v1.5.3"
        - --share-manager-image
        - "longhornio/longhorn-share-manager:v1.5.3"
        - --backing-image-manager-image
        - "longhornio/backing-image-manager:v1.5.3"
        - --support-bundle-manager-image
        - "longhornio/support-bundle-kit:v0.0.27"
        - --manager-image
        - "longhornio/longhorn-manager:v1.5.3"
        - --service-account
        - longhorn-service-account
        ports:
        - containerPort: 9500
          name: manager
        - containerPort: 9501
          name: conversion-wh
        - containerPort: 9502
          name: admission-wh
        - containerPort: 9503
          name: recov-backend
        readinessProbe:
          httpGet:
            path: /v1/healthz
            port: 9501
            scheme: HTTPS
        volumeMounts:
        - name: dev
          mountPath: /host/dev/
        - name: proc
          mountPath: /host/proc/
        - name: longhorn
          mountPath: /var/lib/longhorn/
          mountPropagation: Bidirectional
        - name: longhorn-grpc-tls
          mountPath: /tls-files/
        env:
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: POD_IP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
        - name: NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
      volumes:
      - name: dev
        hostPath:
          path: /dev/
      - name: proc
        hostPath:
          path: /proc/
      - name: longhorn
        hostPath:
          path: /var/lib/longhorn/
      - name: longhorn-grpc-tls
        secret:
          secretName: longhorn-grpc-tls
          optional: true
      serviceAccountName: longhorn-service-account
  updateStrategy:
    rollingUpdate:
      maxUnavailable: "100%"
---
# Source: longhorn/templates/deployment-driver.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: longhorn-driver-deployer
  namespace: longhorn-system
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
spec:
  replicas: 1
  selector:
    matchLabels:
      app: longhorn-driver-deployer
  template:
    metadata:
      labels:
        app.kubernetes.io/name: longhorn
        app.kubernetes.io/instance: longhorn
        app.kubernetes.io/version: v1.5.3
        app: longhorn-driver-deployer
    spec:
      initContainers:
        - name: wait-longhorn-manager
          image: longhornio/longhorn-manager:v1.5.3
          command: ['sh', '-c', 'while [ $(curl -m 1 -s -o /dev/null -w "%{http_code}" http://longhorn-backend:9500/v1) != "200" ]; do echo waiting; sleep 2; done']
      containers:
        - name: longhorn-driver-deployer
          image: longhornio/longhorn-manager:v1.5.3
          imagePullPolicy: IfNotPresent
          command:
          - longhorn-manager
          - -d
          - deploy-driver
          - --manager-image
          - "longhornio/longhorn-manager:v1.5.3"
          - --manager-url
          - http://longhorn-backend:9500/v1
          env:
          - name: POD_NAMESPACE
            valueFrom:
              fieldRef:
                fieldPath: metadata.namespace
          - name: NODE_NAME
            valueFrom:
              fieldRef:
                fieldPath: spec.nodeName
          - name: SERVICE_ACCOUNT
            valueFrom:
              fieldRef:
                fieldPath: spec.serviceAccountName
          - name: CSI_ATTACHER_IMAGE
            value: "longhornio/csi-attacher:v4.2.0"
          - name: CSI_PROVISIONER_IMAGE
            value: "longhornio/csi-provisioner:v3.4.1"
          - name: CSI_NODE_DRIVER_REGISTRAR_IMAGE
            value: "longhornio/csi-node-driver-registrar:v2.7.0"
          - name: CSI_RESIZER_IMAGE
            value: "longhornio/csi-resizer:v1.7.0"
          - name: CSI_SNAPSHOTTER_IMAGE
            value: "longhornio/csi-snapshotter:v6.2.1"
          - name: CSI_LIVENESS_PROBE_IMAGE
            value: "longhornio/livenessprobe:v2.9.0"
      serviceAccountName: longhorn-service-account
      securityContext:
        runAsUser: 0
---
# Source: longhorn/templates/deployment-ui.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/name: longhorn
    app.kubernetes.io/instance: longhorn
    app.kubernetes.io/version: v1.5.3
    app: longhorn-ui
  name: longhorn-ui
  namespace: longhorn-system
spec:
  replicas: 2
  selector:
    matchLabels:
      app: longhorn-ui
  template:
    metadata:
      labels:
        app.kubernetes.io/name: longhorn
        app.kubernetes.io/instance: longhorn
        app.kubernetes.io/version: v1.5.3
        app: longhorn-ui
    spec:
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 1
            podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: app
                  operator: In
                  values:
                  - longhorn-ui
              topologyKey: kubernetes.io/hostname
      containers:
      - name: longhorn-ui
        image: longhornio/longhorn-ui:v1.5.3
        imagePullPolicy: IfNotPresent
        volumeMounts:
        - name : nginx-cache
          mountPath: /var/cache/nginx/
        - name : nginx-config
          mountPath: /var/config/nginx/
        - name: var-run
          mountPath: /var/run/
        ports:
        - containerPort: 8000
          name: http
        env:
          - name: LONGHORN_MANAGER_IP
            value: "http://longhorn-backend:9500"
          - name: LONGHORN_UI_PORT
            value: "8000"
      volumes:
      - emptyDir: {}
        name: nginx-cache
      - emptyDir: {}
        name: nginx-config
      - emptyDir: {}
        name: var-run
---
# Source: longhorn/templates/validate-psp-install.yaml
#

2.2.2longhorn-iscsi-installation.yaml

longhorn-iscsi-installation.yaml
# https://raw.githubusercontent.com/longhorn/longhorn/v1.5.3/deploy/prerequisite/longhorn-iscsi-installation.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: longhorn-iscsi-installation
  labels:
    app: longhorn-iscsi-installation
  annotations:
    command: &cmd OS=$(grep -E "^ID_LIKE=" /etc/os-release | cut -d '=' -f 2); if [[ -z "${OS}" ]]; then OS=$(grep -E "^ID=" /etc/os-release | cut -d '=' -f 2); fi; if [[ "${OS}" == *"debian"* ]]; then sudo apt-get update -q -y && sudo apt-get install -q -y open-iscsi && sudo systemctl -q enable iscsid && sudo systemctl start iscsid && sudo modprobe iscsi_tcp; elif [[ "${OS}" == *"suse"* ]]; then sudo zypper --gpg-auto-import-keys -q refresh && sudo zypper --gpg-auto-import-keys -q install -y open-iscsi && sudo systemctl -q enable iscsid && sudo systemctl start iscsid && sudo modprobe iscsi_tcp; else sudo yum makecache -q -y && sudo yum --setopt=tsflags=noscripts install -q -y iscsi-initiator-utils && echo "InitiatorName=$(/sbin/iscsi-iname)" > /etc/iscsi/initiatorname.iscsi && sudo systemctl -q enable iscsid && sudo systemctl start iscsid && sudo modprobe iscsi_tcp; fi && if [ $? -eq 0 ]; then echo "iscsi install successfully"; else echo "iscsi install failed error code $?"; fi
spec:
  selector:
    matchLabels:
      app: longhorn-iscsi-installation
  template:
    metadata:
      labels:
        app: longhorn-iscsi-installation
    spec:
      hostNetwork: true
      hostPID: true
      initContainers:
      - name: iscsi-installation
        command:
          - nsenter
          - --mount=/proc/1/ns/mnt
          - --
          - bash
          - -c
          - *cmd
        image: alpine:3.17
        securityContext:
          privileged: true
      containers:
      - name: sleep
        image: registry.k8s.io/pause:3.1
  updateStrategy:
    type: RollingUpdate

2.2.3longhorn-nfs-installation.yaml

longhorn-nfs-installation.yaml
 # https://raw.githubusercontent.com/longhorn/longhorn/v1.5.3/deploy/prerequisite/longhorn-nfs-installation.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: longhorn-nfs-installation
  labels:
    app: longhorn-nfs-installation
  annotations:
    command: &cmd OS=$(grep -E "^ID_LIKE=" /etc/os-release | cut -d '=' -f 2); if [[ -z "${OS}" ]]; then OS=$(grep -E "^ID=" /etc/os-release | cut -d '=' -f 2); fi; if [[ "${OS}" == *"debian"* ]]; then sudo apt-get update -q -y && sudo apt-get install -q -y nfs-common && sudo modprobe nfs; elif [[ "${OS}" == *"suse"* ]]; then sudo zypper --gpg-auto-import-keys -q refresh && sudo zypper --gpg-auto-import-keys -q install -y nfs-client && sudo modprobe nfs; else sudo yum makecache -q -y && sudo yum --setopt=tsflags=noscripts install -q -y nfs-utils && sudo modprobe nfs; fi && if [ $? -eq 0 ]; then echo "nfs install successfully"; else echo "nfs install failed error code $?"; fi
spec:
  selector:
    matchLabels:
      app: longhorn-nfs-installation
  template:
    metadata:
      labels:
        app: longhorn-nfs-installation
    spec:
      hostNetwork: true
      hostPID: true
      initContainers:
      - name: nfs-installation
        command:
          - nsenter
          - --mount=/proc/1/ns/mnt
          - --
          - bash
          - -c
          - *cmd
        image: alpine:3.12
        securityContext:
          privileged: true
      containers:
      - name: sleep
        image: registry.k8s.io/pause:3.1
  updateStrategy:
    type: RollingUpdate

文章:

posted @ 2023-12-25 13:53  kerwin-  阅读(186)  评论(0编辑  收藏  举报