Simple hostpath provisioner for Kubernetes
  • Go 96.3%
  • Dockerfile 3.7%
Find a file
Christian Aye a2c994fe29 README added
2021-05-18 12:33:01 +02:00
.dockerignore Initial commit 2021-05-02 15:16:13 +00:00
.gitignore Initial commit 2021-05-02 15:16:13 +00:00
Dockerfile Initial commit 2021-05-03 02:44:15 +02:00
go.mod Initial commit 2021-05-03 02:44:15 +02:00
go.sum Initial commit 2021-05-03 02:44:25 +02:00
LICENSE Initial commit 2021-05-18 00:52:56 +02:00
main.go Initial commit 2021-05-18 00:52:56 +02:00
provisioner.go Initial commit 2021-05-18 00:52:56 +02:00
README.md README added 2021-05-18 12:33:01 +02:00

Kubernetes hostpath provisioner

k8s-hostpath-provisioner is a simple storage provisioner to manage dynamic provisioning in Kubernetes on local storages.

Getting started

You can configure multiple storage classes with different configurations on one parent host path. Each configuration use his own sub-directory.

Create a storage class

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: storage-default
  annotations:
    storageclass.kubernetes.io/is-default-class: 'true'
provisioner: cluster.local/k8s-hostpath-provisioner
parameters:
  namingStrategy: dynamic # or 'static' to use the PVC name without resource UUID 
  onDelete: delete # or 'archive' to rename PV folder on delete to $PVC-archive 
  subPath: default # sub folder name for this storage class. parent is defined in storage controller.
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: Immediate

Deploy provisioner controller to your cluster

kind: Deployment
apiVersion: apps/v1
metadata:
  name: k8s-hostpath-provisioner
  labels:
    app.kubernetes.io/name: k8s-hostpath-provisioner
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: k8s-hostpath-provisioner
  template:
    metadata:
      labels:
        app.kubernetes.io/name: k8s-hostpath-provisioner
    spec:
      restartPolicy: Always
      containers:
        - name: hostpath-provisioner
          image: 'ayesolutions/k8s-hostpath-provisioner'
          imagePullPolicy: Always
          env:
            - name: PROVISIONER_PATH
              value: /container/data/k8s
          resources: {}
          volumeMounts:
            - name: data
              mountPath: /container/data/k8s
      volumes:
        - name: data
          hostPath:
            path: /host/data/k8s