123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431 |
- 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", "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: ["storage.k8s.io"]
- resources: ["storageclasses", "volumeattachments", "csinodes", "csidrivers"]
- verbs: ["*"]
- - apiGroups: ["coordination.k8s.io"]
- resources: ["leases"]
- verbs: ["get", "watch", "list", "delete", "update", "create"]
- - apiGroups: ["longhorn.io"]
- resources: ["volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings",
- "engineimages", "engineimages/status", "nodes", "nodes/status", "instancemanagers", "instancemanagers/status"]
- verbs: ["*"]
- - apiGroups: ["coordination.k8s.io"]
- resources: ["leases"]
- verbs: ["*"]
- # to be removed after v0.7.0
- - apiGroups: ["longhorn.rancher.io"]
- resources: ["volumes", "engines", "replicas", "settings", "engineimages", "nodes", "instancemanagers"]
- verbs: ["*"]
- ---
- 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/v1beta1
- 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
- version: v1beta1
- subresources:
- status: {}
- ---
- apiVersion: apiextensions.k8s.io/v1beta1
- 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
- version: v1beta1
- subresources:
- status: {}
- ---
- apiVersion: apiextensions.k8s.io/v1beta1
- 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
- version: v1beta1
- ---
- apiVersion: apiextensions.k8s.io/v1beta1
- 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
- version: v1beta1
- subresources:
- status: {}
- ---
- apiVersion: apiextensions.k8s.io/v1beta1
- 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
- version: v1beta1
- subresources:
- status: {}
- ---
- apiVersion: apiextensions.k8s.io/v1beta1
- 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
- version: v1beta1
- subresources:
- status: {}
- ---
- apiVersion: apiextensions.k8s.io/v1beta1
- 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
- version: v1beta1
- subresources:
- status: {}
- ---
- apiVersion: v1
- kind: ConfigMap
- metadata:
- name: longhorn-default-setting
- namespace: longhorn-system
- data:
- default-setting.yaml: |-
- backup-target:
- backup-target-credential-secret:
- create-default-disk-labeled-nodes:
- default-data-path:
- replica-soft-anti-affinity:
- storage-over-provisioning-percentage:
- storage-minimal-available-percentage:
- upgrade-checker:
- default-replica-count:
- guaranteed-engine-cpu:
- default-longhorn-static-storage-class:
- backupstore-poll-interval:
- taint-toleration:
- ---
- 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:v0.7.0
- imagePullPolicy: Always
- securityContext:
- privileged: true
- command:
- - longhorn-manager
- - -d
- - daemon
- - --engine-image
- - longhornio/longhorn-engine:v0.7.0
- - --manager-image
- - longhornio/longhorn-manager:v0.7.0
- - --service-account
- - longhorn-service-account
- ports:
- - containerPort: 9500
- volumeMounts:
- - name: dev
- mountPath: /host/dev/
- - name: proc
- mountPath: /host/proc/
- - name: varrun
- mountPath: /var/run/
- - name: longhorn
- mountPath: /var/lib/rancher/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: varrun
- hostPath:
- path: /var/run/
- - name: longhorn
- hostPath:
- path: /var/lib/rancher/longhorn/
- - name: longhorn-default-setting
- configMap:
- name: longhorn-default-setting
- serviceAccountName: longhorn-service-account
- ---
- kind: Service
- apiVersion: v1
- metadata:
- labels:
- app: longhorn-manager
- name: longhorn-backend
- namespace: longhorn-system
- spec:
- selector:
- app: longhorn-manager
- ports:
- - port: 9500
- targetPort: 9500
- sessionAffinity: ClientIP
- ---
- 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:v0.7.0
- ports:
- - containerPort: 8000
- env:
- - name: LONGHORN_MANAGER_IP
- value: "http://longhorn-backend:9500"
- serviceAccountName: longhorn-service-account
- ---
- kind: Service
- apiVersion: v1
- metadata:
- labels:
- app: longhorn-ui
- name: longhorn-frontend
- namespace: longhorn-system
- spec:
- selector:
- app: longhorn-ui
- ports:
- - port: 80
- targetPort: 8000
- type: LoadBalancer
- ---
- 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:v0.7.0
- 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:v0.7.0
- imagePullPolicy: Always
- command:
- - longhorn-manager
- - -d
- - deploy-driver
- - --manager-image
- - longhornio/longhorn-manager:v0.7.0
- - --manager-url
- - http://longhorn-backend:9500/v1
- # manually set root directory for csi
- #- --kubelet-root-dir
- #- /var/lib/rancher/k3s/agent/kubelet
- # manually specify number of CSI attacher replicas
- #- --csi-attacher-replica-count
- #- "3"
- # manually specify number of CSI provisioner replicas
- #- --csi-provisioner-replica-count
- #- "3"
- 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
- serviceAccountName: longhorn-service-account
- ---
- kind: StorageClass
- apiVersion: storage.k8s.io/v1
- metadata:
- name: longhorn
- provisioner: driver.longhorn.io
- parameters:
- numberOfReplicas: "3"
- staleReplicaTimeout: "2880" # 48 hours in minutes
- fromBackup: ""
- # diskSelector: "ssd,fast"
- # nodeSelector: "storage,fast"
- # recurringJobs: '[{"name":"snap", "task":"snapshot", "cron":"*/1 * * * *", "retain":1},
- # {"name":"backup", "task":"backup", "cron":"*/2 * * * *", "retain":1,
- # "labels": {"interval":"2m"}}]'
- ---
|