mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 20:53:33 +00:00
Merge pull request #36437 from humblec/glusterfs-clusterid-prov
Automatic merge from submit-queue Add `clusterid`, an optional parameter to storageclass. At present, admin doesn't have the privilege to chose the trusted storage pool from which persistent gluster volume has to be provided. This patch introduce a new storage class parameter which allows the admin to specify storage pool/cluster if required. Signed-off-by: Humble Chirammal <hchiramm@redhat.com>
This commit is contained in:
commit
8f07fc3d41
@ -74,6 +74,7 @@ metadata:
|
|||||||
provisioner: kubernetes.io/glusterfs
|
provisioner: kubernetes.io/glusterfs
|
||||||
parameters:
|
parameters:
|
||||||
resturl: "http://127.0.0.1:8081"
|
resturl: "http://127.0.0.1:8081"
|
||||||
|
clusterid: "630372ccdc720a92c681fb928f27b53f"
|
||||||
restuser: "admin"
|
restuser: "admin"
|
||||||
secretNamespace: "default"
|
secretNamespace: "default"
|
||||||
secretName: "heketi-secret"
|
secretName: "heketi-secret"
|
||||||
@ -85,8 +86,9 @@ parameters:
|
|||||||
* `restuser` : Gluster REST service/Heketi user who has access to create volumes in the Gluster Trusted Pool.
|
* `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`.
|
* `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".
|
* `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".
|
||||||
|
|
||||||
When both `restuserkey` and `secretNamespace` + `secretName` is specified, the secret will be used.
|
When both `restuserkey` and `secretNamespace` + `secretName` is specified, the secret will be used.
|
||||||
|
* `clusterid`: `630372ccdc720a92c681fb928f27b53f` is the ID of the cluster which will be used by Heketi when provisioning the volume. It can also be a list of clusterids, for ex:
|
||||||
|
"8452344e2becec931ece4e33c4674e4e,42982310de6c63381718ccfa6d8cf397". This is an optional parameter.
|
||||||
|
|
||||||
Example of a secret can be found in [glusterfs-provisioning-secret.yaml](glusterfs-provisioning-secret.yaml).
|
Example of a secret can be found in [glusterfs-provisioning-secret.yaml](glusterfs-provisioning-secret.yaml).
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ metadata:
|
|||||||
provisioner: kubernetes.io/glusterfs
|
provisioner: kubernetes.io/glusterfs
|
||||||
parameters:
|
parameters:
|
||||||
resturl: "http://127.0.0.1:8081"
|
resturl: "http://127.0.0.1:8081"
|
||||||
|
clusterid: "630372ccdc720a92c681fb928f27b53f"
|
||||||
restuser: "admin"
|
restuser: "admin"
|
||||||
secretNamespace: "default"
|
secretNamespace: "default"
|
||||||
secretName: "heketi-secret"
|
secretName: "heketi-secret"
|
||||||
|
@ -62,11 +62,6 @@ const (
|
|||||||
replicaCount = 3
|
replicaCount = 3
|
||||||
durabilityType = "replicate"
|
durabilityType = "replicate"
|
||||||
secretKeyName = "key" // key name used in secret
|
secretKeyName = "key" // key name used in secret
|
||||||
annGlusterURL = "glusterfs.kubernetes.io/url"
|
|
||||||
annGlusterSecretName = "glusterfs.kubernetes.io/secretname"
|
|
||||||
annGlusterSecretNamespace = "glusterfs.kubernetes.io/secretnamespace"
|
|
||||||
annGlusterUserKey = "glusterfs.kubernetes.io/userkey"
|
|
||||||
annGlusterUser = "glusterfs.kubernetes.io/userid"
|
|
||||||
gciGlusterMountBinariesPath = "/sbin/mount.glusterfs"
|
gciGlusterMountBinariesPath = "/sbin/mount.glusterfs"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -385,6 +380,7 @@ type provisioningConfig struct {
|
|||||||
secretNamespace string
|
secretNamespace string
|
||||||
secretName string
|
secretName string
|
||||||
secretValue string
|
secretValue string
|
||||||
|
clusterId string
|
||||||
}
|
}
|
||||||
|
|
||||||
type glusterfsVolumeProvisioner struct {
|
type glusterfsVolumeProvisioner struct {
|
||||||
@ -526,7 +522,8 @@ func (p *glusterfsVolumeProvisioner) CreateVolume() (r *v1.GlusterfsVolumeSource
|
|||||||
glog.Errorf("glusterfs: failed to create glusterfs rest client")
|
glog.Errorf("glusterfs: failed to create glusterfs rest client")
|
||||||
return nil, 0, fmt.Errorf("failed to create glusterfs REST client, REST server authentication failed")
|
return nil, 0, fmt.Errorf("failed to create glusterfs REST client, REST server authentication failed")
|
||||||
}
|
}
|
||||||
volumeReq := &gapi.VolumeCreateRequest{Size: sz, Durability: gapi.VolumeDurabilityInfo{Type: durabilityType, Replicate: gapi.ReplicaDurability{Replica: replicaCount}}}
|
clusterIds := dstrings.Split(p.clusterId, ",")
|
||||||
|
volumeReq := &gapi.VolumeCreateRequest{Size: sz, Clusters: clusterIds, Durability: gapi.VolumeDurabilityInfo{Type: durabilityType, Replicate: gapi.ReplicaDurability{Replica: replicaCount}}}
|
||||||
volume, err := cli.VolumeCreate(volumeReq)
|
volume, err := cli.VolumeCreate(volumeReq)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Errorf("glusterfs: error creating volume %v ", err)
|
glog.Errorf("glusterfs: error creating volume %v ", err)
|
||||||
@ -680,6 +677,8 @@ func parseClassParameters(params map[string]string, kubeClient clientset.Interfa
|
|||||||
cfg.secretName = v
|
cfg.secretName = v
|
||||||
case "secretnamespace":
|
case "secretnamespace":
|
||||||
cfg.secretNamespace = v
|
cfg.secretNamespace = v
|
||||||
|
case "clusterid":
|
||||||
|
cfg.clusterId = v
|
||||||
case "restauthenabled":
|
case "restauthenabled":
|
||||||
authEnabled = dstrings.ToLower(v) == "true"
|
authEnabled = dstrings.ToLower(v) == "true"
|
||||||
default:
|
default:
|
||||||
|
Loading…
Reference in New Issue
Block a user