Skip to content
This repository was archived by the owner on Nov 9, 2022. It is now read-only.
This repository is currently being migrated. It's locked while the migration is in progress.
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 5 additions & 17 deletions deploy/storageos-operators.configmap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1283,27 +1283,15 @@ data:
value: ""
- name: RELATED_IMAGE_STORAGEOS_INIT
value: ""
- name: RELATED_IMAGE_CSIV1_CLUSTER_DRIVER_REGISTRAR
- name: RELATED_IMAGE_CSI_NODE_DRIVER_REGISTRAR
value: ""
- name: RELATED_IMAGE_CSIV1_NODE_DRIVER_REGISTRAR
- name: RELATED_IMAGE_CSI_EXTERNAL_PROVISIONER
value: ""
- name: RELATED_IMAGE_CSIV1_EXTERNAL_PROVISIONER
- name: RELATED_IMAGE_CSI_EXTERNAL_ATTACHER
value: ""
- name: RELATED_IMAGE_CSIV1_EXTERNAL_ATTACHER
- name: RELATED_IMAGE_CSI_EXTERNAL_RESIZER
value: ""
- name: RELATED_IMAGE_CSIV1_EXTERNAL_ATTACHER_V2
value: ""
- name: RELATED_IMAGE_CSIV1_EXTERNAL_RESIZER
value: ""
- name: RELATED_IMAGE_CSIV1_LIVENESS_PROBE
value: ""
- name: RELATED_IMAGE_CSIV0_DRIVER_REGISTRAR
value: ""
- name: RELATED_IMAGE_CSIV0_EXTERNAL_PROVISIONER
value: ""
- name: RELATED_IMAGE_CSIV0_EXTERNAL_ATTACHER
value: ""
- name: RELATED_IMAGE_NFS
- name: RELATED_IMAGE_CSI_LIVENESS_PROBE
value: ""
- name: RELATED_IMAGE_KUBE_SCHEDULER
value: ""
Expand Down
52 changes: 17 additions & 35 deletions internal/pkg/image/image.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,47 +4,29 @@ import "os"

// Default image constant variables.
const (
DefaultNodeContainerImage = "storageos/node:v2.3.1"
DefaultInitContainerImage = "storageos/init:v2.1.0"
CSIv1ClusterDriverRegistrarContainerImage = "quay.io/k8scsi/csi-cluster-driver-registrar:v1.0.1"
CSIv1NodeDriverRegistrarContainerImage = "quay.io/k8scsi/csi-node-driver-registrar:v1.2.0"
CSIv1ExternalProvisionerContainerImageV1 = "storageos/csi-provisioner:v1.4.0"
CSIv1ExternalProvisionerContainerImageV2 = "storageos/csi-provisioner:v1.6.0-patched"
CSIv1ExternalAttacherContainerImage = "quay.io/k8scsi/csi-attacher:v1.2.1"
CSIv1ExternalAttacherv2ContainerImage = "quay.io/k8scsi/csi-attacher:v2.2.0"
CSIv1ExternalResizerContainerImage = "quay.io/k8scsi/csi-resizer:v0.5.0"
CSIv1LivenessProbeContainerImage = "quay.io/k8scsi/livenessprobe:v1.1.0"
CSIv0DriverRegistrarContainerImage = "quay.io/k8scsi/driver-registrar:v0.4.2"
CSIv0ExternalProvisionerContainerImage = "storageos/csi-provisioner:v0.4.3"
CSIv0ExternalAttacherContainerImage = "quay.io/k8scsi/csi-attacher:v0.4.2"
DefaultNFSContainerImage = "storageos/nfs:1.0.0"
DefaultAPIManagerImage = "storageos/api-manager:v1.0.0"

DefaultHyperkubeContainerRegistry = "gcr.io/google_containers/hyperkube"
DefaultNodeContainerImage = "storageos/node:v2.3.1"
DefaultInitContainerImage = "storageos/init:v2.1.0"
CSINodeDriverRegistrarContainerImage = "quay.io/k8scsi/csi-node-driver-registrar:v1.2.0"
CSIExternalProvisionerContainerImage = "storageos/csi-provisioner:v1.6.0-patched"
CSIExternalAttacherContainerImage = "quay.io/k8scsi/csi-attacher:v2.2.0"
CSIExternalResizerContainerImage = "quay.io/k8scsi/csi-resizer:v0.5.0"
CSILivenessProbeContainerImage = "quay.io/k8scsi/livenessprobe:v1.1.0"
DefaultAPIManagerImage = "storageos/api-manager:v1.0.0"

DefaultKubeSchedulerContainerRegistry = "k8s.gcr.io/kube-scheduler"
)

