From b7ec4b70442f1e0f7b882e3f074fef6ca3b24ef7 Mon Sep 17 00:00:00 2001 From: Jan Safranek Date: Tue, 22 Nov 2016 10:32:22 +0100 Subject: [PATCH 1/3] Update glusterfs provisioning configuration --- docs/user-guide/persistent-volumes/index.md | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/docs/user-guide/persistent-volumes/index.md b/docs/user-guide/persistent-volumes/index.md index 00e0c351b4..e51fe96d55 100644 --- a/docs/user-guide/persistent-volumes/index.md +++ b/docs/user-guide/persistent-volumes/index.md @@ -362,7 +362,7 @@ parameters: * `type`: `pd-standard` or `pd-ssd`. Default: `pd-ssd` * `zone`: GCE zone. If not specified, a random zone in the same region as controller-manager will be chosen. -#### GLUSTERFS +#### Glusterfs ```yaml apiVersion: storage.k8s.io/v1beta1 @@ -374,13 +374,20 @@ parameters: resturl: "http://127.0.0.1:8081" restauthenabled: "true" restuser: "admin" - restuserkey: "password" + secretNamespace: "default" + secretName: "heketi-secret" + ``` -* `resturl` : Gluster REST service url which provisions gluster volumes on demand. The format should be `http://IPaddress:Port` and this parameter is mandatory when using the GlusterFS dynamic provisioner. -* `restauthenabled` : A boolean value that indicates whether Gluster REST service authentication is enabled on the REST server. If this value is 'true', you must supply values for the 'restuser' and 'restuserkey' parameters." -* `restuser` : Gluster REST service user, who has access to create volumes in the Gluster Trusted Pool. -* `restuserkey` : Gluster REST service user's password, will be used for authentication to the REST server. +* `resturl`: Gluster REST service/Heketi service url which provision gluster volumes on demand. The general format should be `IPaddress:Port` and this is a mandatory parameter for GlusterFS dynamic provisioner. If Heketi service is exposed as a routable service in openshift/kubernetes setup, this can have a format similar to +`http://heketi-storage-project.cloudapps.mystorage.com` where the fqdn is a resolvable heketi service url. +* `restauthenabled` : Gluster REST service authentication boolean that enables authentication to the REST server. If this value is 'true', `restuser` and `restuserkey` or `secretNamespace` + `secretName` have to be filled. This option is deprecated, authentication is enabled when any of `restuser`, `restuserkey`, `secretName` or `secretNamespace` is specified. +* `restuser` : Gluster REST service/Heketi user who has access to create volumes in the Gluster Trusted Pool. +* `restuserkey` : Gluster REST service/Heketi user's password which will be used for authentication to the REST server. This parameter is deprecated in favor of `secretNamespace` + `secretName`. +* `secretNamespace` + `secretName` : Identification of Secret instance that containes user password to use when talking to Gluster REST service. These parameters are optional, empty password will be used when both `secretNamespace` and `secretName` are omitted. The provided secret must have type "kubernetes.io/glusterfs", e.g. created in this way: + ``` + $ kubectl create secret heketi-secret --type="kubernetes.io/glusterfs" --from-literal=key='opensesame' --namespace=default + ``` #### OpenStack Cinder From d9fc30276de16052055adf6160f6aa12671a9fa0 Mon Sep 17 00:00:00 2001 From: Jan Safranek Date: Fri, 4 Nov 2016 13:41:45 +0100 Subject: [PATCH 2/3] Add documentation about Ceph RBD dynamic provisioning --- docs/user-guide/persistent-volumes/index.md | 29 +++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/docs/user-guide/persistent-volumes/index.md b/docs/user-guide/persistent-volumes/index.md index e51fe96d55..31f942ad58 100644 --- a/docs/user-guide/persistent-volumes/index.md +++ b/docs/user-guide/persistent-volumes/index.md @@ -419,6 +419,35 @@ parameters: * `diskformat`: `thin`, `zeroedthick` and `eagerzeroedthick`. Default: `"thin"`. +#### Ceph RBD + +```yaml + apiVersion: storage.k8s.io/v1beta1 + kind: StorageClass + metadata: + name: fast + provisioner: kubernetes.io/rbd + parameters: + monitors: 10.16.153.105:6789 + adminId: kube + adminSecretName: ceph-secret + adminSecretNamespace: kube-system + pool: kube + userId: kube + userSecretName: ceph-secret-user +``` + +* `monitors`: Ceph monitors, comma delimited. This parameter is required. +* `adminId`: Ceph client ID that is capable of creating images in the pool. Default is "admin". +* `adminSecretNamespace`: The namespace for `adminSecret`. Default is "default". +* `adminSecret`: Secret Name for `adminId`. This parameter is required. The provided secret must have type "kubernetes.io/rbd". +* `pool`: Ceph RBD pool. Default is "rbd". +* `userId`: Ceph client ID that is used to map the RBD image. Default is the same as `adminId`. +* `userSecretName`: The name of Ceph Secret for `userId` to map RBD image. It must exist in the same namespace as PVCs. This parameter is required. The provided secret must have type "kubernetes.io/rbd", e.g. created in this way: + ``` + $ kubectl create secret ceph-secret --type="kubernetes.io/rbd" --from-literal=key='QVFEQ1pMdFhPUnQrSmhBQUFYaERWNHJsZ3BsMmNjcDR6RFZST0E9PQ==' --namespace=kube-system + ``` + ## Writing Portable Configuration If you're writing configuration templates or examples that run on a wide range of clusters From bd8778069d495fbefdfe955e9f498b1d43885d21 Mon Sep 17 00:00:00 2001 From: Jan Safranek Date: Fri, 4 Nov 2016 13:41:45 +0100 Subject: [PATCH 3/3] Add documentation about Quobyte dynamic provisioning --- docs/user-guide/persistent-volumes/index.md | 32 +++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/docs/user-guide/persistent-volumes/index.md b/docs/user-guide/persistent-volumes/index.md index 31f942ad58..082722a829 100644 --- a/docs/user-guide/persistent-volumes/index.md +++ b/docs/user-guide/persistent-volumes/index.md @@ -448,6 +448,38 @@ parameters: $ kubectl create secret ceph-secret --type="kubernetes.io/rbd" --from-literal=key='QVFEQ1pMdFhPUnQrSmhBQUFYaERWNHJsZ3BsMmNjcDR6RFZST0E9PQ==' --namespace=kube-system ``` +#### Quobyte + +```yaml +apiVersion: storage.k8s.io/v1beta1 +kind: StorageClass +metadata: + name: slow +provisioner: kubernetes.io/quobyte +parameters: + quobyteAPIServer: "http://138.68.74.142:7860" + registry: "138.68.74.142:7861" + adminSecretName: "quobyte-admin-secret" + adminSecretNamespace: "kube-system" + user: "root" + group: "root" + quobyteConfig: "BASE" + quobyteTenant: "DEFAULT" +``` + +* `quobyteAPIServer`: API Server of Quobyte in the format `http(s)://api-server:7860` +* `registry`: Quobyte registry to use to mount the volume. You can specifiy the registry as ``:`` pair or if you want to specify multiple registries you just have to put a comma between them e.q. ``:,:,:``. The host can be an IP address or if you have a working DNS you can also provide the DNS names. +* `adminSecretNamespace`: The namespace for `adminSecretName`. Default is "default". +* `adminSecretName`: secret that holds information about the Quobyte user and the password to authenticate agains the API server. The provided secret must have type "kubernetes.io/quobyte", e.g. created in this way: + ``` + $ kubectl create secret quobyte-admin-secret --type="kubernetes.io/quobyte" --from-literal=key='opensesame' --namespace=kube-system + ``` +* `user`: maps all access to this user. Default is "root". +* `group`: maps all access to this group. Default is "nfsnobody". +* `quobyteConfig`: use the specified configuration to create the volume. You can create a new configuration or modify an existing one with the Web console or the quobyte CLI. Default is "BASE". +* `quobyteTenant`: use the specified tenant ID to create/delete the volume. This Quobyte tenant has to be already present in Quobyte. Default is "DEFAULT". + + ## Writing Portable Configuration If you're writing configuration templates or examples that run on a wide range of clusters