Merge pull request #11577 from Rakshith-R/default-img-version
csi: add default version to images if it is missing
This commit is contained in:
4 files changed
+78
-8
No files matched your search
@@ -27,6 +27,13 @@ ROOK_CSI_SNAPSHOTTER_IMAGE: "registry.k8s.io/sig-storage/csi-snapshotter:v6.2.1"
|
||||
ROOK_CSIADDONS_IMAGE: "quay.io/csiaddons/k8s-sidecar:v0.5.0"
|
||||
```
|
||||
|
||||
### **Use private repository**
|
||||
|
||||
If image version is not passed along with the image name in any of the variables above,
|
||||
Rook will add the corresponding default version to that image.
|
||||
Example: if `ROOK_CSI_CEPH_IMAGE: "quay.io/private-repo/cephcsi"` is passed,
|
||||
Rook will add internal default version and consume it as `"quay.io/private-repo/cephcsi:v3.7.2"`.
|
||||
|
||||
### **Use default images**
|
||||
|
||||
If you would like Rook to use the default upstream images, then you may simply remove all
|
||||
|
||||
@@ -217,8 +217,6 @@ func (r *ReconcileCSI) setParams(ver *version.Info) error {
|
||||
|
||||
logger.Infof("Kubernetes version is %s.%s", ver.Major, ver.Minor)
|
||||
|
||||
CSIParam.ResizerImage = k8sutil.GetValue(r.opConfig.Parameters, "ROOK_CSI_RESIZER_IMAGE", DefaultResizerImage)
|
||||
|
||||
logLevel := k8sutil.GetValue(r.opConfig.Parameters, "CSI_LOG_LEVEL", "")
|
||||
CSIParam.LogLevel = defaultLogLevel
|
||||
if logLevel != "" {
|
||||
@@ -259,13 +257,14 @@ func (r *ReconcileCSI) setParams(ver *version.Info) error {
|
||||
logger.Errorf("failed to get nodes. Defaulting the number of replicas of provisioner pods to %d. %v", CSIParam.ProvisionerReplicas, err)
|
||||
}
|
||||
|
||||
CSIParam.CSIPluginImage = k8sutil.GetValue(r.opConfig.Parameters, "ROOK_CSI_CEPH_IMAGE", DefaultCSIPluginImage)
|
||||
CSIParam.RegistrarImage = k8sutil.GetValue(r.opConfig.Parameters, "ROOK_CSI_REGISTRAR_IMAGE", DefaultRegistrarImage)
|
||||
CSIParam.ProvisionerImage = k8sutil.GetValue(r.opConfig.Parameters, "ROOK_CSI_PROVISIONER_IMAGE", DefaultProvisionerImage)
|
||||
CSIParam.AttacherImage = k8sutil.GetValue(r.opConfig.Parameters, "ROOK_CSI_ATTACHER_IMAGE", DefaultAttacherImage)
|
||||
CSIParam.SnapshotterImage = k8sutil.GetValue(r.opConfig.Parameters, "ROOK_CSI_SNAPSHOTTER_IMAGE", DefaultSnapshotterImage)
|
||||
CSIParam.CSIPluginImage = getImage(r.opConfig.Parameters, "ROOK_CSI_CEPH_IMAGE", DefaultCSIPluginImage)
|
||||
CSIParam.RegistrarImage = getImage(r.opConfig.Parameters, "ROOK_CSI_REGISTRAR_IMAGE", DefaultRegistrarImage)
|
||||
CSIParam.ProvisionerImage = getImage(r.opConfig.Parameters, "ROOK_CSI_PROVISIONER_IMAGE", DefaultProvisionerImage)
|
||||
CSIParam.AttacherImage = getImage(r.opConfig.Parameters, "ROOK_CSI_ATTACHER_IMAGE", DefaultAttacherImage)
|
||||
CSIParam.SnapshotterImage = getImage(r.opConfig.Parameters, "ROOK_CSI_SNAPSHOTTER_IMAGE", DefaultSnapshotterImage)
|
||||
CSIParam.ResizerImage = getImage(r.opConfig.Parameters, "ROOK_CSI_RESIZER_IMAGE", DefaultResizerImage)
|
||||
CSIParam.KubeletDirPath = k8sutil.GetValue(r.opConfig.Parameters, "ROOK_CSI_KUBELET_DIR_PATH", DefaultKubeletDirPath)
|
||||
CSIParam.CSIAddonsImage = k8sutil.GetValue(r.opConfig.Parameters, "ROOK_CSIADDONS_IMAGE", DefaultCSIAddonsImage)
|
||||
CSIParam.CSIAddonsImage = getImage(r.opConfig.Parameters, "ROOK_CSIADDONS_IMAGE", DefaultCSIAddonsImage)
|
||||
CSIParam.CSIDomainLabels = k8sutil.GetValue(r.opConfig.Parameters, "CSI_TOPOLOGY_DOMAIN_LABELS", "")
|
||||
csiCephFSPodLabels := k8sutil.GetValue(r.opConfig.Parameters, "ROOK_CSI_CEPHFS_POD_LABELS", "")
|
||||
CSIParam.CSICephFSPodLabels = k8sutil.ParseStringToLabels(csiCephFSPodLabels)
|
||||
|
||||
@@ -18,6 +18,7 @@ package csi
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
"text/template"
|
||||
@@ -252,3 +253,15 @@ func applyVolumeMountToContainer(opConfig map[string]string, configName, contain
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// getImage returns the image for the given setting name. If the image does not contain version,
|
||||
// the default version is appended from the default image.
|
||||
func getImage(data map[string]string, settingName, defaultImage string) string {
|
||||
image := k8sutil.GetValue(data, settingName, defaultImage)
|
||||
if !strings.Contains(image, ":") {
|
||||
version := strings.SplitN(defaultImage, ":", 2)[1]
|
||||
image = fmt.Sprintf("%s:%s", image, version)
|
||||
}
|
||||
|
||||
return image
|
||||
}
|
||||
@@ -251,3 +251,54 @@ func Test_applyVolumeMountToContainer(t *testing.T) {
|
||||
assert.Len(t, ds.Spec.Template.Spec.Containers[1].VolumeMounts, defaultVolumes+1)
|
||||
|
||||
}
|
||||
|
||||
func Test_getImage(t *testing.T) {
|
||||
type args struct {
|
||||
data map[string]string
|
||||
settingName string
|
||||
defaultImage string
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
args args
|
||||
want string
|
||||
}{
|
||||
{
|
||||
name: "test with default image",
|
||||
args: args{
|
||||
data: map[string]string{},
|
||||
settingName: "ROOK_CSI_CEPH_IMAGE",
|
||||
defaultImage: "quay.io/cephcsi/cephcsi:v3.7.2",
|
||||
},
|
||||
want: DefaultCSIPluginImage,
|
||||
},
|
||||
{
|
||||
name: "test with user image",
|
||||
args: args{
|
||||
data: map[string]string{
|
||||
"ROOK_CSI_CEPH_IMAGE": "registry.io/private/cephcsi:v8",
|
||||
},
|
||||
settingName: "ROOK_CSI_CEPH_IMAGE",
|
||||
defaultImage: "quay.io/cephcsi/cephcsi:v3.7.2",
|
||||
},
|
||||
want: "registry.io/private/cephcsi:v8",
|
||||
},
|
||||
{
|
||||
name: "test with user image without version",
|
||||
args: args{
|
||||
data: map[string]string{
|
||||
"ROOK_CSI_CEPH_IMAGE": "registry.io/private/cephcsi",
|
||||
},
|
||||
settingName: "ROOK_CSI_CEPH_IMAGE",
|
||||
defaultImage: "quay.io/cephcsi/cephcsi:v3.7.2",
|
||||
},
|
||||
want: "registry.io/private/cephcsi:v3.7.2",
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := getImage(tt.args.data, tt.args.settingName, tt.args.defaultImage)
|
||||
assert.Equal(t, tt.want, got)
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user