1215 lines
30 KiB
YAML
1215 lines
30 KiB
YAML
|
apiVersion: v1
|
||
|
kind: Namespace
|
||
|
metadata:
|
||
|
name: longhorn-system
|
||
|
---
|
||
|
apiVersion: v1
|
||
|
kind: ServiceAccount
|
||
|
metadata:
|
||
|
name: longhorn-service-account
|
||
|
namespace: longhorn-system
|
||
|
---
|
||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||
|
kind: ClusterRole
|
||
|
metadata:
|
||
|
name: longhorn-role
|
||
|
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"]
|
||
|
verbs: ["*"]
|
||
|
- apiGroups: [""]
|
||
|
resources: ["namespaces"]
|
||
|
verbs: ["get", "list"]
|
||
|
- apiGroups: ["apps"]
|
||
|
resources: ["daemonsets", "statefulsets", "deployments"]
|
||
|
verbs: ["*"]
|
||
|
- apiGroups: ["batch"]
|
||
|
resources: ["jobs", "cronjobs"]
|
||
|
verbs: ["*"]
|
||
|
- apiGroups: ["policy"]
|
||
|
resources: ["poddisruptionbudgets"]
|
||
|
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"]
|
||
|
verbs: ["*"]
|
||
|
- apiGroups: ["coordination.k8s.io"]
|
||
|
resources: ["leases"]
|
||
|
verbs: ["*"]
|
||
|
- apiGroups: ["metrics.k8s.io"]
|
||
|
resources: ["pods", "nodes"]
|
||
|
verbs: ["get", "list"]
|
||
|
---
|
||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||
|
kind: ClusterRoleBinding
|
||
|
metadata:
|
||
|
name: longhorn-bind
|
||
|
roleRef:
|
||
|
apiGroup: rbac.authorization.k8s.io
|
||
|
kind: ClusterRole
|
||
|
name: longhorn-role
|
||
|
subjects:
|
||
|
- kind: ServiceAccount
|
||
|
name: longhorn-service-account
|
||
|
namespace: longhorn-system
|
||
|
---
|
||
|
apiVersion: apiextensions.k8s.io/v1
|
||
|
kind: CustomResourceDefinition
|
||
|
metadata:
|
||
|
labels:
|
||
|
longhorn-manager: Engine
|
||
|
name: engines.longhorn.io
|
||
|
spec:
|
||
|
group: longhorn.io
|
||
|
names:
|
||
|
kind: Engine
|
||
|
listKind: EngineList
|
||
|
plural: engines
|
||
|
shortNames:
|
||
|
- lhe
|
||
|
singular: engine
|
||
|
scope: Namespaced
|
||
|
versions:
|
||
|
- name: v1beta1
|
||
|
served: true
|
||
|
storage: true
|
||
|
schema:
|
||
|
openAPIV3Schema:
|
||
|
type: object
|
||
|
properties:
|
||
|
spec:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
status:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
subresources:
|
||
|
status: {}
|
||
|
additionalPrinterColumns:
|
||
|
- name: State
|
||
|
type: string
|
||
|
description: The current state of the engine
|
||
|
jsonPath: .status.currentState
|
||
|
- name: Node
|
||
|
type: string
|
||
|
description: The node that the engine is on
|
||
|
jsonPath: .spec.nodeID
|
||
|
- name: InstanceManager
|
||
|
type: string
|
||
|
description: The instance manager of the engine
|
||
|
jsonPath: .status.instanceManagerName
|
||
|
- name: Image
|
||
|
type: string
|
||
|
description: The current image of the engine
|
||
|
jsonPath: .status.currentImage
|
||
|
- name: Age
|
||
|
type: date
|
||
|
jsonPath: .metadata.creationTimestamp
|
||
|
---
|
||
|
apiVersion: apiextensions.k8s.io/v1
|
||
|
kind: CustomResourceDefinition
|
||
|
metadata:
|
||
|
labels:
|
||
|
longhorn-manager: Replica
|
||
|
name: replicas.longhorn.io
|
||
|
spec:
|
||
|
group: longhorn.io
|
||
|
names:
|
||
|
kind: Replica
|
||
|
listKind: ReplicaList
|
||
|
plural: replicas
|
||
|
shortNames:
|
||
|
- lhr
|
||
|
singular: replica
|
||
|
scope: Namespaced
|
||
|
versions:
|
||
|
- name: v1beta1
|
||
|
served: true
|
||
|
storage: true
|
||
|
schema:
|
||
|
openAPIV3Schema:
|
||
|
type: object
|
||
|
properties:
|
||
|
spec:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
status:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
subresources:
|
||
|
status: {}
|
||
|
additionalPrinterColumns:
|
||
|
- name: State
|
||
|
type: string
|
||
|
description: The current state of the replica
|
||
|
jsonPath: .status.currentState
|
||
|
- name: Node
|
||
|
type: string
|
||
|
description: The node that the replica is on
|
||
|
jsonPath: .spec.nodeID
|
||
|
- name: Disk
|
||
|
type: string
|
||
|
description: The disk that the replica is on
|
||
|
jsonPath: .spec.diskID
|
||
|
- name: InstanceManager
|
||
|
type: string
|
||
|
description: The instance manager of the replica
|
||
|
jsonPath: .status.instanceManagerName
|
||
|
- name: Image
|
||
|
type: string
|
||
|
description: The current image of the replica
|
||
|
jsonPath: .status.currentImage
|
||
|
- name: Age
|
||
|
type: date
|
||
|
jsonPath: .metadata.creationTimestamp
|
||
|
---
|
||
|
apiVersion: apiextensions.k8s.io/v1
|
||
|
kind: CustomResourceDefinition
|
||
|
metadata:
|
||
|
labels:
|
||
|
longhorn-manager: Setting
|
||
|
name: settings.longhorn.io
|
||
|
spec:
|
||
|
group: longhorn.io
|
||
|
names:
|
||
|
kind: Setting
|
||
|
listKind: SettingList
|
||
|
plural: settings
|
||
|
shortNames:
|
||
|
- lhs
|
||
|
singular: setting
|
||
|
scope: Namespaced
|
||
|
versions:
|
||
|
- name: v1beta1
|
||
|
served: true
|
||
|
storage: true
|
||
|
schema:
|
||
|
openAPIV3Schema:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
additionalPrinterColumns:
|
||
|
- name: Value
|
||
|
type: string
|
||
|
description: The value of the setting
|
||
|
jsonPath: .value
|
||
|
- name: Age
|
||
|
type: date
|
||
|
jsonPath: .metadata.creationTimestamp
|
||
|
---
|
||
|
apiVersion: apiextensions.k8s.io/v1
|
||
|
kind: CustomResourceDefinition
|
||
|
metadata:
|
||
|
labels:
|
||
|
longhorn-manager: Volume
|
||
|
name: volumes.longhorn.io
|
||
|
spec:
|
||
|
group: longhorn.io
|
||
|
names:
|
||
|
kind: Volume
|
||
|
listKind: VolumeList
|
||
|
plural: volumes
|
||
|
shortNames:
|
||
|
- lhv
|
||
|
singular: volume
|
||
|
scope: Namespaced
|
||
|
versions:
|
||
|
- name: v1beta1
|
||
|
served: true
|
||
|
storage: true
|
||
|
schema:
|
||
|
openAPIV3Schema:
|
||
|
type: object
|
||
|
properties:
|
||
|
spec:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
status:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
subresources:
|
||
|
status: {}
|
||
|
additionalPrinterColumns:
|
||
|
- name: State
|
||
|
type: string
|
||
|
description: The state of the volume
|
||
|
jsonPath: .status.state
|
||
|
- name: Robustness
|
||
|
type: string
|
||
|
description: The robustness of the volume
|
||
|
jsonPath: .status.robustness
|
||
|
- name: Scheduled
|
||
|
type: string
|
||
|
description: The scheduled condition of the volume
|
||
|
jsonPath: .status.conditions['scheduled']['status']
|
||
|
- name: Size
|
||
|
type: string
|
||
|
description: The size of the volume
|
||
|
jsonPath: .spec.size
|
||
|
- name: Node
|
||
|
type: string
|
||
|
description: The node that the volume is currently attaching to
|
||
|
jsonPath: .status.currentNodeID
|
||
|
- name: Age
|
||
|
type: date
|
||
|
jsonPath: .metadata.creationTimestamp
|
||
|
---
|
||
|
apiVersion: apiextensions.k8s.io/v1
|
||
|
kind: CustomResourceDefinition
|
||
|
metadata:
|
||
|
labels:
|
||
|
longhorn-manager: EngineImage
|
||
|
name: engineimages.longhorn.io
|
||
|
spec:
|
||
|
group: longhorn.io
|
||
|
names:
|
||
|
kind: EngineImage
|
||
|
listKind: EngineImageList
|
||
|
plural: engineimages
|
||
|
shortNames:
|
||
|
- lhei
|
||
|
singular: engineimage
|
||
|
scope: Namespaced
|
||
|
versions:
|
||
|
- name: v1beta1
|
||
|
served: true
|
||
|
storage: true
|
||
|
schema:
|
||
|
openAPIV3Schema:
|
||
|
type: object
|
||
|
properties:
|
||
|
spec:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
status:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
subresources:
|
||
|
status: {}
|
||
|
additionalPrinterColumns:
|
||
|
- name: State
|
||
|
type: string
|
||
|
description: State of the engine image
|
||
|
jsonPath: .status.state
|
||
|
- name: Image
|
||
|
type: string
|
||
|
description: The Longhorn engine image
|
||
|
jsonPath: .spec.image
|
||
|
- name: RefCount
|
||
|
type: integer
|
||
|
description: Number of volumes are using the engine image
|
||
|
jsonPath: .status.refCount
|
||
|
- name: BuildDate
|
||
|
type: date
|
||
|
description: The build date of the engine image
|
||
|
jsonPath: .status.buildDate
|
||
|
- name: Age
|
||
|
type: date
|
||
|
jsonPath: .metadata.creationTimestamp
|
||
|
---
|
||
|
apiVersion: apiextensions.k8s.io/v1
|
||
|
kind: CustomResourceDefinition
|
||
|
metadata:
|
||
|
labels:
|
||
|
longhorn-manager: Node
|
||
|
name: nodes.longhorn.io
|
||
|
spec:
|
||
|
group: longhorn.io
|
||
|
names:
|
||
|
kind: Node
|
||
|
listKind: NodeList
|
||
|
plural: nodes
|
||
|
shortNames:
|
||
|
- lhn
|
||
|
singular: node
|
||
|
scope: Namespaced
|
||
|
versions:
|
||
|
- name: v1beta1
|
||
|
served: true
|
||
|
storage: true
|
||
|
schema:
|
||
|
openAPIV3Schema:
|
||
|
type: object
|
||
|
properties:
|
||
|
spec:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
status:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
subresources:
|
||
|
status: {}
|
||
|
additionalPrinterColumns:
|
||
|
- name: Ready
|
||
|
type: string
|
||
|
description: Indicate whether the node is ready
|
||
|
jsonPath: .status.conditions['Ready']['status']
|
||
|
- name: AllowScheduling
|
||
|
type: boolean
|
||
|
description: Indicate whether the user disabled/enabled replica scheduling for the node
|
||
|
jsonPath: .spec.allowScheduling
|
||
|
- name: Schedulable
|
||
|
type: string
|
||
|
description: Indicate whether Longhorn can schedule replicas on the node
|
||
|
jsonPath: .status.conditions['Schedulable']['status']
|
||
|
- name: Age
|
||
|
type: date
|
||
|
jsonPath: .metadata.creationTimestamp
|
||
|
---
|
||
|
apiVersion: apiextensions.k8s.io/v1
|
||
|
kind: CustomResourceDefinition
|
||
|
metadata:
|
||
|
labels:
|
||
|
longhorn-manager: InstanceManager
|
||
|
name: instancemanagers.longhorn.io
|
||
|
spec:
|
||
|
group: longhorn.io
|
||
|
names:
|
||
|
kind: InstanceManager
|
||
|
listKind: InstanceManagerList
|
||
|
plural: instancemanagers
|
||
|
shortNames:
|
||
|
- lhim
|
||
|
singular: instancemanager
|
||
|
scope: Namespaced
|
||
|
versions:
|
||
|
- name: v1beta1
|
||
|
served: true
|
||
|
storage: true
|
||
|
schema:
|
||
|
openAPIV3Schema:
|
||
|
type: object
|
||
|
properties:
|
||
|
spec:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
status:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
subresources:
|
||
|
status: {}
|
||
|
additionalPrinterColumns:
|
||
|
- name: State
|
||
|
type: string
|
||
|
description: The state of the instance manager
|
||
|
jsonPath: .status.currentState
|
||
|
- name: Type
|
||
|
type: string
|
||
|
description: The type of the instance manager (engine or replica)
|
||
|
jsonPath: .spec.type
|
||
|
- name: Node
|
||
|
type: string
|
||
|
description: The node that the instance manager is running on
|
||
|
jsonPath: .spec.nodeID
|
||
|
- name: Age
|
||
|
type: date
|
||
|
jsonPath: .metadata.creationTimestamp
|
||
|
---
|
||
|
apiVersion: apiextensions.k8s.io/v1
|
||
|
kind: CustomResourceDefinition
|
||
|
metadata:
|
||
|
labels:
|
||
|
longhorn-manager: ShareManager
|
||
|
name: sharemanagers.longhorn.io
|
||
|
spec:
|
||
|
group: longhorn.io
|
||
|
names:
|
||
|
kind: ShareManager
|
||
|
listKind: ShareManagerList
|
||
|
plural: sharemanagers
|
||
|
shortNames:
|
||
|
- lhsm
|
||
|
singular: sharemanager
|
||
|
scope: Namespaced
|
||
|
versions:
|
||
|
- name: v1beta1
|
||
|
served: true
|
||
|
storage: true
|
||
|
schema:
|
||
|
openAPIV3Schema:
|
||
|
type: object
|
||
|
properties:
|
||
|
spec:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
status:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
subresources:
|
||
|
status: {}
|
||
|
additionalPrinterColumns:
|
||
|
- name: State
|
||
|
type: string
|
||
|
description: The state of the share manager
|
||
|
jsonPath: .status.state
|
||
|
- name: Node
|
||
|
type: string
|
||
|
description: The node that the share manager is owned by
|
||
|
jsonPath: .status.ownerID
|
||
|
- name: Age
|
||
|
type: date
|
||
|
jsonPath: .metadata.creationTimestamp
|
||
|
---
|
||
|
apiVersion: apiextensions.k8s.io/v1
|
||
|
kind: CustomResourceDefinition
|
||
|
metadata:
|
||
|
labels:
|
||
|
longhorn-manager: BackingImage
|
||
|
name: backingimages.longhorn.io
|
||
|
spec:
|
||
|
group: longhorn.io
|
||
|
names:
|
||
|
kind: BackingImage
|
||
|
listKind: BackingImageList
|
||
|
plural: backingimages
|
||
|
shortNames:
|
||
|
- lhbi
|
||
|
singular: backingimage
|
||
|
scope: Namespaced
|
||
|
versions:
|
||
|
- name: v1beta1
|
||
|
served: true
|
||
|
storage: true
|
||
|
schema:
|
||
|
openAPIV3Schema:
|
||
|
type: object
|
||
|
properties:
|
||
|
spec:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
status:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
subresources:
|
||
|
status: {}
|
||
|
additionalPrinterColumns:
|
||
|
- name: Image
|
||
|
type: string
|
||
|
description: The backing image name
|
||
|
jsonPath: .spec.image
|
||
|
- name: Age
|
||
|
type: date
|
||
|
jsonPath: .metadata.creationTimestamp
|
||
|
---
|
||
|
apiVersion: apiextensions.k8s.io/v1
|
||
|
kind: CustomResourceDefinition
|
||
|
metadata:
|
||
|
labels:
|
||
|
longhorn-manager: BackingImageManager
|
||
|
name: backingimagemanagers.longhorn.io
|
||
|
spec:
|
||
|
group: longhorn.io
|
||
|
names:
|
||
|
kind: BackingImageManager
|
||
|
listKind: BackingImageManagerList
|
||
|
plural: backingimagemanagers
|
||
|
shortNames:
|
||
|
- lhbim
|
||
|
singular: backingimagemanager
|
||
|
scope: Namespaced
|
||
|
versions:
|
||
|
- name: v1beta1
|
||
|
served: true
|
||
|
storage: true
|
||
|
schema:
|
||
|
openAPIV3Schema:
|
||
|
type: object
|
||
|
properties:
|
||
|
spec:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
status:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
subresources:
|
||
|
status: {}
|
||
|
additionalPrinterColumns:
|
||
|
- name: State
|
||
|
type: string
|
||
|
description: The current state of the manager
|
||
|
jsonPath: .status.currentState
|
||
|
- name: Image
|
||
|
type: string
|
||
|
description: The image the manager pod will use
|
||
|
jsonPath: .spec.image
|
||
|
- name: Node
|
||
|
type: string
|
||
|
description: The node the manager is on
|
||
|
jsonPath: .spec.nodeID
|
||
|
- name: DiskUUID
|
||
|
type: string
|
||
|
description: The disk the manager is responsible for
|
||
|
jsonPath: .spec.diskUUID
|
||
|
- name: DiskPath
|
||
|
type: string
|
||
|
description: The disk path the manager is using
|
||
|
jsonPath: .spec.diskPath
|
||
|
- name: Age
|
||
|
type: date
|
||
|
jsonPath: .metadata.creationTimestamp
|
||
|
---
|
||
|
apiVersion: apiextensions.k8s.io/v1
|
||
|
kind: CustomResourceDefinition
|
||
|
metadata:
|
||
|
labels:
|
||
|
longhorn-manager: BackingImageDataSource
|
||
|
name: backingimagedatasources.longhorn.io
|
||
|
spec:
|
||
|
group: longhorn.io
|
||
|
names:
|
||
|
kind: BackingImageDataSource
|
||
|
listKind: BackingImageDataSourceList
|
||
|
plural: backingimagedatasources
|
||
|
shortNames:
|
||
|
- lhbids
|
||
|
singular: backingimagedatasource
|
||
|
scope: Namespaced
|
||
|
versions:
|
||
|
- name: v1beta1
|
||
|
served: true
|
||
|
storage: true
|
||
|
schema:
|
||
|
openAPIV3Schema:
|
||
|
type: object
|
||
|
properties:
|
||
|
spec:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
status:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
subresources:
|
||
|
status: {}
|
||
|
additionalPrinterColumns:
|
||
|
- name: State
|
||
|
type: string
|
||
|
description: The current state of the pod used to provisione the backing image file from source
|
||
|
jsonPath: .status.currentState
|
||
|
- name: SourceType
|
||
|
type: string
|
||
|
description: The data source type
|
||
|
jsonPath: .spec.sourceType
|
||
|
- name: Node
|
||
|
type: string
|
||
|
description: The node the backing image file will be prepared on
|
||
|
jsonPath: .spec.nodeID
|
||
|
- name: DiskUUID
|
||
|
type: string
|
||
|
description: The disk the backing image file will be prepared on
|
||
|
jsonPath: .spec.diskUUID
|
||
|
- name: Age
|
||
|
type: date
|
||
|
jsonPath: .metadata.creationTimestamp
|
||
|
---
|
||
|
apiVersion: apiextensions.k8s.io/v1
|
||
|
kind: CustomResourceDefinition
|
||
|
metadata:
|
||
|
labels:
|
||
|
longhorn-manager: BackupTarget
|
||
|
name: backuptargets.longhorn.io
|
||
|
spec:
|
||
|
group: longhorn.io
|
||
|
names:
|
||
|
kind: BackupTarget
|
||
|
listKind: BackupTargetList
|
||
|
plural: backuptargets
|
||
|
shortNames:
|
||
|
- lhbt
|
||
|
singular: backuptarget
|
||
|
scope: Namespaced
|
||
|
versions:
|
||
|
- name: v1beta1
|
||
|
served: true
|
||
|
storage: true
|
||
|
schema:
|
||
|
openAPIV3Schema:
|
||
|
type: object
|
||
|
properties:
|
||
|
spec:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
status:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
subresources:
|
||
|
status: {}
|
||
|
additionalPrinterColumns:
|
||
|
- name: URL
|
||
|
type: string
|
||
|
description: The backup target URL
|
||
|
jsonPath: .spec.backupTargetURL
|
||
|
- name: Credential
|
||
|
type: string
|
||
|
description: The backup target credential secret
|
||
|
jsonPath: .spec.credentialSecret
|
||
|
- name: Interval
|
||
|
type: string
|
||
|
description: The backup target poll interval
|
||
|
jsonPath: .spec.pollInterval
|
||
|
- name: Available
|
||
|
type: boolean
|
||
|
description: Indicate whether the backup target is available or not
|
||
|
jsonPath: .status.available
|
||
|
- name: LastSyncedAt
|
||
|
type: string
|
||
|
description: The backup target last synced time
|
||
|
jsonPath: .status.lastSyncedAt
|
||
|
---
|
||
|
apiVersion: apiextensions.k8s.io/v1
|
||
|
kind: CustomResourceDefinition
|
||
|
metadata:
|
||
|
labels:
|
||
|
longhorn-manager: BackupVolume
|
||
|
name: backupvolumes.longhorn.io
|
||
|
spec:
|
||
|
group: longhorn.io
|
||
|
names:
|
||
|
kind: BackupVolume
|
||
|
listKind: BackupVolumeList
|
||
|
plural: backupvolumes
|
||
|
shortNames:
|
||
|
- lhbv
|
||
|
singular: backupvolume
|
||
|
scope: Namespaced
|
||
|
versions:
|
||
|
- name: v1beta1
|
||
|
served: true
|
||
|
storage: true
|
||
|
schema:
|
||
|
openAPIV3Schema:
|
||
|
type: object
|
||
|
properties:
|
||
|
spec:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
status:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
subresources:
|
||
|
status: {}
|
||
|
additionalPrinterColumns:
|
||
|
- name: CreatedAt
|
||
|
type: string
|
||
|
description: The backup volume creation time
|
||
|
jsonPath: .status.createdAt
|
||
|
- name: LastBackupName
|
||
|
type: string
|
||
|
description: The backup volume last backup name
|
||
|
jsonPath: .status.lastBackupName
|
||
|
- name: LastBackupAt
|
||
|
type: string
|
||
|
description: The backup volume last backup time
|
||
|
jsonPath: .status.lastBackupAt
|
||
|
- name: LastSyncedAt
|
||
|
type: string
|
||
|
description: The backup volume last synced time
|
||
|
jsonPath: .status.lastSyncedAt
|
||
|
---
|
||
|
apiVersion: apiextensions.k8s.io/v1
|
||
|
kind: CustomResourceDefinition
|
||
|
metadata:
|
||
|
labels:
|
||
|
longhorn-manager: Backup
|
||
|
name: backups.longhorn.io
|
||
|
spec:
|
||
|
group: longhorn.io
|
||
|
names:
|
||
|
kind: Backup
|
||
|
listKind: BackupList
|
||
|
plural: backups
|
||
|
shortNames:
|
||
|
- lhb
|
||
|
singular: backup
|
||
|
scope: Namespaced
|
||
|
versions:
|
||
|
- name: v1beta1
|
||
|
served: true
|
||
|
storage: true
|
||
|
schema:
|
||
|
openAPIV3Schema:
|
||
|
type: object
|
||
|
properties:
|
||
|
spec:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
status:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
subresources:
|
||
|
status: {}
|
||
|
additionalPrinterColumns:
|
||
|
- name: SnapshotName
|
||
|
type: string
|
||
|
description: The snapshot name
|
||
|
jsonPath: .status.snapshotName
|
||
|
- name: SnapshotSize
|
||
|
type: string
|
||
|
description: The snapshot size
|
||
|
jsonPath: .status.size
|
||
|
- name: SnapshotCreatedAt
|
||
|
type: string
|
||
|
description: The snapshot creation time
|
||
|
jsonPath: .status.snapshotCreatedAt
|
||
|
- name: State
|
||
|
type: string
|
||
|
description: The backup state
|
||
|
jsonPath: .status.state
|
||
|
- name: LastSyncedAt
|
||
|
type: string
|
||
|
description: The backup last synced time
|
||
|
jsonPath: .status.lastSyncedAt
|
||
|
---
|
||
|
apiVersion: apiextensions.k8s.io/v1
|
||
|
kind: CustomResourceDefinition
|
||
|
metadata:
|
||
|
labels:
|
||
|
longhorn-manager: RecurringJob
|
||
|
name: recurringjobs.longhorn.io
|
||
|
spec:
|
||
|
group: longhorn.io
|
||
|
names:
|
||
|
kind: RecurringJob
|
||
|
listKind: RecurringJobList
|
||
|
plural: recurringjobs
|
||
|
shortNames:
|
||
|
- lhrj
|
||
|
singular: recurringjob
|
||
|
scope: Namespaced
|
||
|
versions:
|
||
|
- name: v1beta1
|
||
|
served: true
|
||
|
storage: true
|
||
|
schema:
|
||
|
openAPIV3Schema:
|
||
|
type: object
|
||
|
properties:
|
||
|
metadata:
|
||
|
type: object
|
||
|
properties:
|
||
|
name:
|
||
|
type: string
|
||
|
spec:
|
||
|
type: object
|
||
|
properties:
|
||
|
groups:
|
||
|
type: array
|
||
|
items:
|
||
|
type: string
|
||
|
task:
|
||
|
type: string
|
||
|
pattern: "^snapshot|backup$"
|
||
|
cron:
|
||
|
type: string
|
||
|
retain:
|
||
|
type: integer
|
||
|
concurrency:
|
||
|
type: integer
|
||
|
labels:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
status:
|
||
|
x-kubernetes-preserve-unknown-fields: true
|
||
|
subresources:
|
||
|
status: {}
|
||
|
additionalPrinterColumns:
|
||
|
- name: Groups
|
||
|
type: string
|
||
|
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: Task
|
||
|
type: string
|
||
|
description: Should be one of "backup" or "snapshot".
|
||
|
jsonPath: .spec.task
|
||
|
- name: Cron
|
||
|
type: string
|
||
|
description: The cron expression represents recurring job scheduling.
|
||
|
jsonPath: .spec.cron
|
||
|
- name: Retain
|
||
|
type: integer
|
||
|
description: The number of snapshots/backups to keep for the volume.
|
||
|
jsonPath: .spec.retain
|
||
|
- name: Concurrency
|
||
|
type: integer
|
||
|
description: The concurrent job to run by each cron job.
|
||
|
jsonPath: .spec.concurrency
|
||
|
- name: Age
|
||
|
type: date
|
||
|
jsonPath: .metadata.creationTimestamp
|
||
|
- name: Labels
|
||
|
type: string
|
||
|
description: Specify the labels
|
||
|
jsonPath: .spec.labels
|
||
|
---
|
||
|
---
|
||
|
apiVersion: v1
|
||
|
kind: ConfigMap
|
||
|
metadata:
|
||
|
name: longhorn-default-setting
|
||
|
namespace: longhorn-system
|
||
|
data:
|
||
|
default-setting.yaml: |-
|
||
|
backup-target:
|
||
|
backup-target-credential-secret:
|
||
|
allow-recurring-job-while-volume-detached:
|
||
|
create-default-disk-labeled-nodes:
|
||
|
default-data-path:
|
||
|
replica-soft-anti-affinity:
|
||
|
replica-auto-balance: "best-effort"
|
||
|
storage-over-provisioning-percentage:
|
||
|
storage-minimal-available-percentage:
|
||
|
upgrade-checker:
|
||
|
default-replica-count:
|
||
|
default-data-locality:
|
||
|
default-longhorn-static-storage-class:
|
||
|
backupstore-poll-interval:
|
||
|
taint-toleration: "dedicated=storage:NoSchedule"
|
||
|
system-managed-components-node-selector: "dedicated=storage"
|
||
|
priority-class:
|
||
|
auto-salvage:
|
||
|
auto-delete-pod-when-volume-detached-unexpectedly:
|
||
|
disable-scheduling-on-cordoned-node:
|
||
|
replica-zone-soft-anti-affinity:
|
||
|
node-down-pod-deletion-policy:
|
||
|
allow-node-drain-with-last-healthy-replica:
|
||
|
mkfs-ext4-parameters:
|
||
|
disable-replica-rebuild:
|
||
|
replica-replenishment-wait-interval:
|
||
|
concurrent-replica-rebuild-per-node-limit:
|
||
|
disable-revision-counter:
|
||
|
system-managed-pods-image-pull-policy:
|
||
|
allow-volume-creation-with-degraded-availability:
|
||
|
auto-cleanup-system-generated-snapshot:
|
||
|
concurrent-automatic-engine-upgrade-per-node-limit:
|
||
|
backing-image-cleanup-wait-interval:
|
||
|
backing-image-recovery-wait-interval:
|
||
|
guaranteed-engine-manager-cpu:
|
||
|
guaranteed-replica-manager-cpu:
|
||
|
---
|
||
|
apiVersion: policy/v1beta1
|
||
|
kind: PodSecurityPolicy
|
||
|
metadata:
|
||
|
name: longhorn-psp
|
||
|
spec:
|
||
|
privileged: true
|
||
|
allowPrivilegeEscalation: true
|
||
|
requiredDropCapabilities:
|
||
|
- NET_RAW
|
||
|
allowedCapabilities:
|
||
|
- SYS_ADMIN
|
||
|
hostNetwork: false
|
||
|
hostIPC: false
|
||
|
hostPID: true
|
||
|
runAsUser:
|
||
|
rule: RunAsAny
|
||
|
seLinux:
|
||
|
rule: RunAsAny
|
||
|
fsGroup:
|
||
|
rule: RunAsAny
|
||
|
supplementalGroups:
|
||
|
rule: RunAsAny
|
||
|
volumes:
|
||
|
- configMap
|
||
|
- downwardAPI
|
||
|
- emptyDir
|
||
|
- secret
|
||
|
- projected
|
||
|
- hostPath
|
||
|
---
|
||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||
|
kind: Role
|
||
|
metadata:
|
||
|
name: longhorn-psp-role
|
||
|
namespace: longhorn-system
|
||
|
rules:
|
||
|
- apiGroups:
|
||
|
- policy
|
||
|
resources:
|
||
|
- podsecuritypolicies
|
||
|
verbs:
|
||
|
- use
|
||
|
resourceNames:
|
||
|
- longhorn-psp
|
||
|
---
|
||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||
|
kind: RoleBinding
|
||
|
metadata:
|
||
|
name: longhorn-psp-binding
|
||
|
namespace: longhorn-system
|
||
|
roleRef:
|
||
|
apiGroup: rbac.authorization.k8s.io
|
||
|
kind: Role
|
||
|
name: longhorn-psp-role
|
||
|
subjects:
|
||
|
- kind: ServiceAccount
|
||
|
name: longhorn-service-account
|
||
|
namespace: longhorn-system
|
||
|
- kind: ServiceAccount
|
||
|
name: default
|
||
|
namespace: longhorn-system
|
||
|
---
|
||
|
apiVersion: v1
|
||
|
kind: ConfigMap
|
||
|
metadata:
|
||
|
name: longhorn-storageclass
|
||
|
namespace: longhorn-system
|
||
|
data:
|
||
|
storageclass.yaml: |
|
||
|
kind: StorageClass
|
||
|
apiVersion: storage.k8s.io/v1
|
||
|
metadata:
|
||
|
name: longhorn
|
||
|
provisioner: driver.longhorn.io
|
||
|
allowVolumeExpansion: true
|
||
|
reclaimPolicy: Retain
|
||
|
volumeBindingMode: Immediate
|
||
|
dataLocality: "best-effort"
|
||
|
parameters:
|
||
|
fsType: "xfs"
|
||
|
numberOfReplicas: "2"
|
||
|
staleReplicaTimeout: "2880"
|
||
|
fromBackup: ""
|
||
|
nodeSelector: "storage"
|
||
|
---
|
||
|
apiVersion: apps/v1
|
||
|
kind: DaemonSet
|
||
|
metadata:
|
||
|
labels:
|
||
|
app: longhorn-manager
|
||
|
name: longhorn-manager
|
||
|
namespace: longhorn-system
|
||
|
spec:
|
||
|
selector:
|
||
|
matchLabels:
|
||
|
app: longhorn-manager
|
||
|
template:
|
||
|
metadata:
|
||
|
labels:
|
||
|
app: longhorn-manager
|
||
|
spec:
|
||
|
containers:
|
||
|
- name: longhorn-manager
|
||
|
image: longhornio/longhorn-manager:v1.2.4
|
||
|
imagePullPolicy: IfNotPresent
|
||
|
securityContext:
|
||
|
privileged: true
|
||
|
command:
|
||
|
- longhorn-manager
|
||
|
- -d
|
||
|
- daemon
|
||
|
- --engine-image
|
||
|
- longhornio/longhorn-engine:v1.2.4
|
||
|
- --instance-manager-image
|
||
|
- longhornio/longhorn-instance-manager:v1_20220303
|
||
|
- --share-manager-image
|
||
|
- longhornio/longhorn-share-manager:v1_20211020
|
||
|
- --backing-image-manager-image
|
||
|
- longhornio/backing-image-manager:v2_20210820
|
||
|
- --manager-image
|
||
|
- longhornio/longhorn-manager:v1.2.4
|
||
|
- --service-account
|
||
|
- longhorn-service-account
|
||
|
ports:
|
||
|
- containerPort: 9500
|
||
|
name: manager
|
||
|
readinessProbe:
|
||
|
tcpSocket:
|
||
|
port: 9500
|
||
|
volumeMounts:
|
||
|
- name: dev
|
||
|
mountPath: /host/dev/
|
||
|
- name: proc
|
||
|
mountPath: /host/proc/
|
||
|
- name: longhorn
|
||
|
mountPath: /var/lib/longhorn/
|
||
|
mountPropagation: Bidirectional
|
||
|
- name: longhorn-default-setting
|
||
|
mountPath: /var/lib/longhorn-setting/
|
||
|
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
|
||
|
# Should be: mount path of the volume longhorn-default-setting + the key of the configmap data in 04-default-setting.yaml
|
||
|
- name: DEFAULT_SETTING_PATH
|
||
|
value: /var/lib/longhorn-setting/default-setting.yaml
|
||
|
volumes:
|
||
|
- name: dev
|
||
|
hostPath:
|
||
|
path: /dev/
|
||
|
- name: proc
|
||
|
hostPath:
|
||
|
path: /proc/
|
||
|
- name: longhorn
|
||
|
hostPath:
|
||
|
path: /var/lib/longhorn/
|
||
|
- name: longhorn-default-setting
|
||
|
configMap:
|
||
|
name: longhorn-default-setting
|
||
|
tolerations:
|
||
|
- key: dedicated
|
||
|
operator: Equal
|
||
|
value: storage
|
||
|
effect: NoSchedule
|
||
|
serviceAccountName: longhorn-service-account
|
||
|
updateStrategy:
|
||
|
rollingUpdate:
|
||
|
maxUnavailable: "100%"
|
||
|
---
|
||
|
apiVersion: v1
|
||
|
kind: Service
|
||
|
metadata:
|
||
|
annotations:
|
||
|
prometheus.io/scrape: "true"
|
||
|
prometheus.io/port: "9500"
|
||
|
labels:
|
||
|
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
|
||
|
---
|
||
|
apiVersion: v1
|
||
|
kind: Service
|
||
|
metadata:
|
||
|
name: longhorn-engine-manager
|
||
|
namespace: longhorn-system
|
||
|
spec:
|
||
|
clusterIP: None
|
||
|
selector:
|
||
|
longhorn.io/component: instance-manager
|
||
|
longhorn.io/instance-manager-type: engine
|
||
|
---
|
||
|
apiVersion: v1
|
||
|
kind: Service
|
||
|
metadata:
|
||
|
name: longhorn-replica-manager
|
||
|
namespace: longhorn-system
|
||
|
spec:
|
||
|
clusterIP: None
|
||
|
selector:
|
||
|
longhorn.io/component: instance-manager
|
||
|
longhorn.io/instance-manager-type: replica
|
||
|
---
|
||
|
apiVersion: apps/v1
|
||
|
kind: Deployment
|
||
|
metadata:
|
||
|
labels:
|
||
|
app: longhorn-ui
|
||
|
name: longhorn-ui
|
||
|
namespace: longhorn-system
|
||
|
spec:
|
||
|
replicas: 1
|
||
|
selector:
|
||
|
matchLabels:
|
||
|
app: longhorn-ui
|
||
|
template:
|
||
|
metadata:
|
||
|
labels:
|
||
|
app: longhorn-ui
|
||
|
spec:
|
||
|
containers:
|
||
|
- name: longhorn-ui
|
||
|
image: longhornio/longhorn-ui:v1.2.4
|
||
|
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"
|
||
|
volumes:
|
||
|
- emptyDir: {}
|
||
|
name: nginx-cache
|
||
|
- emptyDir: {}
|
||
|
name: nginx-config
|
||
|
- emptyDir: {}
|
||
|
name: var-run
|
||
|
tolerations:
|
||
|
- key: dedicated
|
||
|
operator: Equal
|
||
|
value: storage
|
||
|
effect: NoSchedule
|
||
|
---
|
||
|
kind: Service
|
||
|
apiVersion: v1
|
||
|
metadata:
|
||
|
labels:
|
||
|
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
|
||
|
---
|
||
|
apiVersion: apps/v1
|
||
|
kind: Deployment
|
||
|
metadata:
|
||
|
name: longhorn-driver-deployer
|
||
|
namespace: longhorn-system
|
||
|
spec:
|
||
|
replicas: 1
|
||
|
selector:
|
||
|
matchLabels:
|
||
|
app: longhorn-driver-deployer
|
||
|
template:
|
||
|
metadata:
|
||
|
labels:
|
||
|
app: longhorn-driver-deployer
|
||
|
spec:
|
||
|
initContainers:
|
||
|
- name: wait-longhorn-manager
|
||
|
image: longhornio/longhorn-manager:v1.2.4
|
||
|
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.2.4
|
||
|
imagePullPolicy: IfNotPresent
|
||
|
command:
|
||
|
- longhorn-manager
|
||
|
- -d
|
||
|
- deploy-driver
|
||
|
- --manager-image
|
||
|
- longhornio/longhorn-manager:v1.2.4
|
||
|
- --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
|
||
|
tolerations:
|
||
|
- key: dedicated
|
||
|
operator: Equal
|
||
|
value: storage
|
||
|
effect: NoSchedule
|
||
|
serviceAccountName: longhorn-service-account
|
||
|
securityContext:
|
||
|
runAsUser: 0
|
||
|
---
|