7 changed files with 175 additions and 69 deletions
@ -1,5 +1,38 @@ |
|||
= TODO |
|||
# An Hostpath Provisioner for OpenShift |
|||
|
|||
== Setup |
|||
## Build |
|||
|
|||
``` |
|||
$ export GOPATH="$PWD" |
|||
$ cd src |
|||
$ glide install -v |
|||
$ CGO_ENABLED=0 go build -a -ldflags '-extldflags "-static"' -o ../hostpath-provisioner hostpath-provisioner/hostpath-provisioner.go |
|||
``` |
|||
|
|||
## Package |
|||
|
|||
``` |
|||
$ docker build -t hostpath-provisioner . |
|||
``` |
|||
|
|||
## Setup |
|||
|
|||
``` |
|||
$ oc project default |
|||
$ oc process -f setup/hostpath-provisioner-template.yaml |
|||
``` |
|||
|
|||
## Test |
|||
|
|||
``` |
|||
$ oc project my-project |
|||
$ oc create -f setup/sample-claim.yaml |
|||
$ ls -l /tmp/openshift/ |
|||
``` |
|||
|
|||
## Cleanup |
|||
|
|||
``` |
|||
$ oc project default |
|||
$ oc delete all -l template=hostpath-provisioner-template |
|||
``` |
|||
|
|||
@ -1,5 +0,0 @@ |
|||
kind: StorageClass |
|||
apiVersion: storage.k8s.io/v1beta1 |
|||
metadata: |
|||
name: hostpath-provisioner |
|||
provisioner: itix.fr/hostpath |
|||
@ -0,0 +1,140 @@ |
|||
apiVersion: v1 |
|||
kind: Template |
|||
labels: |
|||
template: hostpath-provisioner-template |
|||
message: An hostpath provisioner has been created in your project. |
|||
Look at https://github.com/nmasse-itix/OpenShift-HostPath-Provisioner |
|||
for more information about using this template. |
|||
metadata: |
|||
annotations: |
|||
description: |- |
|||
A storage provisioner that provision hostPath PV |
|||
|
|||
NOTE: Cannot be used in production or in a multi-node cluster. |
|||
iconClass: icon-jenkins |
|||
openshift.io/display-name: Hostpath Provisioner |
|||
tags: storage |
|||
template.openshift.io/documentation-url: https://github.com/nmasse-itix/OpenShift-HostPath-Provisioner |
|||
template.openshift.io/long-description: A storage provisioner that provision hostPath PV |
|||
template.openshift.io/provider-display-name: Nicolas Masse <nicolas.masse@itix.fr> |
|||
template.openshift.io/support-url: https://github.com/nmasse-itix/OpenShift-HostPath-Provisioner/issues |
|||
name: hostpath-provisioner |
|||
objects: |
|||
- apiVersion: v1 |
|||
kind: ServiceAccount |
|||
metadata: |
|||
name: hostpath-provisioner |
|||
namespace: ${TARGET_NAMESPACE} |
|||
|
|||
- kind: ClusterRole |
|||
apiVersion: v1 |
|||
metadata: |
|||
name: hostpath-provisioner |
|||
rules: |
|||
- apiGroups: [""] |
|||
resources: ["persistentvolumes"] |
|||
verbs: ["get", "list", "watch", "create", "delete"] |
|||
- apiGroups: [""] |
|||
resources: ["persistentvolumeclaims"] |
|||
verbs: ["get", "list", "watch", "update"] |
|||
- apiGroups: ["storage.k8s.io"] |
|||
resources: ["storageclasses"] |
|||
verbs: ["get", "list", "watch"] |
|||
- apiGroups: [""] |
|||
resources: ["events"] |
|||
verbs: ["list", "watch", "create", "update", "patch"] |
|||
- apiGroups: [""] |
|||
resources: ["services", "endpoints"] |
|||
verbs: ["get"] |
|||
|
|||
- apiVersion: v1 |
|||
groupNames: null |
|||
kind: ClusterRoleBinding |
|||
metadata: |
|||
name: hostpath-provisioner |
|||
roleRef: |
|||
name: hostpath-provisioner |
|||
subjects: |
|||
- kind: ServiceAccount |
|||
name: hostpath-provisioner |
|||
namespace: ${TARGET_NAMESPACE} |
|||
userNames: |
|||
- system:serviceaccount:${TARGET_NAMESPACE}:hostpath-provisioner |
|||
|
|||
- apiVersion: v1 |
|||
kind: SecurityContextConstraints |
|||
metadata: |
|||
annotations: |
|||
kubernetes.io/description: 'hostpath-provisioner is a copy of the default hostmount-anyuid scc.' |
|||
name: hostpath-provisioner |
|||
allowHostDirVolumePlugin: true |
|||
allowHostIPC: false |
|||
allowHostNetwork: false |
|||
allowHostPID: false |
|||
allowHostPorts: false |
|||
allowPrivilegedContainer: false |
|||
allowedCapabilities: null |
|||
defaultAddCapabilities: null |
|||
fsGroup: |
|||
type: RunAsAny |
|||
priority: null |
|||
readOnlyRootFilesystem: false |
|||
requiredDropCapabilities: null |
|||
runAsUser: |
|||
type: RunAsAny |
|||
seLinuxContext: |
|||
type: MustRunAs |
|||
supplementalGroups: |
|||
type: RunAsAny |
|||
users: |
|||
- system:serviceaccount:${TARGET_NAMESPACE}:hostpath-provisioner |
|||
volumes: |
|||
- configMap |
|||
- downwardAPI |
|||
- emptyDir |
|||
- hostPath |
|||
- nfs |
|||
- persistentVolumeClaim |
|||
- secret |
|||
|
|||
- apiVersion: 1 |
|||
kind: DaemonSet |
|||
metadata: |
|||
name: hostpath-provisioner |
|||
namespace: ${TARGET_NAMESPACE} |
|||
spec: |
|||
template: |
|||
spec: |
|||
containers: |
|||
name: hostpath-provisioner |
|||
image: ${HOSTPATH_PROVISIONER_IMAGE} |
|||
imagePullPolicy: "IfNotPresent" |
|||
env: |
|||
- name: HOSTPATH_TO_USE |
|||
value: ${HOSTPATH_TO_USE} |
|||
- name: NODE_NAME |
|||
valueFrom: |
|||
fieldRef: |
|||
fieldPath: spec.nodeName |
|||
volumeMounts: |
|||
- name: pv-volume |
|||
mountPath: ${HOSTPATH_TO_USE} |
|||
volumes: |
|||
- name: pv-volume |
|||
hostPath: |
|||
path: ${HOSTPATH_TO_USE} |
|||
serviceAccount: hostpath-provisioner |
|||
|
|||
parameters: |
|||
- description: Name of the Docker Image to be used for the Hostpath Provisioner DaemonSet. |
|||
displayName: Hostpath Provisioner Docker Image |
|||
name: HOSTPATH_PROVISIONER_IMAGE |
|||
value: hostpath-provisioner:latest |
|||
- description: The OpenShift Namespace on which you want to deploy the Hostpath Provisioner. |
|||
displayName: Hostpath Provisioner Target Namespace |
|||
name: TARGET_NAMESPACE |
|||
value: default |
|||
- description: A path on the host to on which the Hostpath Provisioner can create PVs. |
|||
displayName: Host Path |
|||
name: HOSTPATH_TO_USE |
|||
value: /tmp/openshift |
|||
@ -1,24 +0,0 @@ |
|||
kind: Pod |
|||
apiVersion: v1 |
|||
metadata: |
|||
name: hostpath-provisioner |
|||
spec: |
|||
containers: |
|||
- name: hostpath-provisioner |
|||
image: hostpath-provisioner:latest |
|||
imagePullPolicy: "IfNotPresent" |
|||
env: |
|||
- name: HOSTPATH_TO_USE |
|||
value: /tmp/openshift/ |
|||
- name: NODE_NAME |
|||
valueFrom: |
|||
fieldRef: |
|||
fieldPath: spec.nodeName |
|||
volumeMounts: |
|||
- name: pv-volume |
|||
mountPath: /tmp/openshift |
|||
volumes: |
|||
- name: pv-volume |
|||
hostPath: |
|||
path: /tmp/openshift |
|||
serviceAccount: hostpath-provisioner |
|||
@ -1,20 +0,0 @@ |
|||
kind: ClusterRole |
|||
apiVersion: v1 |
|||
metadata: |
|||
name: hostpath-provisioner |
|||
rules: |
|||
- apiGroups: [""] |
|||
resources: ["persistentvolumes"] |
|||
verbs: ["get", "list", "watch", "create", "delete"] |
|||
- apiGroups: [""] |
|||
resources: ["persistentvolumeclaims"] |
|||
verbs: ["get", "list", "watch", "update"] |
|||
- apiGroups: ["storage.k8s.io"] |
|||
resources: ["storageclasses"] |
|||
verbs: ["get", "list", "watch"] |
|||
- apiGroups: [""] |
|||
resources: ["events"] |
|||
verbs: ["list", "watch", "create", "update", "patch"] |
|||
- apiGroups: [""] |
|||
resources: ["services", "endpoints"] |
|||
verbs: ["get"] |
|||
@ -1,4 +0,0 @@ |
|||
apiVersion: v1 |
|||
kind: ServiceAccount |
|||
metadata: |
|||
name: hostpath-provisioner |
|||
@ -1,14 +0,0 @@ |
|||
oc project default |
|||
oc create -f service-account.yaml |
|||
oc create -f roles.yaml |
|||
oc adm policy add-scc-to-user hostmount-anyuid -z hostpath-provisioner |
|||
oc adm policy add-cluster-role-to-user hostpath-provisioner -z hostpath-provisioner |
|||
|
|||
mkdir /tmp/openshift |
|||
chmod 777 /tmp/openshift |
|||
chcon -Rt svirt_sandbox_file_t /tmp/openshift |
|||
|
|||
oc create -f pod.yaml |
|||
oc create -f class.yaml |
|||
|
|||
oc create -f sample-claim.yaml |
|||
Loading…
Reference in new issue