// Environment variables for setting default images.
const (
StorageOSNodeImageEnvVar = "RELATED_IMAGE_STORAGEOS_NODE"
StorageOSInitImageEnvVar = "RELATED_IMAGE_STORAGEOS_INIT"

CSIv1ClusterDriverRegistrarImageEnvVar = "RELATED_IMAGE_CSIV1_CLUSTER_DRIVER_REGISTRAR"
CSIv1NodeDriverRegistrarImageEnvVar = "RELATED_IMAGE_CSIV1_NODE_DRIVER_REGISTRAR"
CSIv1ExternalProvisionerImageEnvVar = "RELATED_IMAGE_CSIV1_EXTERNAL_PROVISIONER"
CSIv1ExternalAttacherImageEnvVar = "RELATED_IMAGE_CSIV1_EXTERNAL_ATTACHER"
CSIv1ExternalAttacherv2ImageEnvVar = "RELATED_IMAGE_CSIV1_EXTERNAL_ATTACHER_V2"
CSIv1ExternalResizerContainerImageEnvVar = "RELATED_IMAGE_CSIV1_EXTERNAL_RESIZER"
CSIv1LivenessProbeImageEnvVar = "RELATED_IMAGE_CSIV1_LIVENESS_PROBE"

CSIv0DriverRegistrarImageEnvVar = "RELATED_IMAGE_CSIV0_DRIVER_REGISTRAR"
CSIv0ExternalProvisionerImageEnvVar = "RELATED_IMAGE_CSIV0_EXTERNAL_PROVISIONER"
CSIv0ExternalAttacherImageEnvVar = "RELATED_IMAGE_CSIV0_EXTERNAL_ATTACHER"

NFSImageEnvVar = "RELATED_IMAGE_NFS"
KubeSchedulerImageEnvVar = "RELATED_IMAGE_KUBE_SCHEDULER"
APIManagerEnvVar = "RELATED_IMAGE_API_MANAGER"
StorageOSNodeImageEnvVar = "RELATED_IMAGE_STORAGEOS_NODE"
StorageOSInitImageEnvVar = "RELATED_IMAGE_STORAGEOS_INIT"
CSINodeDriverRegistrarImageEnvVar = "RELATED_IMAGE_CSI_NODE_DRIVER_REGISTRAR"
CSIExternalProvisionerImageEnvVar = "RELATED_IMAGE_CSI_EXTERNAL_PROVISIONER"
CSIExternalAttacherImageEnvVar = "RELATED_IMAGE_CSI_EXTERNAL_ATTACHER"
CSIExternalResizerContainerImageEnvVar = "RELATED_IMAGE_CSI_EXTERNAL_RESIZER"
CSILivenessProbeImageEnvVar = "RELATED_IMAGE_CSI_LIVENESS_PROBE"
KubeSchedulerImageEnvVar = "RELATED_IMAGE_KUBE_SCHEDULER"
APIManagerEnvVar = "RELATED_IMAGE_API_MANAGER"
)

// GetDefaultImage checks the environment variable for an image. If not found,
Expand Down
17 changes: 4 additions & 13 deletions internal/pkg/image/image_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (
)

