mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 20:53:33 +00:00
Merge pull request #58287 from dg-i/ceph-provisioner-userid
Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Add keyring parameter in Ceph RBD provisioner **What this PR does / why we need it**: userSecretName is a mandatory parameter for the kubernetes.io/rbd storage provisioner. Ceph RBD persistent volumes however don't need the secretRef. If no secret is given, a local keyring file (/etc/ceph/keyring) on the node will be used. This behaviour should also work with the storage provisioner. If no userSecretName parameter is given, no secretRef should be created in the resulting persistent volume. **Special notes for your reviewer**: **Release note**: ```release-note Add "keyring" parameter for Ceph RBD provisioner ```
This commit is contained in:
commit
117780b908
@ -20,6 +20,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"regexp"
|
||||||
dstrings "strings"
|
dstrings "strings"
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
@ -585,6 +586,7 @@ func (r *rbdVolumeProvisioner) Provision() (*v1.PersistentVolume, error) {
|
|||||||
secret := ""
|
secret := ""
|
||||||
secretName := ""
|
secretName := ""
|
||||||
secretNamespace := ""
|
secretNamespace := ""
|
||||||
|
keyring := ""
|
||||||
imageFormat := rbdImageFormat2
|
imageFormat := rbdImageFormat2
|
||||||
fstype := ""
|
fstype := ""
|
||||||
|
|
||||||
@ -609,6 +611,8 @@ func (r *rbdVolumeProvisioner) Provision() (*v1.PersistentVolume, error) {
|
|||||||
secretName = v
|
secretName = v
|
||||||
case "usersecretnamespace":
|
case "usersecretnamespace":
|
||||||
secretNamespace = v
|
secretNamespace = v
|
||||||
|
case "keyring":
|
||||||
|
keyring = v
|
||||||
case "imageformat":
|
case "imageformat":
|
||||||
imageFormat = v
|
imageFormat = v
|
||||||
case "imagefeatures":
|
case "imagefeatures":
|
||||||
@ -642,8 +646,8 @@ func (r *rbdVolumeProvisioner) Provision() (*v1.PersistentVolume, error) {
|
|||||||
if len(r.Mon) < 1 {
|
if len(r.Mon) < 1 {
|
||||||
return nil, fmt.Errorf("missing Ceph monitors")
|
return nil, fmt.Errorf("missing Ceph monitors")
|
||||||
}
|
}
|
||||||
if secretName == "" {
|
if secretName == "" && keyring == "" {
|
||||||
return nil, fmt.Errorf("missing user secret name")
|
return nil, fmt.Errorf("must specify either keyring or user secret name")
|
||||||
}
|
}
|
||||||
if r.adminId == "" {
|
if r.adminId == "" {
|
||||||
r.adminId = rbdDefaultAdminId
|
r.adminId = rbdDefaultAdminId
|
||||||
@ -666,9 +670,19 @@ func (r *rbdVolumeProvisioner) Provision() (*v1.PersistentVolume, error) {
|
|||||||
glog.Infof("successfully created rbd image %q", image)
|
glog.Infof("successfully created rbd image %q", image)
|
||||||
pv := new(v1.PersistentVolume)
|
pv := new(v1.PersistentVolume)
|
||||||
metav1.SetMetaDataAnnotation(&pv.ObjectMeta, volumehelper.VolumeDynamicallyCreatedByKey, "rbd-dynamic-provisioner")
|
metav1.SetMetaDataAnnotation(&pv.ObjectMeta, volumehelper.VolumeDynamicallyCreatedByKey, "rbd-dynamic-provisioner")
|
||||||
rbd.SecretRef = new(v1.SecretReference)
|
|
||||||
rbd.SecretRef.Name = secretName
|
if secretName != "" {
|
||||||
rbd.SecretRef.Namespace = secretNamespace
|
rbd.SecretRef = new(v1.SecretReference)
|
||||||
|
rbd.SecretRef.Name = secretName
|
||||||
|
rbd.SecretRef.Namespace = secretNamespace
|
||||||
|
} else {
|
||||||
|
var filePathRegex = regexp.MustCompile(`^(?:/[^/!;` + "`" + ` ]+)+$`)
|
||||||
|
if keyring != "" && !filePathRegex.MatchString(keyring) {
|
||||||
|
return nil, fmt.Errorf("keyring field must contain a path to a file")
|
||||||
|
}
|
||||||
|
rbd.Keyring = keyring
|
||||||
|
}
|
||||||
|
|
||||||
rbd.RadosUser = r.Id
|
rbd.RadosUser = r.Id
|
||||||
rbd.FSType = fstype
|
rbd.FSType = fstype
|
||||||
pv.Spec.PersistentVolumeSource.RBD = rbd
|
pv.Spec.PersistentVolumeSource.RBD = rbd
|
||||||
|
Loading…
Reference in New Issue
Block a user