Skip to content

Commit

Permalink
Added support for resiliency module with minimal manifest (#695)
Browse files Browse the repository at this point in the history
* Added support for resiliency module

Signed-off-by: Harish P <harish_p4@dell.com>

* lint fix

Signed-off-by: Harish P <harish_p4@dell.com>

* updated default latest image to be used for reverse-proxy

Signed-off-by: Harish P <harish_p4@dell.com>

* fixed failing tests

Signed-off-by: Harish P <harish_p4@dell.com>

* review fix

Signed-off-by: Harish P <harish_p4@dell.com>

---------

Signed-off-by: Harish P <harish_p4@dell.com>
  • Loading branch information
harishp8889 authored Sep 20, 2024
1 parent 620ee2d commit c6779bb
Show file tree
Hide file tree
Showing 16 changed files with 84 additions and 17 deletions.
2 changes: 1 addition & 1 deletion operatorconfig/driverconfig/common/default.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@ images:
sdcmonitor: dellemc/sdc:4.5.2.1
# "images.metadataretriever" defines the container images used for csi metadata retriever
metadataretriever: dellemc/csi-metadata-retriever:v1.8.0
# "images.csiReverseProxy" defines the container images used for reverse-proxy
# "images.csiReverseProxy" defines the container images used for reverse-proxy by default
csiReverseProxy: dellemc/csipowermax-reverseproxy:v2.10.0
2 changes: 1 addition & 1 deletion operatorconfig/driverconfig/common/k8s-1.24-values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@ images:
sdcmonitor: dellemc/sdc:4.5.1
# "images.metadataretriever" defines the container images used for csi metadata retriever
metadataretriever: dellemc/csi-metadata-retriever:v1.8.0
# "images.csiReverseProxy" defines the container images used for reverse-proxy
# "images.csiReverseProxy" defines the container images used for reverse-proxy by default
csiReverseProxy: dellemc/csipowermax-reverseproxy:v2.10.0
2 changes: 1 addition & 1 deletion operatorconfig/driverconfig/common/k8s-1.25-values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@ images:
sdcmonitor: dellemc/sdc:4.5.1
# "images.metadataretriever" defines the container images used for csi metadata retriever
metadataretriever: dellemc/csi-metadata-retriever:v1.8.0
# "images.csiReverseProxy" defines the container images used for reverse-proxy
# "images.csiReverseProxy" defines the container images used for reverse-proxy by default
csiReverseProxy: dellemc/csipowermax-reverseproxy:v2.10.0
2 changes: 1 addition & 1 deletion operatorconfig/driverconfig/common/k8s-1.26-values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@ images:
sdcmonitor: dellemc/sdc:4.5.1
# "images.metadataretriever" defines the container images used for csi metadata retriever
metadataretriever: dellemc/csi-metadata-retriever:v1.8.0
# "images.csiReverseProxy" defines the container images used for reverse-proxy
# "images.csiReverseProxy" defines the container images used for reverse-proxy by default
csiReverseProxy: dellemc/csipowermax-reverseproxy:v2.10.0
2 changes: 1 addition & 1 deletion operatorconfig/driverconfig/common/k8s-1.27-values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@ images:
sdcmonitor: dellemc/sdc:4.5.1
# "images.metadataretriever" defines the container images used for csi metadata retriever
metadataretriever: dellemc/csi-metadata-retriever:v1.8.0
# "images.csiReverseProxy" defines the container images used for reverse-proxy
# "images.csiReverseProxy" defines the container images used for reverse-proxy by default
csiReverseProxy: dellemc/csipowermax-reverseproxy:v2.10.0
2 changes: 1 addition & 1 deletion operatorconfig/driverconfig/common/k8s-1.28-values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@ images:
sdcmonitor: dellemc/sdc:4.5.2.1
# "images.metadataretriever" defines the container images used for csi metadata retriever
metadataretriever: dellemc/csi-metadata-retriever:v1.8.0
# "images.csiReverseProxy" defines the container images used for reverse-proxy
# "images.csiReverseProxy" defines the container images used for reverse-proxy by default
csiReverseProxy: dellemc/csipowermax-reverseproxy:v2.10.0
2 changes: 1 addition & 1 deletion operatorconfig/driverconfig/common/k8s-1.29-values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@ images:
sdcmonitor: dellemc/sdc:4.5.2.1
# "images.metadataretriever" defines the container images used for csi metadata retriever
metadataretriever: dellemc/csi-metadata-retriever:v1.8.0
# "images.csiReverseProxy" defines the container images used for reverse-proxy
# "images.csiReverseProxy" defines the container images used for reverse-proxy by default
csiReverseProxy: dellemc/csipowermax-reverseproxy:v2.10.0
2 changes: 1 addition & 1 deletion operatorconfig/driverconfig/common/k8s-1.30-values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@ images:
sdcmonitor: dellemc/sdc:4.5.2.1
# "images.metadataretriever" defines the container images used for csi metadata retriever
metadataretriever: dellemc/csi-metadata-retriever:v1.8.0
# "images.csiReverseProxy" defines the container images used for reverse-proxy
# "images.csiReverseProxy" defines the container images used for reverse-proxy by default
csiReverseProxy: dellemc/csipowermax-reverseproxy:v2.10.0
4 changes: 2 additions & 2 deletions operatorconfig/driverconfig/common/k8s-1.31-values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@ images:
sdcmonitor: dellemc/sdc:4.5.2.1
# "images.metadataretriever" defines the container images used for csi metadata retriever
metadataretriever: dellemc/csi-metadata-retriever:v1.8.0
# "images.csiReverseProxy" defines the container images used for reverse-proxy
csiReverseProxy: dellemc/csipowermax-reverseproxy:v2.11.0
# "images.csiReverseProxy" defines the container images used for reverse-proxy by default
csiReverseProxy: dellemc/csipowermax-reverseproxy:v2.10.0
3 changes: 3 additions & 0 deletions operatorconfig/moduleconfig/csireverseproxy/latest.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# This file represents the latest version of the released module. This must be updated on every release
# This version will be used by the minimal manifests to install the latest version when no version is given.
version: v2.11.0
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,20 @@
#
#
name: podmon
image: dellemc/podmon:v1.11.0
image: dellemc/podmon:v1.10.0
imagePullPolicy: IfNotPresent
args:
- "--labelvalue=csi-powermax"
- "--arrayConnectivityPollRate=60"
- "--skipArrayConnectionValidation=false"
- "--driverPodLabelValue=dell-storage"
- "--ignoreVolumelessPods=false"
- "--arrayConnectivityConnectionLossThreshold=3"
# Below 4 args should not be modified.
- "--csisock=unix:/var/run/csi/csi.sock"
- "--mode=controller"
- "--driver-config-params=/powermax-config-params/driver-config-params.yaml"
- "--driverPath=csi-powermax.dellemc.com"
env:
- name: MY_NODE_NAME
valueFrom:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,22 @@ securityContext:
capabilities:
add: ["SYS_ADMIN"]
allowPrivilegeEscalation: true
image: dellemc/podmon:v1.11.0
image: dellemc/podmon:v1.10.0
imagePullPolicy: IfNotPresent
args:
- "--labelvalue=csi-powermax"
- "--arrayConnectivityPollRate=60"
- "--leaderelection=false"
- "--driverPodLabelValue=dell-storage"
- "--ignoreVolumelessPods=false"
# Below 4 args should not be modified.
- "--csisock=unix:/var/lib/kubelet/plugins/powermax.emc.dell.com/csi_sock"
- "--mode=node"
- "--driver-config-params=/powermax-config-params/driver-config-params.yaml"
- "--driverPath=csi-powermax.dellemc.com"
env:
- name: "X_CSI_PODMON_API_PORT"
value: "8083"
- name: KUBE_NODE_NAME
valueFrom:
fieldRef:
Expand Down
16 changes: 11 additions & 5 deletions pkg/drivers/powermax.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,17 +94,23 @@ func PrecheckPowerMax(ctx context.Context, cr *csmv1.ContainerStorageModule, ope
Value: "/var/lib/kubelet",
})
}
version, err := utils.GetLatestVersion(string(csmv1.ReverseProxy), operatorConfig)
if err != nil {
return err
}
if cr.Spec.Modules == nil {
// this means it's a minimal yaml and we will append reverse-proxy by default
// This means it's a minimal yaml and we will append reverse-proxy by default
modules := make([]csmv1.Module, 0)
modules = append(modules, csmv1.Module{
Name: "csireverseproxy",
Name: csmv1.ReverseProxy,
Enabled: true,
ConfigVersion: "v2.10.0",
ConfigVersion: version,
ForceRemoveModule: true,
InitContainer: nil,
})
cr.Spec.Modules = modules
}

