From fdbebb2d57041e2e9fb110bf7a3effbf9c30bf9a Mon Sep 17 00:00:00 2001 From: Adrien Reslinger Date: Mon, 1 Feb 2021 22:16:42 +0100 Subject: [PATCH] Deploy longhorn with helm --- defaults/main.yml | 2 + ....longhorn.io-CustomResourceDefinition.yaml | 50 ----------- ....longhorn.io-CustomResourceDefinition.yaml | 50 ----------- ....longhorn.io-CustomResourceDefinition.yaml | 46 ---------- files/longhorn/longhorn-backend-Service.yaml | 16 ---- .../longhorn-bind-ClusterRoleBinding.yaml | 12 --- .../longhorn-default-setting-ConfigMap.yaml | 37 -------- .../longhorn-driver-deployer-Deployment.yaml | 74 ---------------- files/longhorn/longhorn-frontend-Service.yaml | 16 ---- .../longhorn/longhorn-manager-DaemonSet.yaml | 87 ------------------- .../longhorn-psp-PodSecurityPolicy.yaml | 29 ------- .../longhorn-psp-binding-RoleBinding.yaml | 16 ---- files/longhorn/longhorn-psp-role-Role.yaml | 14 --- files/longhorn/longhorn-role-ClusterRole.yaml | 46 ---------- ...nghorn-service-account-ServiceAccount.yaml | 5 -- .../longhorn-storageclass-ConfigMap.yaml | 24 ----- files/longhorn/longhorn-system-Namespace.yaml | 4 - files/longhorn/longhorn-ui-Deployment.yaml | 31 ------- ....longhorn.io-CustomResourceDefinition.yaml | 46 ---------- ....longhorn.io-CustomResourceDefinition.yaml | 54 ------------ ....longhorn.io-CustomResourceDefinition.yaml | 31 ------- ....longhorn.io-CustomResourceDefinition.yaml | 42 --------- ....longhorn.io-CustomResourceDefinition.yaml | 54 ------------ tasks/longhorn.yml | 60 ++++++++----- tasks/main.yml | 3 + templates/longhorn/longhorn-namespace.yml.j2 | 5 ++ vars/longhorn.yaml | 24 ----- 27 files changed, 46 insertions(+), 832 deletions(-) delete mode 100644 files/longhorn/engineimages.longhorn.io-CustomResourceDefinition.yaml delete mode 100644 files/longhorn/engines.longhorn.io-CustomResourceDefinition.yaml delete mode 100644 files/longhorn/instancemanagers.longhorn.io-CustomResourceDefinition.yaml delete mode 100644 files/longhorn/longhorn-backend-Service.yaml delete mode 100644 files/longhorn/longhorn-bind-ClusterRoleBinding.yaml delete mode 100644 files/longhorn/longhorn-default-setting-ConfigMap.yaml delete mode 100644 files/longhorn/longhorn-driver-deployer-Deployment.yaml delete mode 100644 files/longhorn/longhorn-frontend-Service.yaml delete mode 100644 files/longhorn/longhorn-manager-DaemonSet.yaml delete mode 100644 files/longhorn/longhorn-psp-PodSecurityPolicy.yaml delete mode 100644 files/longhorn/longhorn-psp-binding-RoleBinding.yaml delete mode 100644 files/longhorn/longhorn-psp-role-Role.yaml delete mode 100644 files/longhorn/longhorn-role-ClusterRole.yaml delete mode 100644 files/longhorn/longhorn-service-account-ServiceAccount.yaml delete mode 100644 files/longhorn/longhorn-storageclass-ConfigMap.yaml delete mode 100644 files/longhorn/longhorn-system-Namespace.yaml delete mode 100644 files/longhorn/longhorn-ui-Deployment.yaml delete mode 100644 files/longhorn/nodes.longhorn.io-CustomResourceDefinition.yaml delete mode 100644 files/longhorn/replicas.longhorn.io-CustomResourceDefinition.yaml delete mode 100644 files/longhorn/settings.longhorn.io-CustomResourceDefinition.yaml delete mode 100644 files/longhorn/sharemanagers.longhorn.io-CustomResourceDefinition.yaml delete mode 100644 files/longhorn/volumes.longhorn.io-CustomResourceDefinition.yaml create mode 100644 templates/longhorn/longhorn-namespace.yml.j2 delete mode 100644 vars/longhorn.yaml diff --git a/defaults/main.yml b/defaults/main.yml index 7cfa61c..7d93bfd 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,6 +1,8 @@ my_context: minikube storage_localpath: true storage_longhorn: true +storage_longhorn_namespace: "longhorn-system" + storage_nfs: false storage_linode: false storage_digitalocean: false diff --git a/files/longhorn/engineimages.longhorn.io-CustomResourceDefinition.yaml b/files/longhorn/engineimages.longhorn.io-CustomResourceDefinition.yaml deleted file mode 100644 index 0f665ee..0000000 --- a/files/longhorn/engineimages.longhorn.io-CustomResourceDefinition.yaml +++ /dev/null @@ -1,50 +0,0 @@ -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 diff --git a/files/longhorn/engines.longhorn.io-CustomResourceDefinition.yaml b/files/longhorn/engines.longhorn.io-CustomResourceDefinition.yaml deleted file mode 100644 index 7dd200a..0000000 --- a/files/longhorn/engines.longhorn.io-CustomResourceDefinition.yaml +++ /dev/null @@ -1,50 +0,0 @@ -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 diff --git a/files/longhorn/instancemanagers.longhorn.io-CustomResourceDefinition.yaml b/files/longhorn/instancemanagers.longhorn.io-CustomResourceDefinition.yaml deleted file mode 100644 index b1f1623..0000000 --- a/files/longhorn/instancemanagers.longhorn.io-CustomResourceDefinition.yaml +++ /dev/null @@ -1,46 +0,0 @@ -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 diff --git a/files/longhorn/longhorn-backend-Service.yaml b/files/longhorn/longhorn-backend-Service.yaml deleted file mode 100644 index 92910ab..0000000 --- a/files/longhorn/longhorn-backend-Service.yaml +++ /dev/null @@ -1,16 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - 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 diff --git a/files/longhorn/longhorn-bind-ClusterRoleBinding.yaml b/files/longhorn/longhorn-bind-ClusterRoleBinding.yaml deleted file mode 100644 index d690cc9..0000000 --- a/files/longhorn/longhorn-bind-ClusterRoleBinding.yaml +++ /dev/null @@ -1,12 +0,0 @@ -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 diff --git a/files/longhorn/longhorn-default-setting-ConfigMap.yaml b/files/longhorn/longhorn-default-setting-ConfigMap.yaml deleted file mode 100644 index 50ac253..0000000 --- a/files/longhorn/longhorn-default-setting-ConfigMap.yaml +++ /dev/null @@ -1,37 +0,0 @@ -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: "/var/lib/longhorn/" - replica-soft-anti-affinity: - storage-over-provisioning-percentage: - storage-minimal-available-percentage: - upgrade-checker: - default-replica-count: - default-data-locality: - guaranteed-engine-cpu: - default-longhorn-static-storage-class: - backupstore-poll-interval: - taint-toleration: - priority-class: - auto-salvage: - auto-delete-pod-when-volume-detached-unexpectedly: - disable-scheduling-on-cordoned-node: - replica-zone-soft-anti-affinity: - volume-attachment-recovery-policy: - node-down-pod-deletion-policy: - allow-node-drain-with-last-healthy-replica: - mkfs-ext4-parameters: - disable-replica-rebuild: - replica-replenishment-wait-interval: - disable-revision-counter: - system-managed-pods-image-pull-policy: - allow-volume-creation-with-degraded-availability: - auto-cleanup-system-generated-snapshot: diff --git a/files/longhorn/longhorn-driver-deployer-Deployment.yaml b/files/longhorn/longhorn-driver-deployer-Deployment.yaml deleted file mode 100644 index 14c31f9..0000000 --- a/files/longhorn/longhorn-driver-deployer-Deployment.yaml +++ /dev/null @@ -1,74 +0,0 @@ -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.1.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:v1.1.0 - imagePullPolicy: IfNotPresent - command: - - longhorn-manager - - -d - - deploy-driver - - --manager-image - - longhornio/longhorn-manager:v1.1.0 - - --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 - # Manually set root directory for csi - #- name: KUBELET_ROOT_DIR - # value: /var/lib/rancher/k3s/agent/kubelet - # For AirGap Installation - # Replace PREFIX with your private registery - #- name: CSI_ATTACHER_IMAGE - # value: PREFIX/csi-attacher:v2.2.1-lh1 - #- name: CSI_PROVISIONER_IMAGE - # value: PREFIX/csi-provisioner:v1.6.0-lh1 - #- name: CSI_NODE_DRIVER_REGISTRAR_IMAGE - # value: PREFIX/csi-node-driver-registrar:v1.2.0-lh1 - #- name: CSI_RESIZER_IMAGE - # value: PREFIX/csi-resizer:v0.5.1-lh1 - #- name: CSI_SNAPSHOTTER_IMAGE - # value: PREFIX/csi-snapshotter:v2.1.1-lh1 - # Manually specify number of CSI attacher replicas - #- name: CSI_ATTACHER_REPLICA_COUNT - # value: "3" - # Manually specify number of CSI provisioner replicas - #- name: CSI_PROVISIONER_REPLICA_COUNT - # value: "3" - #- name: CSI_RESIZER_REPLICA_COUNT - # value: "3" - #- name: CSI_SNAPSHOTTER_REPLICA_COUNT - # value: "3" - #imagePullSecrets: - #- name: - serviceAccountName: longhorn-service-account - securityContext: - runAsUser: 0 diff --git a/files/longhorn/longhorn-frontend-Service.yaml b/files/longhorn/longhorn-frontend-Service.yaml deleted file mode 100644 index f16d79f..0000000 --- a/files/longhorn/longhorn-frontend-Service.yaml +++ /dev/null @@ -1,16 +0,0 @@ -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 diff --git a/files/longhorn/longhorn-manager-DaemonSet.yaml b/files/longhorn/longhorn-manager-DaemonSet.yaml deleted file mode 100644 index 79f0ed6..0000000 --- a/files/longhorn/longhorn-manager-DaemonSet.yaml +++ /dev/null @@ -1,87 +0,0 @@ -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.1.0 - imagePullPolicy: IfNotPresent - securityContext: - privileged: true - command: - - longhorn-manager - - -d - - daemon - - --engine-image - - longhornio/longhorn-engine:v1.1.0 - - --instance-manager-image - - longhornio/longhorn-instance-manager:v1_20201216 - - --share-manager-image - - longhornio/longhorn-share-manager:v1_20201204 - - --manager-image - - longhornio/longhorn-manager:v1.1.0 - - --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 -# imagePullSecrets: -# - name: "" - serviceAccountName: longhorn-service-account - updateStrategy: - rollingUpdate: - maxUnavailable: "100%" diff --git a/files/longhorn/longhorn-psp-PodSecurityPolicy.yaml b/files/longhorn/longhorn-psp-PodSecurityPolicy.yaml deleted file mode 100644 index cbaac6a..0000000 --- a/files/longhorn/longhorn-psp-PodSecurityPolicy.yaml +++ /dev/null @@ -1,29 +0,0 @@ -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 diff --git a/files/longhorn/longhorn-psp-binding-RoleBinding.yaml b/files/longhorn/longhorn-psp-binding-RoleBinding.yaml deleted file mode 100644 index fbbdb0c..0000000 --- a/files/longhorn/longhorn-psp-binding-RoleBinding.yaml +++ /dev/null @@ -1,16 +0,0 @@ -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 diff --git a/files/longhorn/longhorn-psp-role-Role.yaml b/files/longhorn/longhorn-psp-role-Role.yaml deleted file mode 100644 index 6140f6a..0000000 --- a/files/longhorn/longhorn-psp-role-Role.yaml +++ /dev/null @@ -1,14 +0,0 @@ -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 diff --git a/files/longhorn/longhorn-role-ClusterRole.yaml b/files/longhorn/longhorn-role-ClusterRole.yaml deleted file mode 100644 index 6e71da6..0000000 --- a/files/longhorn/longhorn-role-ClusterRole.yaml +++ /dev/null @@ -1,46 +0,0 @@ -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", "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"] - verbs: ["*"] -- apiGroups: ["coordination.k8s.io"] - resources: ["leases"] - verbs: ["*"] -- apiGroups: ["metrics.k8s.io"] - resources: ["pods", "nodes"] - verbs: ["get", "list"] diff --git a/files/longhorn/longhorn-service-account-ServiceAccount.yaml b/files/longhorn/longhorn-service-account-ServiceAccount.yaml deleted file mode 100644 index 5c9541e..0000000 --- a/files/longhorn/longhorn-service-account-ServiceAccount.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: longhorn-service-account - namespace: longhorn-system diff --git a/files/longhorn/longhorn-storageclass-ConfigMap.yaml b/files/longhorn/longhorn-storageclass-ConfigMap.yaml deleted file mode 100644 index 47099be..0000000 --- a/files/longhorn/longhorn-storageclass-ConfigMap.yaml +++ /dev/null @@ -1,24 +0,0 @@ -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: Delete - volumeBindingMode: Immediate - parameters: - numberOfReplicas: "2" - staleReplicaTimeout: "2880" - 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"}}]' diff --git a/files/longhorn/longhorn-system-Namespace.yaml b/files/longhorn/longhorn-system-Namespace.yaml deleted file mode 100644 index 9ac9395..0000000 --- a/files/longhorn/longhorn-system-Namespace.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: longhorn-system diff --git a/files/longhorn/longhorn-ui-Deployment.yaml b/files/longhorn/longhorn-ui-Deployment.yaml deleted file mode 100644 index 276d8e6..0000000 --- a/files/longhorn/longhorn-ui-Deployment.yaml +++ /dev/null @@ -1,31 +0,0 @@ -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.1.0 - imagePullPolicy: IfNotPresent - securityContext: - runAsUser: 0 - ports: - - containerPort: 8000 - name: http - env: - - name: LONGHORN_MANAGER_IP - value: "http://longhorn-backend:9500" -# imagePullSecrets: -# - name: diff --git a/files/longhorn/nodes.longhorn.io-CustomResourceDefinition.yaml b/files/longhorn/nodes.longhorn.io-CustomResourceDefinition.yaml deleted file mode 100644 index 40364fe..0000000 --- a/files/longhorn/nodes.longhorn.io-CustomResourceDefinition.yaml +++ /dev/null @@ -1,46 +0,0 @@ -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 diff --git a/files/longhorn/replicas.longhorn.io-CustomResourceDefinition.yaml b/files/longhorn/replicas.longhorn.io-CustomResourceDefinition.yaml deleted file mode 100644 index c59559a..0000000 --- a/files/longhorn/replicas.longhorn.io-CustomResourceDefinition.yaml +++ /dev/null @@ -1,54 +0,0 @@ -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 diff --git a/files/longhorn/settings.longhorn.io-CustomResourceDefinition.yaml b/files/longhorn/settings.longhorn.io-CustomResourceDefinition.yaml deleted file mode 100644 index fcb6990..0000000 --- a/files/longhorn/settings.longhorn.io-CustomResourceDefinition.yaml +++ /dev/null @@ -1,31 +0,0 @@ -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 diff --git a/files/longhorn/sharemanagers.longhorn.io-CustomResourceDefinition.yaml b/files/longhorn/sharemanagers.longhorn.io-CustomResourceDefinition.yaml deleted file mode 100644 index f2cff59..0000000 --- a/files/longhorn/sharemanagers.longhorn.io-CustomResourceDefinition.yaml +++ /dev/null @@ -1,42 +0,0 @@ -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 diff --git a/files/longhorn/volumes.longhorn.io-CustomResourceDefinition.yaml b/files/longhorn/volumes.longhorn.io-CustomResourceDefinition.yaml deleted file mode 100644 index e1eed71..0000000 --- a/files/longhorn/volumes.longhorn.io-CustomResourceDefinition.yaml +++ /dev/null @@ -1,54 +0,0 @@ -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 diff --git a/tasks/longhorn.yml b/tasks/longhorn.yml index 911efe1..d6c8b04 100644 --- a/tasks/longhorn.yml +++ b/tasks/longhorn.yml @@ -1,48 +1,60 @@ --- - - name: Include file list - include_vars: "longhorn.yaml" - - name: longhorn need to be present block: - - name: Install files + - name: Defined longhorn repository + community.kubernetes.helm_repository: + name: longhorn + repo_url: "https://charts.longhorn.io" + - name: Deploy latest version of longhorn + community.kubernetes.helm: + context: "{{ my_context }}" + name: longhorn + chart_ref: longhorn/longhorn +# chart_version: 1.1.0 + create_namespace: yes + release_namespace: "{{ storage_longhorn_namespace }}" + values: + defaultSettings: + defaultDataPath: "/var/lib/longhorn/" + - name: Install longhorn UI Ingress k8s: state: present context: "{{ my_context }}" merge_type: merge - namespace: longhorn-system - resource_definition: "{{ lookup('file', 'longhorn/' + item) | from_yaml }}" - with_items: - - "{{ storage_longhorn_files_list }}" - - name: Install Ingress for longhorn UI - k8s: - state: present - context: "{{ my_context }}" - merge_type: merge - namespace: longhorn-system + namespace: "{{ storage_longhorn_namespace }}" resource_definition: "{{ lookup('template', 'longhorn/' + item) | from_yaml }}" with_items: - "longhorn_ingressroute.yaml.j2" when: - storage_longhorn|bool + tags: + - longhorn + - storage - name: longhorn need to be absent block: + - name: Deploy latest version of longhorn + community.kubernetes.helm: + context: "{{ my_context }}" + name: longhorn + chart_ref: longhorn/longhorn +# chart_version: 1.1.0 + release_state: absent + release_namespace: "{{ storage_longhorn_namespace }}" + values: + defaultSettings: + defaultDataPath: "/var/lib/longhorn/" - name: Remove Ingress for longhorn UI k8s: state: absent context: "{{ my_context }}" - namespace: longhorn-system + namespace: "{{ storage_longhorn_namespace }}" resource_definition: "{{ lookup('template', 'longhorn/' + item) | from_yaml }}" with_items: - "longhorn_ingressroute.yaml.j2" - - name: Remove files - k8s: - state: absent - context: "{{ my_context }}" - merge_type: merge - namespace: longhorn-system - resource_definition: "{{ lookup('file', 'longhorn/' + item) | from_yaml }}" - with_items: - - "{{ storage_longhorn_files_list | reverse | list }}" + - "longhorn-namespace.yml.j2" when: - not storage_longhorn|bool + tags: + - longhorn + - storage diff --git a/tasks/main.yml b/tasks/main.yml index 7b8890c..8399f5a 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -3,6 +3,9 @@ # - include_tasks: "manual.yml" - include_tasks: "local.yml" - include_tasks: "longhorn.yml" + tags: + - longhorn + - storage - include_tasks: "nfs.yml" - include_tasks: "digital_ocean.yml" - include_tasks: "linode.yml" diff --git a/templates/longhorn/longhorn-namespace.yml.j2 b/templates/longhorn/longhorn-namespace.yml.j2 new file mode 100644 index 0000000..b448b0c --- /dev/null +++ b/templates/longhorn/longhorn-namespace.yml.j2 @@ -0,0 +1,5 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + name: "{{ storage_longhorn_namespace }}" diff --git a/vars/longhorn.yaml b/vars/longhorn.yaml deleted file mode 100644 index dc20774..0000000 --- a/vars/longhorn.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -storage_longhorn_files_list: - - "longhorn-system-Namespace.yaml" - - "longhorn-service-account-ServiceAccount.yaml" - - "longhorn-role-ClusterRole.yaml" - - "longhorn-bind-ClusterRoleBinding.yaml" - - "engines.longhorn.io-CustomResourceDefinition.yaml" - - "replicas.longhorn.io-CustomResourceDefinition.yaml" - - "settings.longhorn.io-CustomResourceDefinition.yaml" - - "volumes.longhorn.io-CustomResourceDefinition.yaml" - - "engineimages.longhorn.io-CustomResourceDefinition.yaml" - - "nodes.longhorn.io-CustomResourceDefinition.yaml" - - "instancemanagers.longhorn.io-CustomResourceDefinition.yaml" - - "sharemanagers.longhorn.io-CustomResourceDefinition.yaml" - - "longhorn-default-setting-ConfigMap.yaml" - - "longhorn-psp-PodSecurityPolicy.yaml" - - "longhorn-psp-role-Role.yaml" - - "longhorn-psp-binding-RoleBinding.yaml" - - "longhorn-storageclass-ConfigMap.yaml" - - "longhorn-manager-DaemonSet.yaml" - - "longhorn-backend-Service.yaml" - - "longhorn-ui-Deployment.yaml" - - "longhorn-frontend-Service.yaml" - - "longhorn-driver-deployer-Deployment.yaml"