func TestGetDefaultImage(t *testing.T) {
fakeNFSDefaultImage := "nfs/foo:1"
fakeStorageOSNodeImage := "stos/foo:1"

testcases := []struct {
Expand All @@ -18,45 +17,37 @@ func TestGetDefaultImage(t *testing.T) {
{
name: "images from env vars",
envVars: map[string]string{
NFSImageEnvVar: fakeNFSDefaultImage,
StorageOSNodeImageEnvVar: fakeStorageOSNodeImage,
},
defaultImages: map[string]string{
NFSImageEnvVar: DefaultNFSContainerImage,
StorageOSNodeImageEnvVar: DefaultNodeContainerImage,
},
wantImages: map[string]string{
NFSImageEnvVar: fakeNFSDefaultImage,
StorageOSNodeImageEnvVar: fakeStorageOSNodeImage,
},
},
{
name: "images not in env var",
envVars: map[string]string{},
defaultImages: map[string]string{
NFSImageEnvVar: DefaultNFSContainerImage,
StorageOSNodeImageEnvVar: DefaultNodeContainerImage,
},
wantImages: map[string]string{
NFSImageEnvVar: DefaultNFSContainerImage,
StorageOSNodeImageEnvVar: DefaultNodeContainerImage,
},
},
{
name: "some images in env var and some defaults",
envVars: map[string]string{
NFSImageEnvVar: fakeNFSDefaultImage,
StorageOSNodeImageEnvVar: fakeStorageOSNodeImage,
},
defaultImages: map[string]string{
NFSImageEnvVar: DefaultNFSContainerImage,
StorageOSNodeImageEnvVar: DefaultNodeContainerImage,
CSIv1LivenessProbeImageEnvVar: CSIv1LivenessProbeContainerImage,
StorageOSNodeImageEnvVar: DefaultNodeContainerImage,
CSILivenessProbeImageEnvVar: CSILivenessProbeContainerImage,
},
wantImages: map[string]string{
NFSImageEnvVar: fakeNFSDefaultImage,
StorageOSNodeImageEnvVar: fakeStorageOSNodeImage,
CSIv1LivenessProbeImageEnvVar: CSIv1LivenessProbeContainerImage,
StorageOSNodeImageEnvVar: fakeStorageOSNodeImage,
CSILivenessProbeImageEnvVar: CSILivenessProbeContainerImage,
},
},
}
Expand Down
103 changes: 19 additions & 84 deletions pkg/apis/storageos/v1/storageoscluster_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ const (
DefaultIngressHostname = "storageos.local"

DefaultPluginRegistrationPath = "/var/lib/kubelet/plugins_registry"
OldPluginRegistrationPath = "/var/lib/kubelet/plugins"

DefaultCSIEndpoint = "/storageos/csi.sock"
DefaultCSIRegistrarSocketDir = "/var/lib/kubelet/device-plugins/"
Expand Down Expand Up @@ -292,80 +291,44 @@ func (s StorageOSClusterSpec) GetInitContainerImage() string {
}

// GetCSINodeDriverRegistrarImage returns CSI node driver registrar container image.
func (s StorageOSClusterSpec) GetCSINodeDriverRegistrarImage(csiv1 bool) string {
func (s StorageOSClusterSpec) GetCSINodeDriverRegistrarImage() string {
if s.Images.CSINodeDriverRegistrarContainer != "" {
return s.Images.CSINodeDriverRegistrarContainer
}
if csiv1 {
return image.GetDefaultImage(image.CSIv1NodeDriverRegistrarImageEnvVar, image.CSIv1NodeDriverRegistrarContainerImage)
}
return image.GetDefaultImage(image.CSIv0DriverRegistrarImageEnvVar, image.CSIv0DriverRegistrarContainerImage)
}

// GetCSIClusterDriverRegistrarImage returns CSI cluster driver registrar
// container image.
func (s StorageOSClusterSpec) GetCSIClusterDriverRegistrarImage() string {
if s.Images.CSIClusterDriverRegistrarContainer != "" {
return s.Images.CSIClusterDriverRegistrarContainer
}
return image.GetDefaultImage(image.CSIv1ClusterDriverRegistrarImageEnvVar, image.CSIv1ClusterDriverRegistrarContainerImage)
return image.GetDefaultImage(image.CSINodeDriverRegistrarImageEnvVar, image.CSINodeDriverRegistrarContainerImage)
}

// GetCSIExternalProvisionerImage returns CSI external provisioner container image.
func (s StorageOSClusterSpec) GetCSIExternalProvisionerImage(csiv1 bool) string {
func (s StorageOSClusterSpec) GetCSIExternalProvisionerImage() string {
if s.Images.CSIExternalProvisionerContainer != "" {
return s.Images.CSIExternalProvisionerContainer
}
if csiv1 {
return image.GetDefaultImage(image.CSIv1ExternalProvisionerImageEnvVar, image.CSIv1ExternalProvisionerContainerImageV2)
}
return image.GetDefaultImage(image.CSIv0ExternalProvisionerImageEnvVar, image.CSIv0ExternalProvisionerContainerImage)
return image.GetDefaultImage(image.CSIExternalProvisionerImageEnvVar, image.CSIExternalProvisionerContainerImage)
}

// GetCSIExternalAttacherImage returns CSI external attacher container image.
// CSI v0, CSI v1 on k8s 1.13 and CSI v1 on k8s 1.14+ require different versions
// of external attacher.
func (s StorageOSClusterSpec) GetCSIExternalAttacherImage(csiv1 bool, attacherv2Supported bool) string {
// Require different versions of external attacher.
func (s StorageOSClusterSpec) GetCSIExternalAttacherImage() string {
if s.Images.CSIExternalAttacherContainer != "" {
return s.Images.CSIExternalAttacherContainer
}
if csiv1 {
if attacherv2Supported {
return image.GetDefaultImage(image.CSIv1ExternalAttacherv2ImageEnvVar, image.CSIv1ExternalAttacherv2ContainerImage)
}
return image.GetDefaultImage(image.CSIv1ExternalAttacherImageEnvVar, image.CSIv1ExternalAttacherContainerImage)
}
return image.GetDefaultImage(image.CSIv0ExternalAttacherImageEnvVar, image.CSIv0ExternalAttacherContainerImage)
return image.GetDefaultImage(image.CSIExternalAttacherImageEnvVar, image.CSIExternalAttacherContainerImage)
}

// GetCSIExternalResizerImage returns CSI external resizer container image.
func (s StorageOSClusterSpec) GetCSIExternalResizerImage() string {
if s.Images.CSIExternalResizerContainer != "" {
return s.Images.CSIExternalResizerContainer
}
return image.GetDefaultImage(image.CSIv1ExternalResizerContainerImageEnvVar, image.CSIv1ExternalResizerContainerImage)
return image.GetDefaultImage(image.CSIExternalResizerContainerImageEnvVar, image.CSIExternalResizerContainerImage)
}

// GetCSILivenessProbeImage returns CSI liveness probe container image.
func (s StorageOSClusterSpec) GetCSILivenessProbeImage() string {
if s.Images.CSILivenessProbeContainer != "" {
return s.Images.CSILivenessProbeContainer
}
return image.GetDefaultImage(image.CSIv1LivenessProbeImageEnvVar, image.CSIv1LivenessProbeContainerImage)
}

// GetHyperkubeImage returns hyperkube container image for a given k8s version.
// If an image is set explicitly in the cluster configuration, that image is
// returned.
func (s StorageOSClusterSpec) GetHyperkubeImage(k8sVersion string) string {
if s.Images.HyperkubeContainer != "" {
return s.Images.HyperkubeContainer
}

// NOTE: Hyperkube is not being used anywhere for now. Hyperkube image is
// not available to be set via environment variable.
// Add version prefix "v" in the tag.
return fmt.Sprintf("%s:v%s", image.DefaultHyperkubeContainerRegistry, k8sVersion)
return image.GetDefaultImage(image.CSILivenessProbeImageEnvVar, image.CSILivenessProbeContainerImage)
}

// GetKubeSchedulerImage returns kube-scheduler container image for a given k8s
Expand All @@ -387,15 +350,6 @@ func (s StorageOSClusterSpec) GetKubeSchedulerImage(k8sVersion string) string {
return image.GetDefaultImage(image.KubeSchedulerImageEnvVar, fallbackImage)
}

// GetNFSServerImage returns NFS server container image used as the default
// image in the cluster.
func (s StorageOSClusterSpec) GetNFSServerImage() string {
if s.Images.NFSContainer != "" {
return s.Images.NFSContainer
}
return image.GetDefaultImage(image.NFSImageEnvVar, image.DefaultNFSContainerImage)
}

// GetAPIManagerImage returns the API Manager container image used as the
// default image in the cluster.
func (s StorageOSClusterSpec) GetAPIManagerImage() string {
Expand Down Expand Up @@ -446,14 +400,11 @@ func (s StorageOSClusterSpec) GetIngressHostname() string {
}

// GetCSIEndpoint returns the CSI unix socket endpoint path.
func (s StorageOSClusterSpec) GetCSIEndpoint(csiv1 bool) string {
func (s StorageOSClusterSpec) GetCSIEndpoint() string {
if s.CSI.Endpoint != "" {
return s.CSI.Endpoint
}
if csiv1 {
return getDefaultCSIEndpoint(DefaultPluginRegistrationPath)
}
return getDefaultCSIEndpoint(OldPluginRegistrationPath)
return getDefaultCSIEndpoint(DefaultPluginRegistrationPath)
}

// GetCSIRegistrarSocketDir returns the CSI registrar socket dir.
Expand All @@ -473,14 +424,11 @@ func (s StorageOSClusterSpec) GetCSIKubeletDir() string {
}

// GetCSIPluginDir returns the CSI plugin dir.
func (s StorageOSClusterSpec) GetCSIPluginDir(csiv1 bool) string {
func (s StorageOSClusterSpec) GetCSIPluginDir() string {
if s.CSI.PluginDir != "" {
return s.CSI.PluginDir
}
if csiv1 {
return getDefaultCSIPluginDir(DefaultPluginRegistrationPath)
}
return getDefaultCSIPluginDir(OldPluginRegistrationPath)
return getDefaultCSIPluginDir(DefaultPluginRegistrationPath)
}

// GetCSIDeviceDir returns the CSI device dir.
Expand All @@ -492,26 +440,19 @@ func (s StorageOSClusterSpec) GetCSIDeviceDir() string {
}

// GetCSIRegistrationDir returns the CSI registration dir.
func (s StorageOSClusterSpec) GetCSIRegistrationDir(csiv1 bool) string {
func (s StorageOSClusterSpec) GetCSIRegistrationDir() string {
if s.CSI.RegistrationDir != "" {
return s.CSI.RegistrationDir
}
if csiv1 {
return DefaultCSIRegistrationDir
}
// CSI Registration Dir and Plugin Registration Path are the same.
return OldPluginRegistrationPath
return DefaultCSIRegistrationDir
}

// GetCSIKubeletRegistrationPath returns the CSI Kubelet Registration Path.
func (s StorageOSClusterSpec) GetCSIKubeletRegistrationPath(csiv1 bool) string {
func (s StorageOSClusterSpec) GetCSIKubeletRegistrationPath() string {
if s.CSI.KubeletRegistrationPath != "" {
return s.CSI.KubeletRegistrationPath
}
if csiv1 {
return getDefaultCSIKubeletRegistrationPath(DefaultPluginRegistrationPath)
}
return getDefaultCSIKubeletRegistrationPath(OldPluginRegistrationPath)
return getDefaultCSIKubeletRegistrationPath(DefaultPluginRegistrationPath)
}

// GetCSIDriverRegistrationMode returns the CSI Driver Registration Mode.
Expand All @@ -531,14 +472,8 @@ func (s StorageOSClusterSpec) GetCSIDriverRequiresAttachment() string {
}

// GetCSIVersion returns the CSI Driver version.
func (s StorageOSClusterSpec) GetCSIVersion(csiv1 bool) string {
if s.CSI.Version != "" {
return s.CSI.Version
}
if csiv1 {
return "v1"
}
return "v0"
func (s StorageOSClusterSpec) GetCSIVersion() string {
return "v1"
}

// GetCSIDeploymentStrategy returns the CSI helper deployment strategy value.
Expand Down
10 changes: 0 additions & 10 deletions pkg/controller/add_nfsserver.go

This file was deleted.

Loading