foundRevProxy := false
for _, mod := range cr.Spec.Modules {
if mod.Name == csmv1.ReverseProxy {
Expand All @@ -115,9 +121,9 @@ func PrecheckPowerMax(ctx context.Context, cr *csmv1.ContainerStorageModule, ope
if !foundRevProxy {
log.Infof("Reverse proxy module not found adding it with default config")
cr.Spec.Modules = append(cr.Spec.Modules, csmv1.Module{
Name: "csireverseproxy",
Name: csmv1.ReverseProxy,
Enabled: true,
ConfigVersion: "v2.10.0",
ConfigVersion: version,
ForceRemoveModule: true,
})
}
Expand Down
26 changes: 26 additions & 0 deletions pkg/utils/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,11 @@ type CSMComponentType interface {
csmv1.ModuleType | csmv1.DriverType
}

// LatestVersion - used in minimal manifests for CSM
type LatestVersion struct {
Version string `yaml:"version"`
}

const (
// DefaultReleaseName constant
DefaultReleaseName = "<DriverDefaultReleaseName>"
Expand Down Expand Up @@ -1333,3 +1338,24 @@ func CreateBrownfieldRbac(ctx context.Context, operatorConfig OperatorConfig, cr
}
return nil
}

func GetLatestVersion(resourceType string, op OperatorConfig) (string, error) {
path := ""
switch resourceType {
case string(csmv1.ReverseProxy):
path = fmt.Sprintf("%s/moduleconfig/%s/%s", op.ConfigDirectory, csmv1.ReverseProxy, "latest.yaml")
}
// Read the YAML file
data, err := os.ReadFile(filepath.Clean(path))
if err != nil {
return "", err
}

// Unmarshal the YAML data into the Config struct
var latestVersion LatestVersion
err = yaml.Unmarshal(data, &latestVersion)
if err != nil {
return "", err
}
return latestVersion.Version, nil
}
4 changes: 4 additions & 0 deletions samples/minimal-samples/powermax.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,7 @@ spec:
driver:
csiDriverType: "powermax"
configVersion: v2.12.0
# These are the modules which are optional and can be enabled by specifying to enable/disable.
# modules:
# - name: resiliency
# enabled: true
3 changes: 3 additions & 0 deletions tests/config/moduleconfig/csireverseproxy/latest.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# This file represents the latest version of the released module. This must be updated on every release
# This version will be used by the minimal manifests to install the latest version when no version is given.
version: v2.11.0

0 comments on commit c6779bb

Please sign in to comment.