diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1e5f4c2ad4170984e3e7e976d167acada2c67a33..2a797ae650afaf14ecac056d77b0e2e5e74627d4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,22 @@
+### v0.12.0
+##### October 12, 2022
+
+#### :beetle: Bug Fixes
+
+- PDB (Pod disruption budget) creation issue
+- Fixed cluster recovery logic
+- Fixed IP check and conversion logic
+- Persistence issue fix
+
+#### :tada: Features
+
+- Added pvc, pv clusterrole fix
+- Support for defining serviceAccount
+- Closing of redis client connection
+- Added finalizer for statefulset
+- Added Prometheus service annotation
+- Added support for Redis 7 with DNS hostname
+
 ### v0.11.0
 ##### July 5, 2022
 
diff --git a/SECURITY.md b/SECURITY.md
index b55c63bf8807624db3d136630b3de3582ea6f8a9..71e7c63c17636372b9097dc41ed44bf74cc6e6f5 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -6,15 +6,19 @@ Use this section to tell people about which versions of your project are
 currently being supported with security updates.
 
 | Version | Supported          |
-| ------- | ------------------ |
-| 0.8.0   | :white_check_mark: |
-| 0.7.0   | :white_check_mark: |
-| 0.6.0   | :white_check_mark: |
-| 0.5.0   | :x: |
-| 0.4.0   | :x: |
-| 0.3.0   | :x: |
-| 0.2.0   | :x: |
-| 0.1.0   | :x: |
+|---------|--------------------|
+| 0.12.0  | :white_check_mark: |
+| 0.11.0  | :white_check_mark: |
+| 0.10.0  | :x:                |
+| 0.9.0   | :x:                |
+| 0.8.0   | :x:                |
+| 0.7.0   | :x:                |
+| 0.6.0   | :x:                |
+| 0.5.0   | :x:                |
+| 0.4.0   | :x:                |
+| 0.3.0   | :x:                |
+| 0.2.0   | :x:                |
+| 0.1.0   | :x:                |
 
 
 ## Reporting a Vulnerability
diff --git a/api/v1beta1/rediscluster_types.go b/api/v1beta1/rediscluster_types.go
index c817e21caf41b89d11926080238df3e97bbba5fa..5f91a4963b9db325b5a871f997e65e806d18a65c 100644
--- a/api/v1beta1/rediscluster_types.go
+++ b/api/v1beta1/rediscluster_types.go
@@ -25,6 +25,8 @@ import (
 type RedisClusterSpec struct {
 	Size             *int32           `json:"clusterSize"`
 	KubernetesConfig KubernetesConfig `json:"kubernetesConfig"`
+	// +kubebuilder:default:=v7
+	ClusterVersion *string `json:"clusterVersion,omitempty"`
 	// +kubebuilder:default:={livenessProbe:{initialDelaySeconds: 1, timeoutSeconds: 1, periodSeconds: 10, successThreshold: 1, failureThreshold:3}, readinessProbe:{initialDelaySeconds: 1, timeoutSeconds: 1, periodSeconds: 10, successThreshold: 1, failureThreshold:3}}
 	RedisLeader RedisLeader `json:"redisLeader,omitempty"`
 	// +kubebuilder:default:={livenessProbe:{initialDelaySeconds: 1, timeoutSeconds: 1, periodSeconds: 10, successThreshold: 1, failureThreshold:3}, readinessProbe:{initialDelaySeconds: 1, timeoutSeconds: 1, periodSeconds: 10, successThreshold: 1, failureThreshold:3}}
@@ -58,8 +60,10 @@ type RedisLeader struct {
 	RedisConfig         *RedisConfig              `json:"redisConfig,omitempty"`
 	Affinity            *corev1.Affinity          `json:"affinity,omitempty"`
 	PodDisruptionBudget *RedisPodDisruptionBudget `json:"pdb,omitempty"`
-	ReadinessProbe      *Probe                    `json:"readinessProbe,omitempty" protobuf:"bytes,11,opt,name=readinessProbe"`
-	LivenessProbe       *Probe                    `json:"livenessProbe,omitempty" protobuf:"bytes,11,opt,name=livenessProbe"`
+	// +kubebuilder:default:={initialDelaySeconds: 1, timeoutSeconds: 1, periodSeconds: 10, successThreshold: 1, failureThreshold:3}
+	ReadinessProbe *Probe `json:"readinessProbe,omitempty" protobuf:"bytes,11,opt,name=readinessProbe"`
+	// +kubebuilder:default:={initialDelaySeconds: 1, timeoutSeconds: 1, periodSeconds: 10, successThreshold: 1, failureThreshold:3}
+	LivenessProbe *Probe `json:"livenessProbe,omitempty" protobuf:"bytes,11,opt,name=livenessProbe"`
 }
 
 // RedisFollower interface will have the redis follower configuration
@@ -68,8 +72,10 @@ type RedisFollower struct {
 	RedisConfig         *RedisConfig              `json:"redisConfig,omitempty"`
 	Affinity            *corev1.Affinity          `json:"affinity,omitempty"`
 	PodDisruptionBudget *RedisPodDisruptionBudget `json:"pdb,omitempty"`
-	ReadinessProbe      *Probe                    `json:"readinessProbe,omitempty" protobuf:"bytes,11,opt,name=readinessProbe"`
-	LivenessProbe       *Probe                    `json:"livenessProbe,omitempty" protobuf:"bytes,11,opt,name=livenessProbe"`
+	// +kubebuilder:default:={initialDelaySeconds: 1, timeoutSeconds: 1, periodSeconds: 10, successThreshold: 1, failureThreshold:3}
+	ReadinessProbe *Probe `json:"readinessProbe,omitempty" protobuf:"bytes,11,opt,name=readinessProbe"`
+	// +kubebuilder:default:={initialDelaySeconds: 1, timeoutSeconds: 1, periodSeconds: 10, successThreshold: 1, failureThreshold:3}
+	LivenessProbe *Probe `json:"livenessProbe,omitempty" protobuf:"bytes,11,opt,name=livenessProbe"`
 }
 
 // RedisClusterStatus defines the observed state of RedisCluster
diff --git a/api/v1beta1/zz_generated.deepcopy.go b/api/v1beta1/zz_generated.deepcopy.go
index 9ae16c08d819b3b67bcc2797b7741ecbfce45435..f8d062a2cd1f7987b215ba09dd3dec111b215167 100644
--- a/api/v1beta1/zz_generated.deepcopy.go
+++ b/api/v1beta1/zz_generated.deepcopy.go
@@ -195,6 +195,11 @@ func (in *RedisClusterSpec) DeepCopyInto(out *RedisClusterSpec) {
 		**out = **in
 	}
 	in.KubernetesConfig.DeepCopyInto(&out.KubernetesConfig)
+	if in.ClusterVersion != nil {
+		in, out := &in.ClusterVersion, &out.ClusterVersion
+		*out = new(string)
+		**out = **in
+	}
 	in.RedisLeader.DeepCopyInto(&out.RedisLeader)
 	in.RedisFollower.DeepCopyInto(&out.RedisFollower)
 	if in.RedisExporter != nil {
diff --git a/config/crd/bases/redis.redis.opstreelabs.in_redisclusters.yaml b/config/crd/bases/redis.redis.opstreelabs.in_redisclusters.yaml
index 78486b846db8e16a6e8e9899716b6041c4049cef..05c1c7577b4675f2d2415a5b73f258f6df39fcc4 100644
--- a/config/crd/bases/redis.redis.opstreelabs.in_redisclusters.yaml
+++ b/config/crd/bases/redis.redis.opstreelabs.in_redisclusters.yaml
@@ -130,6 +130,9 @@ spec:
               clusterSize:
                 format: int32
                 type: integer
+              clusterVersion:
+                default: v7
+                type: string
               kubernetesConfig:
                 description: KubernetesConfig will be the JSON struct for Basic Redis
                   Config
@@ -1232,6 +1235,12 @@ spec:
                         type: object
                     type: object
                   livenessProbe:
+                    default:
+                      failureThreshold: 3
+                      initialDelaySeconds: 1
+                      periodSeconds: 10
+                      successThreshold: 1
+                      timeoutSeconds: 1
                     description: Probe is a interface for ReadinessProbe and LivenessProbe
                     properties:
                       failureThreshold:
@@ -1274,6 +1283,12 @@ spec:
                         type: integer
                     type: object
                   readinessProbe:
+                    default:
+                      failureThreshold: 3
+                      initialDelaySeconds: 1
+                      periodSeconds: 10
+                      successThreshold: 1
+                      timeoutSeconds: 1
                     description: Probe is a interface for ReadinessProbe and LivenessProbe
                     properties:
                       failureThreshold:
@@ -2195,6 +2210,12 @@ spec:
                         type: object
                     type: object
                   livenessProbe:
+                    default:
+                      failureThreshold: 3
+                      initialDelaySeconds: 1
+                      periodSeconds: 10
+                      successThreshold: 1
+                      timeoutSeconds: 1
                     description: Probe is a interface for ReadinessProbe and LivenessProbe
                     properties:
                       failureThreshold:
@@ -2237,6 +2258,12 @@ spec:
                         type: integer
                     type: object
                   readinessProbe:
+                    default:
+                      failureThreshold: 3
+                      initialDelaySeconds: 1
+                      periodSeconds: 10
+                      successThreshold: 1
+                      timeoutSeconds: 1
                     description: Probe is a interface for ReadinessProbe and LivenessProbe
                     properties:
                       failureThreshold:
diff --git a/docs/src/guide/README.md b/docs/src/guide/README.md
index 0d128ab63e80ad2363abbaffb785d5e5f8702684..c170bfc5e5c70724ef1fa861d4f7ffb7a7ac0ef5 100755
--- a/docs/src/guide/README.md
+++ b/docs/src/guide/README.md
@@ -29,6 +29,7 @@ Here the features which are supported by this operator:-
     - Tolerations
     - SecurityContext
     - Storage
+    - ServiceAccount
 
 ## Architecture
 
diff --git a/docs/src/guide/changelog.md b/docs/src/guide/changelog.md
index 84f01dadf63e275f31cedb1322a3d64a4c0d388e..52ecb7660ffc1eecd0d5f5c4ddd87046b3e4e630 100644
--- a/docs/src/guide/changelog.md
+++ b/docs/src/guide/changelog.md
@@ -1,3 +1,33 @@
+### v0.12.0
+##### October 12, 2022
+
+**:beetle: Bug Fixes**
+
+- PDB (Pod disruption budget) creation issue
+- Fixed cluster recovery logic
+- Fixed IP check and conversion logic
+- Persistence issue fix
+
+**:tada: Features**
+
+- Added pvc, pv clusterrole fix
+- Support for defining serviceAccount
+- Closing of redis client connection
+- Added finalizer for statefulset
+- Added Prometheus service annotation
+- Added support for Redis 7 with DNS hostname
+
+### v0.11.0
+**July 5, 2022**
+
+**:beetle: Bug Fixes**
+
+- Fix Redis cluster and Redis CRD
+- Fixed TLS authentication between redis cluster
+- Fixed RBAC policy for PDB
+- Redis exporter exception handled
+- External service fix
+
 ### v0.10.0
 **January 26, 2022**
 
diff --git a/docs/src/guide/failover.md b/docs/src/guide/failover.md
index 0d84b73c92cd71c83393f68191e6eef63cbac2ef..d3c5b2d164ad6ae0f3bbca72d98f9def63ff2973 100644
--- a/docs/src/guide/failover.md
+++ b/docs/src/guide/failover.md
@@ -3,11 +3,11 @@
 Before failover testing, we have to write some dummy data inside the Redis cluster, we can write the dummy data using the `redis-cli`.
 
 ```shell
-$ kubectl exec -it redis-leader-0 -n redis-operator \
+$ kubectl exec -it redis-leader-0 -n ot-operators \
     -- redis-cli -a Opstree@1234 -c set tony stark
 ...
 Defaulting container name to redis-leader.
-Use 'kubectl describe pod/redis-leader-0 -n redis-operator' to see all of the containers in this pod.
+Use 'kubectl describe pod/redis-leader-0 -n ot-operatorsr' to see all of the containers in this pod.
 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
 OK
 ```
@@ -15,10 +15,10 @@ OK
 Verify the key has been inserted properly by fetching its value.
 
 ```shell
-$ kubectl exec -it redis-leader-0 -n redis-operator \
+$ kubectl exec -it redis-leader-0 -n ot-operators \
     -- redis-cli -a Opstree@1234 -c get tony
 ...
-Use 'kubectl describe pod/redis-leader-0 -n redis-operator' to see all of the containers in this pod.
+Use 'kubectl describe pod/redis-leader-0 -n ot-operators' to see all of the containers in this pod.
 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
 "stark"
 ```
@@ -26,7 +26,7 @@ Warning: Using a password with '-a' or '-u' option on the command line interface
 Let’s restart the pod name `redis-leader-0` and see the redis node behavior.
 
 ```shell
-$ kubectl delete pod redis-leader-0 -n redis-operator
+$ kubectl delete pod redis-leader-0 -n ot-operators
 ...
 pod "redis-leader-0" deleted
 ```
@@ -34,11 +34,11 @@ pod "redis-leader-0" deleted
 Now we can again try to list redis cluster nodes from `redis-leader-0` pod and from some other pod as well like:- `redis-follower-2`
 
 ```shell
-$ kubectl exec -it redis-leader-0 -n redis-operator \
+$ kubectl exec -it redis-leader-0 -n ot-operators \
     -- redis-cli -a Opstree@1234 cluster nodes
 ...
 Defaulting container name to redis-leader.
-Use 'kubectl describe pod/redis-leader-0 -n redis-operator' to see all of the containers in this pod.
+Use 'kubectl describe pod/redis-leader-0 -n ot-operators' to see all of the containers in this pod.
 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
 eef84b7dada737051c32d592bd66652b9af0cb35 10.42.2.184:6379@16379 slave 0a36dc5064b0a61afa8bd850e93ff0a1c2267704 0 1619958171517 3 connected
 a7c424b5ec0e696aa7be15a691846c8820e48cd1 10.42.1.181:6379@16379 master - 0 1619958172520 4 connected 0-5460
@@ -50,14 +50,14 @@ a7c424b5ec0e696aa7be15a691846c8820e48cd1 10.42.1.181:6379@16379 master - 0 16199
 
 So if you notice the output of cluster nodes command, the node IP is updated and it’s connected as a leader.
 
-Let's try to get value of key from some other pod
+Let's try to get value of key from some other pods
 
 ```shell
-$ kubectl exec -it redis-follower-1 -n redis-operator \
+$ kubectl exec -it redis-follower-1 -n ot-operators \
     -- redis-cli -a Opstree@1234 -c get tony
 ...
 Defaulting container name to redis-follower.
-Use 'kubectl describe pod/redis-follower-1 -n redis-operator' to see all of the containers in this pod.
+Use 'kubectl describe pod/redis-follower-1 -n ot-operators' to see all of the containers in this pod.
 Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
 "stark"
 ```
diff --git a/docs/src/guide/installation.md b/docs/src/guide/installation.md
index 440f552237b448c503878b3e65c409e71ef51248..2737af0d11425432b5f948d1bbfb38352c60e3d6 100644
--- a/docs/src/guide/installation.md
+++ b/docs/src/guide/installation.md
@@ -13,12 +13,12 @@ The easiest way to install a redis operator is using Helm chart. The operator he
 ```shell
 $ helm repo add ot-helm https://ot-container-kit.github.io/helm-charts/
 $ helm upgrade redis-operator ot-helm/redis-operator \
-    --install --namespace redis-operator
+    --install --namespace ot-operators
 ...
 Release "redis-operator" does not exist. Installing it now.
 NAME: redis-operator
 LAST DEPLOYED: Sun May  2 14:42:23 2021
-NAMESPACE: redis-operator
+NAMESPACE: ot-operators
 STATUS: deployed
 REVISION: 1
 TEST SUITE: None
@@ -27,7 +27,7 @@ TEST SUITE: None
 Check the state of the pod is running or not.
 
 ```shell
-$ kubectl get pods -n redis-operator
+$ kubectl get pods -n ot-operators
 ...
 NAME                              READY   STATUS    RESTARTS   AGE
 redis-operator-74b6cbf5c5-td8t7   1/1     Running   0          2m11s
diff --git a/docs/src/guide/redis-cluster-config.md b/docs/src/guide/redis-cluster-config.md
index e0a197e4bb4514c4b48004ed5f2d01795996cb72..6ad0c33c5ca55ee90cb2b0aa2c81e194d16690b3 100644
--- a/docs/src/guide/redis-cluster-config.md
+++ b/docs/src/guide/redis-cluster-config.md
@@ -13,36 +13,38 @@ In this configuration section, we have these configuration parameters:-
 
 ## Helm Parameters
 
-|**Name**|**Default Value**|**Description**|
-|--------|-----------------|---------------|
-|`imagePullSecrets` | [] | List of image pull secrets, in case redis image is getting pull from private registry |
-|`redisCluster.clusterSize` | 3 | Size of the redis cluster leader and follower nodes |
-|`redisCluster.secretName` | redis-secret | Name of the existing secret in Kubernetes |
-|`redisCluster.secretKey` | password | Name of the existing secret key in Kubernetes |
-|`redisCluster.image` | quay.io/opstree/redis | Name of the redis image |
-|`redisCluster.tag` | v6.2 | Tag of the redis image |
-|`redisCluster.imagePullPolicy` | IfNotPresent | Image Pull Policy of the redis image |
-|`redisCluster.leader.affinity` | {} | Affinity for node and pods for redis leader statefulset |
-|`redisCluster.follower.affinity` | {} | Affinity for node and pods for redis follower statefulset |
-|`externalService.enabled`| false | If redis service needs to be exposed using LoadBalancer or NodePort |
-|`externalService.annotations`| {} | Kubernetes service related annotations |
-|`externalService.serviceType` | NodePort | Kubernetes service type for exposing service, values - ClusterIP, NodePort, and LoadBalancer |
-|`externalService.port` | 6379 | Port number on which redis external service should be exposed |
-|`serviceMonitor.enabled` | false | Servicemonitor to monitor redis with Prometheus |
-|`serviceMonitor.interval` | 30s | Interval at which metrics should be scraped. |
-|`serviceMonitor.scrapeTimeout` | 10s | Timeout after which the scrape is ended |
-|`serviceMonitor.namespace` | monitoring | 	Namespace in which Prometheus operator is running |
-|`redisExporter.enabled` | true | Redis exporter should be deployed or not |
-|`redisExporter.image` | quay.io/opstree/redis-exporter | Name of the redis exporter image |
-|`redisExporter.tag` | v6.2 | Tag of the redis exporter image |
-|`redisExporter.imagePullPolicy` | IfNotPresent | Image Pull Policy of the redis exporter image |
-|`redisExporter.env` | [] | Extra environment variables which needs to be added in redis exporter|
-|`nodeSelector` | {} | NodeSelector for redis statefulset |
-|`priorityClassName`| "" | Priority class name for the redis statefulset |
-|`storageSpec` | {} | Storage configuration for redis setup |
-|`securityContext` | {} | Security Context for redis pods for changing system or kernel level parameters |
-|`tolerations` | [] | Tolerations for redis statefulset |
-|`sidecars` | [] | Sidecar for redis pods
+| **Name**                           | **Default Value**              | **Description**                                                                               |
+|------------------------------------|--------------------------------|-----------------------------------------------------------------------------------------------|
+| `imagePullSecrets`                 | []                             | List of image pull secrets, in case redis image is getting pull from private registry         |
+| `redisCluster.clusterSize`         | 3                              | Size of the redis cluster leader and follower nodes                                           |
+| `redisCluster.clusterVersion`      | v7                             | Major version of Redis setup, values can be v6 or v7                                          |
+| `redisCluster.persistenceEnabled`  | true                           | Persistence should be enabled or not in the Redis cluster setup                               |
+| `redisCluster.secretName`          | redis-secret                   | Name of the existing secret in Kubernetes                                                     |
+| `redisCluster.secretKey`           | password                       | Name of the existing secret key in Kubernetes                                                 |
+| `redisCluster.image`               | quay.io/opstree/redis          | Name of the redis image                                                                       |
+| `redisCluster.tag`                 | v6.2                           | Tag of the redis image                                                                        |
+| `redisCluster.imagePullPolicy`     | IfNotPresent                   | Image Pull Policy of the redis image                                                          |
+| `redisCluster.leader.affinity`     | {}                             | Affinity for node and pods for redis leader statefulset                                       |
+| `redisCluster.follower.affinity`   | {}                             | Affinity for node and pods for redis follower statefulset                                     |
+| `externalService.enabled`          | false                          | If redis service needs to be exposed using LoadBalancer or NodePort                           |
+| `externalService.annotations`      | {}                             | Kubernetes service related annotations                                                        |
+| `externalService.serviceType`      | NodePort                       | Kubernetes service type for exposing service, values - ClusterIP, NodePort, and LoadBalancer  |
+| `externalService.port`             | 6379                           | Port number on which redis external service should be exposed                                 |
+| `serviceMonitor.enabled`           | false                          | Servicemonitor to monitor redis with Prometheus                                               |
+| `serviceMonitor.interval`          | 30s                            | Interval at which metrics should be scraped.                                                  |
+| `serviceMonitor.scrapeTimeout`     | 10s                            | Timeout after which the scrape is ended                                                       |
+| `serviceMonitor.namespace`         | monitoring                     | Namespace in which Prometheus operator is running                                             |
+| `redisExporter.enabled`            | true                           | Redis exporter should be deployed or not                                                      |
+| `redisExporter.image`              | quay.io/opstree/redis-exporter | Name of the redis exporter image                                                              |
+| `redisExporter.tag`                | v6.2                           | Tag of the redis exporter image                                                               |
+| `redisExporter.imagePullPolicy`    | IfNotPresent                   | Image Pull Policy of the redis exporter image                                                 |
+| `redisExporter.env`                | []                             | Extra environment variables which needs to be added in redis exporter                         |
+| `nodeSelector`                     | {}                             | NodeSelector for redis statefulset                                                            |
+| `priorityClassName`                | ""                             | Priority class name for the redis statefulset                                                 |
+| `storageSpec`                      | {}                             | Storage configuration for redis setup                                                         |
+| `securityContext`                  | {}                             | Security Context for redis pods for changing system or kernel level parameters                |
+| `tolerations`                      | []                             | Tolerations for redis statefulset                                                             |
+| `sidecars`                         | []                             | Sidecar for redis pods                                                                        |
 
 # CRD Parameters
 
@@ -53,14 +55,40 @@ These are the CRD Parameters which is currently supported by Redis Exporter for
 `clusterSize` is size of the Redis leader and follower nodes.
 
 ```yaml
+spec:
   clusterSize: 3
 ```
 
+**clusterVersion**
+
+`clusterVersion` is a paramter through which we can control Redis major values. The possible values are:-
+
+- v6
+- v7
+
+```yaml
+spec:
+  clusterVersion: v7
+```
+
+**persistenceEnabled**
+
+`persistenceEnabled` is a configuration parameter to enable the persistence storage in redis cluster. The possible values are:-
+
+- true
+- false
+
+```yaml
+spec:
+  persistenceEnabled: true
+```
+
 **redisLeader**
 
 `redisLeader` is the field for Redis leader related configurations.
 
 ```yaml
+spec:
   redisLeader:
     redisConfig:
       additionalRedisConfig: redis-external-config
@@ -80,6 +108,7 @@ These are the CRD Parameters which is currently supported by Redis Exporter for
 `redisFollower` is the field for Redis follower related configurations.
 
 ```yaml
+spec:
   redisFollower:
     redisConfig:
       additionalRedisConfig: redis-external-config
@@ -99,6 +128,7 @@ These are the CRD Parameters which is currently supported by Redis Exporter for
 In the `kubernetesConfig` section, we define configuration related to Kubernetes.
 
 ```yaml
+spec:
   kubernetesConfig:
     image: quay.io/opstree/redis:v6.2
     imagePullPolicy: IfNotPresent
@@ -122,6 +152,7 @@ In the `kubernetesConfig` section, we define configuration related to Kubernetes
 `redisExporter` configuration which enable the metrics for Redis Database to get monitored by Prometheus.
 
 ```yaml
+spec:
   redisExporter:
     enabled: true
     image: quay.io/opstree/redis-exporter:1.0
@@ -153,6 +184,7 @@ In the `kubernetesConfig` section, we define configuration related to Kubernetes
 `storage` configuration for Redis Statefulset pods.
 
 ```yaml
+spec:
   storage:
     volumeClaimTemplate:
       spec:
@@ -168,7 +200,8 @@ In the `kubernetesConfig` section, we define configuration related to Kubernetes
 Name of the Kubernetes priority class which you want to associate with redis setup.
 
 ```yaml
-priorityClassName: priority-100
+spec:
+  priorityClassName: priority-100
 ```
 
 **nodeSelector**
@@ -176,6 +209,7 @@ priorityClassName: priority-100
 Map of the labels which you want to use as nodeSelector.
 
 ```yaml
+spec:
   nodeSelector:
     kubernetes.io/hostname: minikube
 ```
@@ -185,8 +219,10 @@ Map of the labels which you want to use as nodeSelector.
 Kubernetes security context for redis pods.
 
 ```yaml
+spec:
   securityContext:
     runAsUser: 1000
+    fsGroup: 1000
 ```
 
 **tolerations**
@@ -194,6 +230,7 @@ Kubernetes security context for redis pods.
 Tolerations for nodes and pods in Kubernetes.
 
 ```yaml
+spec:
   tolerations:
   - key: "key1"
     operator: "Equal"
@@ -206,6 +243,7 @@ Tolerations for nodes and pods in Kubernetes.
 Sidecars for redis pods
 
 ```yaml
+spec:
   sidecars:
   - name: "sidecar1"
     image: "image:1.0"
@@ -227,6 +265,7 @@ Sidecars for redis pods
 PodDisruptionBugets for redis cluster pods
 
 ```yaml
+spec:
   pdb:
     enabled: true
     maxUnavailable: 1
@@ -240,21 +279,14 @@ Probes for redis leader and follower pods
 ```yaml
 #  redisFollower:
 #  redisLeader:
+spec:
     readinessProbe:
-      exec:
-        command:
-        - bash
-        - /usr/bin/healthcheck.sh
       failureThreshold: 5
       initialDelaySeconds: 15
       periodSeconds: 15
       successThreshold: 1
       timeoutSeconds: 5
     livenessProbe:
-      exec:
-        command:
-        - bash
-        - /usr/bin/healthcheck.sh
       failureThreshold: 5
       initialDelaySeconds: 15
       periodSeconds: 15
@@ -267,10 +299,11 @@ Probes for redis leader and follower pods
 TLS configuration for redis cluster
 
 ```yaml
+spec:
   TLS:
     ca: ca.key
     cert: tls.crt
     key: tls.key
     secret:
       secretName: sample-cert
-```
\ No newline at end of file
+```
diff --git a/docs/src/guide/redis-config.md b/docs/src/guide/redis-config.md
index 41c25cc338d111b53cec20c6e7387bc56b5233a6..bcd57c4b7018864bd11497090335af7e780e3a8f 100644
--- a/docs/src/guide/redis-config.md
+++ b/docs/src/guide/redis-config.md
@@ -13,35 +13,35 @@ In this configuration section, we have these configuration parameters:-
 
 # Helm Parameters
 
-|**Name**|**Value**|**Description**|
-|--------|-----------------|-------|
-|`imagePullSecrets` | [] | List of image pull secrets, in case redis image is getting pull from private registry |
-|`redisStandalone.secretName` | redis-secret | Name of the existing secret in Kubernetes |
-|`redisStandalone.secretKey` | password |  Name of the existing secret key in Kubernetes |
-|`redisStandalone.image` | quay.io/opstree/redis | Name of the redis image |
-|`redisStandalone.tag` | v6.2 | Tag of the redis image |
-|`redisStandalone.imagePullPolicy` | IfNotPresent | Image Pull Policy of the redis image |
-|`redisStandalone.resources` | {} | Request and limits for redis statefulset |
-|`externalService.enabled`| false | If redis service needs to be exposed using LoadBalancer or NodePort |
-|`externalService.annotations`| {} | Kubernetes service related annotations |
-|`externalService.serviceType` | NodePort | Kubernetes service type for exposing service, values - ClusterIP, NodePort, and LoadBalancer |
-|`externalService.port` | 6379 | Port number on which redis external service should be exposed |
-|`serviceMonitor.enabled` | false | Servicemonitor to monitor redis with Prometheus |
-|`serviceMonitor.interval` | 30s | Interval at which metrics should be scraped. |
-|`serviceMonitor.scrapeTimeout` | 10s | Timeout after which the scrape is ended |
-|`serviceMonitor.namespace` | monitoring | 	Namespace in which Prometheus operator is running |
-|`redisExporter.enabled` | true | Redis exporter should be deployed or not |
-|`redisExporter.image` | quay.io/opstree/redis-exporter | Name of the redis exporter image |
-|`redisExporter.tag` | v6.2 | Tag of the redis exporter image |
-|`redisExporter.imagePullPolicy` | IfNotPresent | Image Pull Policy of the redis exporter image |
-|`redisExporter.env` | [] | Extra environment variables which needs to be added in redis exporter|
-|`nodeSelector` | {} | NodeSelector for redis statefulset |
-|`priorityClassName`| "" | Priority class name for the redis statefulset |
-|`storageSpec` | {} | Storage configuration for redis setup |
-|`securityContext` | {} | Security Context for redis pods for changing system or kernel level parameters |
-|`affinity` | {} | Affinity for node and pod for redis statefulset |
-|`tolerations` | [] | Tolerations for redis statefulset |
-|`sidecars` | [] | Sidecar for redis pods
+| **Name**                          | **Value**                      | **Description**                                                                              |
+|-----------------------------------|--------------------------------|----------------------------------------------------------------------------------------------|
+| `imagePullSecrets`                | []                             | List of image pull secrets, in case redis image is getting pull from private registry        |
+| `redisStandalone.secretName`      | redis-secret                   | Name of the existing secret in Kubernetes                                                    |
+| `redisStandalone.secretKey`       | password                       | Name of the existing secret key in Kubernetes                                                |
+| `redisStandalone.image`           | quay.io/opstree/redis          | Name of the redis image                                                                      |
+| `redisStandalone.tag`             | v6.2                           | Tag of the redis image                                                                       |
+| `redisStandalone.imagePullPolicy` | IfNotPresent                   | Image Pull Policy of the redis image                                                         |
+| `redisStandalone.resources`       | {}                             | Request and limits for redis statefulset                                                     |
+| `externalService.enabled`         | false                          | If redis service needs to be exposed using LoadBalancer or NodePort                          |
+| `externalService.annotations`     | {}                             | Kubernetes service related annotations                                                       |
+| `externalService.serviceType`     | NodePort                       | Kubernetes service type for exposing service, values - ClusterIP, NodePort, and LoadBalancer |
+| `externalService.port`            | 6379                           | Port number on which redis external service should be exposed                                |
+| `serviceMonitor.enabled`          | false                          | Servicemonitor to monitor redis with Prometheus                                              |
+| `serviceMonitor.interval`         | 30s                            | Interval at which metrics should be scraped.                                                 |
+| `serviceMonitor.scrapeTimeout`    | 10s                            | Timeout after which the scrape is ended                                                      |
+| `serviceMonitor.namespace`        | monitoring                     | 	Namespace in which Prometheus operator is running                                           |
+| `redisExporter.enabled`           | true                           | Redis exporter should be deployed or not                                                     |
+| `redisExporter.image`             | quay.io/opstree/redis-exporter | Name of the redis exporter image                                                             |
+| `redisExporter.tag`               | v6.2                           | Tag of the redis exporter image                                                              |
+| `redisExporter.imagePullPolicy`   | IfNotPresent                   | Image Pull Policy of the redis exporter image                                                |
+| `redisExporter.env`               | []                             | Extra environment variables which needs to be added in redis exporter                        |
+| `nodeSelector`                    | {}                             | NodeSelector for redis statefulset                                                           |
+| `priorityClassName`               | ""                             | Priority class name for the redis statefulset                                                |
+| `storageSpec`                     | {}                             | Storage configuration for redis setup                                                        |
+| `securityContext`                 | {}                             | Security Context for redis pods for changing system or kernel level parameters               |
+| `affinity`                        | {}                             | Affinity for node and pod for redis statefulset                                              |
+| `tolerations`                     | []                             | Tolerations for redis statefulset                                                            |
+| `sidecars`                        | []                             | Sidecar for redis pods                                                                       |
 
 # CRD Parameters
 
@@ -52,6 +52,7 @@ These are the CRD Parameters which is currently supported by Redis Exporter for
 In the `kubernetesConfig` section, we define configuration related to Kubernetes.
 
 ```yaml
+spec:
   kubernetesConfig:
     image: quay.io/opstree/redis:v6.2
     imagePullPolicy: IfNotPresent
@@ -75,6 +76,7 @@ In the `kubernetesConfig` section, we define configuration related to Kubernetes
 `redisExporter` configuration which enable the metrics for Redis Database to get monitored by Prometheus.
 
 ```yaml
+spec:
   redisExporter:
     enabled: true
     image: quay.io/opstree/redis-exporter:1.0
@@ -106,6 +108,7 @@ In the `kubernetesConfig` section, we define configuration related to Kubernetes
 `storage` configuration for Redis Statefulset pods.
 
 ```yaml
+spec:
   storage:
     volumeClaimTemplate:
       spec:
@@ -121,7 +124,8 @@ In the `kubernetesConfig` section, we define configuration related to Kubernetes
 Name of the Kubernetes priority class which you want to associate with redis setup.
 
 ```yaml
-priorityClassName: priority-100
+spec:
+  priorityClassName: priority-100
 ```
 
 **nodeSelector**
@@ -129,6 +133,7 @@ priorityClassName: priority-100
 Map of the labels which you want to use as nodeSelector.
 
 ```yaml
+spec:
   nodeSelector:
     kubernetes.io/hostname: minikube
 ```
@@ -138,6 +143,7 @@ Map of the labels which you want to use as nodeSelector.
 Kubernetes security context for redis pods.
 
 ```yaml
+spec:
   securityContext:
     runAsUser: 1000
 ```
@@ -147,6 +153,7 @@ Kubernetes security context for redis pods.
 Affinity for node and pod for redis setup.
 
 ```yaml
+spec:
   affinity:
     nodeAffinity:
       requiredDuringSchedulingIgnoredDuringExecution:
@@ -163,6 +170,7 @@ Affinity for node and pod for redis setup.
 Tolerations for nodes and pods in Kubernetes.
 
 ```yaml
+spec:
   tolerations:
   - key: "key1"
     operator: "Equal"
@@ -175,6 +183,7 @@ Tolerations for nodes and pods in Kubernetes.
 Sidecars for redis pods
 
 ```yaml
+spec:
   sidecars:
   - name: "sidecar1"
     image: "image:1.0"
@@ -196,6 +205,7 @@ Sidecars for redis pods
 PodDisruptionBugets for redis standalone pods
 
 ```yaml
+spec:
   pdb:
     enabled: true
     maxUnavailable: 1
@@ -207,21 +217,14 @@ PodDisruptionBugets for redis standalone pods
 Probes for redis standalone pods
 
 ```yaml
+spec:
     readinessProbe:
-      exec:
-        command:
-        - bash
-        - /usr/bin/healthcheck.sh
       failureThreshold: 5
       initialDelaySeconds: 15
       periodSeconds: 15
       successThreshold: 1
       timeoutSeconds: 5
     livenessProbe:
-      exec:
-        command:
-        - bash
-        - /usr/bin/healthcheck.sh
       failureThreshold: 5
       initialDelaySeconds: 15
       periodSeconds: 15
@@ -234,10 +237,11 @@ Probes for redis standalone pods
 TLS configuration for redis standalone
 
 ```yaml
+spec:
   TLS:
     ca: ca.key
     cert: tls.crt
     key: tls.key
     secret:
       secretName: sample-cert
-```
\ No newline at end of file
+```
diff --git a/example/advance_config/cluster.yaml b/example/advance_config/clusterd.yaml
similarity index 76%
rename from example/advance_config/cluster.yaml
rename to example/advance_config/clusterd.yaml
index 6df69180a56a23cd8ddc93d573c4c0a9c7fc75f2..305a13c19826674582a6ba0ca23befd352eed7c2 100644
--- a/example/advance_config/cluster.yaml
+++ b/example/advance_config/clusterd.yaml
@@ -5,9 +5,13 @@ metadata:
   name: redis-cluster
 spec:
   clusterSize: 3
+  clusterVersion: v7
+  securityContext:
+    runAsUser: 1000
+    fsGroup: 1000
+  persistenceEnabled: true
   kubernetesConfig:
-    image: quay.io/opstree/redis:v6.2.5
-    imagePullPolicy: IfNotPresent
+    image: quay.io/opstree/redis:v7.0.5
     resources:
       requests:
         cpu: 101m
@@ -19,7 +23,7 @@ spec:
       - name: regcred
   redisExporter:
     enabled: false
-    image: quay.io/opstree/redis-exporter:1.0
+    image: quay.io/opstree/redis-exporter:v1.44.0
   storage:
     volumeClaimTemplate:
       spec:
diff --git a/example/advance_config/standalone.yaml b/example/advance_config/standalone.yaml
index 0056bbd7df88a0af93bdc1a92de0110def829ca4..e7662515431e0ab77e81182e93afe1a2089bd2cf 100644
--- a/example/advance_config/standalone.yaml
+++ b/example/advance_config/standalone.yaml
@@ -5,7 +5,7 @@ metadata:
   name: redis-standalone
 spec:
   kubernetesConfig:
-    image: quay.io/opstree/redis:v6.2.5
+    image: quay.io/opstree/redis:v7.0.5
     imagePullPolicy: IfNotPresent
     resources:
       requests:
@@ -14,6 +14,9 @@ spec:
       limits:
         cpu: 101m
         memory: 128Mi
+  securityContext:
+    runAsUser: 1000
+    fsGroup: 1000
   storage:
     volumeClaimTemplate:
       spec:
@@ -24,7 +27,7 @@ spec:
             storage: 1Gi
   redisExporter:
     enabled: false
-    image: quay.io/opstree/redis-exporter:1.0
+    image: quay.io/opstree/redis-exporter:v1.44.0
   # nodeSelector: {}
   # securityContext: {}
   # priorityClassName: ""
diff --git a/example/affinity/cluster.yaml b/example/affinity/clusterd.yaml
similarity index 83%
rename from example/affinity/cluster.yaml
rename to example/affinity/clusterd.yaml
index 3134932de25efdf50c45ce03f4439a4ba05f344a..3d9de93727e602dd1c9fc2d1f950283813b8aae7 100644
--- a/example/affinity/cluster.yaml
+++ b/example/affinity/clusterd.yaml
@@ -5,19 +5,17 @@ metadata:
   name: redis-cluster
 spec:
   clusterSize: 3
+  clusterVersion: v7
+  securityContext:
+    runAsUser: 1000
+    fsGroup: 1000
+  persistenceEnabled: true
   kubernetesConfig:
-    image: quay.io/opstree/redis:v6.2.5
+    image: quay.io/opstree/redis:v7.0.5
     imagePullPolicy: IfNotPresent
-    resources:
-      requests:
-        cpu: 101m
-        memory: 128Mi
-      limits:
-        cpu: 101m
-        memory: 128Mi
   redisExporter:
     enabled: false
-    image: quay.io/opstree/redis-exporter:1.0
+    image: quay.io/opstree/redis-exporter:v1.44.0
   redisLeader:
     affinity:
       podAntiAffinity:
diff --git a/example/affinity/standalone.yaml b/example/affinity/standalone.yaml
index 77d13ce462f931553cecd6dc199ef79825f8c2be..e5703a51cb292bc338d877da5ccd6e631ef81635 100644
--- a/example/affinity/standalone.yaml
+++ b/example/affinity/standalone.yaml
@@ -5,15 +5,11 @@ metadata:
   name: redis-standalone
 spec:
   kubernetesConfig:
-    image: quay.io/opstree/redis:v6.2.5
+    image: quay.io/opstree/redis:v7.0.5
     imagePullPolicy: IfNotPresent
-    resources:
-      requests:
-        cpu: 101m
-        memory: 128Mi
-      limits:
-        cpu: 101m
-        memory: 128Mi
+  securityContext:
+    runAsUser: 1000
+    fsGroup: 1000
   storage:
     volumeClaimTemplate:
       spec:
@@ -24,7 +20,7 @@ spec:
             storage: 1Gi
   redisExporter:
     enabled: false
-    image: quay.io/opstree/redis-exporter:1.0
+    image: quay.io/opstree/redis-exporter:v1.44.0
   affinity:
     podAntiAffinity:
       requiredDuringSchedulingIgnoredDuringExecution:
diff --git a/example/disruption_budget/clusterd.yaml b/example/disruption_budget/clusterd.yaml
index 78dc98475de3861c6797867ff52398f84c9244da..2059162adcfa54518697ebef5d6e2f8589b5e239 100644
--- a/example/disruption_budget/clusterd.yaml
+++ b/example/disruption_budget/clusterd.yaml
@@ -5,19 +5,17 @@ metadata:
   name: redis-cluster
 spec:
   clusterSize: 3
+  clusterVersion: v7
+  securityContext:
+    runAsUser: 1000
+    fsGroup: 1000
+  persistenceEnabled: true
   kubernetesConfig:
-    image: "quay.io/opstree/redis:v6.2.5"
+    image: quay.io/opstree/redis:v7.0.5
     imagePullPolicy: IfNotPresent
-    resources:
-      limits:
-        cpu: 101m
-        memory: 128Mi
-      requests:
-        cpu: 101m
-        memory: 128Mi
   redisExporter:
     enabled: false
-    image: "quay.io/opstree/redis-exporter:1.0"
+    image: "quay.io/opstree/redis-exporter:v1.44.0"
   redisFollower:
     affinity:
       podAntiAffinity:
diff --git a/example/eks-cluster.yaml b/example/eks-cluster.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..b9f0547d7cb20035445fc5aa6d2a6ca9f0c3512e
--- /dev/null
+++ b/example/eks-cluster.yaml
@@ -0,0 +1,14 @@
+apiVersion: eksctl.io/v1alpha5
+kind: ClusterConfig
+metadata:
+  name: operator-testing
+  region: us-west-2
+  version: "1.22"
+nodeGroups:
+  - name: ng-1
+    instanceType: t3a.medium
+    desiredCapacity: 3
+    volumeSize: 30
+    ssh:
+      allow: true
+    volumeType: gp3
diff --git a/example/external_config/cluster.yaml b/example/external_config/clusterd.yaml
similarity index 73%
rename from example/external_config/cluster.yaml
rename to example/external_config/clusterd.yaml
index e5807660730b62b46d98bd213626630a002e46bb..a546cc114a024be7746143f60ad932a7ae3826b3 100644
--- a/example/external_config/cluster.yaml
+++ b/example/external_config/clusterd.yaml
@@ -5,19 +5,17 @@ metadata:
   name: redis-cluster
 spec:
   clusterSize: 3
+  clusterVersion: v7
+  securityContext:
+    runAsUser: 1000
+    fsGroup: 1000
+  persistenceEnabled: true
   kubernetesConfig:
-    image: quay.io/opstree/redis:v6.2.5
+    image: quay.io/opstree/redis:v7.0.5
     imagePullPolicy: IfNotPresent
-    resources:
-      requests:
-        cpu: 101m
-        memory: 128Mi
-      limits:
-        cpu: 101m
-        memory: 128Mi
   redisExporter:
     enabled: false
-    image: quay.io/opstree/redis-exporter:1.0
+    image: quay.io/opstree/redis-exporter:v1.44.0
   redisLeader:
     redisConfig:
       additionalRedisConfig: redis-external-config
diff --git a/example/external_config/standalone.yaml b/example/external_config/standalone.yaml
index c1a8a2f1c00da55e7da13c68e9c9b5bad5482267..94ea818314a59e5da63f239a9471a81642a6da50 100644
--- a/example/external_config/standalone.yaml
+++ b/example/external_config/standalone.yaml
@@ -7,15 +7,11 @@ spec:
   redisConfig:
     additionalRedisConfig: redis-external-config
   kubernetesConfig:
-    image: quay.io/opstree/redis:v6.2.5
+    image: quay.io/opstree/redis:v7.0.5
     imagePullPolicy: IfNotPresent
-    resources:
-      requests:
-        cpu: 101m
-        memory: 128Mi
-      limits:
-        cpu: 101m
-        memory: 128Mi
+  securityContext:
+    runAsUser: 1000
+    fsGroup: 1000
   storage:
     volumeClaimTemplate:
       spec:
@@ -26,4 +22,4 @@ spec:
             storage: 1Gi
   redisExporter:
     enabled: false
-    image: quay.io/opstree/redis-exporter:1.0
+    image: quay.io/opstree/redis-exporter:v1.44.0
diff --git a/example/external_service/cluster.yaml b/example/external_service/clusterd.yaml
similarity index 65%
rename from example/external_service/cluster.yaml
rename to example/external_service/clusterd.yaml
index a9054afb5c878cb99aabd89477be8623451d89ed..26b89a8fb8ee07248d772fe176c07929c643ca7a 100644
--- a/example/external_service/cluster.yaml
+++ b/example/external_service/clusterd.yaml
@@ -5,19 +5,17 @@ metadata:
   name: redis-cluster
 spec:
   clusterSize: 3
+  clusterVersion: v7
+  securityContext:
+    runAsUser: 1000
+    fsGroup: 1000
+  persistenceEnabled: true
   kubernetesConfig:
-    image: quay.io/opstree/redis:v6.2.5
+    image: quay.io/opstree/redis:v7.0.5
     imagePullPolicy: IfNotPresent
-    resources:
-      requests:
-        cpu: 101m
-        memory: 128Mi
-      limits:
-        cpu: 101m
-        memory: 128Mi
   redisExporter:
     enabled: false
-    image: quay.io/opstree/redis-exporter:1.0
+    image: quay.io/opstree/redis-exporter:v1.44.0
   storage:
     volumeClaimTemplate:
       spec:
diff --git a/example/external_service/standalone.yaml b/example/external_service/standalone.yaml
index 184476fd56f3ebf9ee498b204734558e62879789..bfc4ff9742d7fa339a1c44be3f7bc332181951ae 100644
--- a/example/external_service/standalone.yaml
+++ b/example/external_service/standalone.yaml
@@ -5,15 +5,11 @@ metadata:
   name: redis-standalone
 spec:
   kubernetesConfig:
-    image: quay.io/opstree/redis:v6.2.5
+    image: quay.io/opstree/redis:v7.0.5
     imagePullPolicy: IfNotPresent
-    resources:
-      requests:
-        cpu: 101m
-        memory: 128Mi
-      limits:
-        cpu: 101m
-        memory: 128Mi
+  securityContext:
+    runAsUser: 1000
+    fsGroup: 1000
   storage:
     volumeClaimTemplate:
       spec:
@@ -24,4 +20,4 @@ spec:
             storage: 1Gi
   redisExporter:
     enabled: false
-    image: quay.io/opstree/redis-exporter:1.0
+    image: quay.io/opstree/redis-exporter:v1.44.0
diff --git a/example/password_protected/cluster.yaml b/example/password_protected/clusterd.yaml
similarity index 68%
rename from example/password_protected/cluster.yaml
rename to example/password_protected/clusterd.yaml
index ad90046b1c41b1b6ff70eb376c07bb9da35e517e..a978fdfe8f4863c87512f9ae653ed4d8138ebc92 100644
--- a/example/password_protected/cluster.yaml
+++ b/example/password_protected/clusterd.yaml
@@ -5,22 +5,20 @@ metadata:
   name: redis-cluster
 spec:
   clusterSize: 3
+  clusterVersion: v7
+  securityContext:
+    runAsUser: 1000
+    fsGroup: 1000
+  persistenceEnabled: true
   kubernetesConfig:
-    image: quay.io/opstree/redis:v6.2.5
+    image: quay.io/opstree/redis:v7.0.5
     imagePullPolicy: IfNotPresent
-    resources:
-      requests:
-        cpu: 101m
-        memory: 128Mi
-      limits:
-        cpu: 101m
-        memory: 128Mi
     redisSecret:
       name: redis-secret
       key: password
   redisExporter:
     enabled: false
-    image: quay.io/opstree/redis-exporter:1.0
+    image: quay.io/opstree/redis-exporter:v1.44.0
   storage:
     volumeClaimTemplate:
       spec:
diff --git a/example/password_protected/standalone.yaml b/example/password_protected/standalone.yaml
index 424c98eb5f23517236176628bb8e9a9350d72e9b..8be97ea57aabc24942aca05e0ed29138a9e83ba0 100644
--- a/example/password_protected/standalone.yaml
+++ b/example/password_protected/standalone.yaml
@@ -5,15 +5,8 @@ metadata:
   name: redis-standalone
 spec:
   kubernetesConfig:
-    image: quay.io/opstree/redis:v6.2.5
+    image: quay.io/opstree/redis:v7.0.5
     imagePullPolicy: IfNotPresent
-    resources:
-      requests:
-        cpu: 101m
-        memory: 128Mi
-      limits:
-        cpu: 101m
-        memory: 128Mi
     redisSecret:
       name: redis-secret
       key: password
@@ -27,4 +20,7 @@ spec:
             storage: 1Gi
   redisExporter:
     enabled: false
-    image: quay.io/opstree/redis-exporter:1.0
+    image: quay.io/opstree/redis-exporter:v1.44.0
+  securityContext:
+    runAsUser: 1000
+    fsGroup: 1000
diff --git a/example/private_registry/cluster.yaml b/example/private_registry/clusterd.yaml
similarity index 67%
rename from example/private_registry/cluster.yaml
rename to example/private_registry/clusterd.yaml
index 74ee7c71565a968870f30421a4adfaf4547a7bf0..3e41c0caade4e443f560f8a67d559c42de03c2b6 100644
--- a/example/private_registry/cluster.yaml
+++ b/example/private_registry/clusterd.yaml
@@ -5,21 +5,19 @@ metadata:
   name: redis-cluster
 spec:
   clusterSize: 3
+  clusterVersion: v7
+  securityContext:
+    runAsUser: 1000
+    fsGroup: 1000
+  persistenceEnabled: true
   kubernetesConfig:
-    image: quay.io/opstree/redis:v6.2.5
+    image: quay.io/opstree/redis:v7.0.5
     imagePullPolicy: IfNotPresent
-    resources:
-      requests:
-        cpu: 101m
-        memory: 128Mi
-      limits:
-        cpu: 101m
-        memory: 128Mi
     imagePullSecrets:
       - name: regcred
   redisExporter:
     enabled: false
-    image: quay.io/opstree/redis-exporter:1.0
+    image: quay.io/opstree/redis-exporter:v1.44.0
   storage:
     volumeClaimTemplate:
       spec:
diff --git a/example/private_registry/standalone.yaml b/example/private_registry/standalone.yaml
index 578383c1d2a52b4fe69fba03d5d9f047c92efdbb..dc1d640b62edb3953b83ce8d83b503d1c8e47a7e 100644
--- a/example/private_registry/standalone.yaml
+++ b/example/private_registry/standalone.yaml
@@ -5,15 +5,8 @@ metadata:
   name: redis-standalone
 spec:
   kubernetesConfig:
-    image: quay.io/opstree/redis:v6.2.5
+    image: quay.io/opstree/redis:v7.0.5
     imagePullPolicy: IfNotPresent
-    resources:
-      requests:
-        cpu: 101m
-        memory: 128Mi
-      limits:
-        cpu: 101m
-        memory: 128Mi
     imagePullSecrets:
       - name: regcred
   storage:
@@ -26,4 +19,7 @@ spec:
             storage: 1Gi
   redisExporter:
     enabled: false
-    image: quay.io/opstree/redis-exporter:1.0
+    image: quay.io/opstree/redis-exporter:v1.44.0
+  securityContext:
+    runAsUser: 1000
+    fsGroup: 1000
diff --git a/example/probes/clusterd.yaml b/example/probes/clusterd.yaml
index 229fe1741c490f87c26023e498a84c127f04b4d7..9c2992d88df1891bc4b4b3ec1963a87dc8abd563 100644
--- a/example/probes/clusterd.yaml
+++ b/example/probes/clusterd.yaml
@@ -5,35 +5,24 @@ metadata:
   name: redis-cluster
 spec:
   clusterSize: 3
+  clusterVersion: v7
+  securityContext:
+    runAsUser: 1000
+    fsGroup: 1000
+  persistenceEnabled: true
   kubernetesConfig:
-    image: quay.io/opstree/redis:v6.2.5
-    imagePullPolicy: IfNotPresent
-    resources:
-      requests:
-        cpu: 101m
-        memory: 128Mi
-      limits:
-        cpu: 101m
-        memory: 128Mi
+    image: quay.io/opstree/redis:v7.0.5
   redisExporter:
     enabled: false
-    image: quay.io/opstree/redis-exporter:1.0
+    image: quay.io/opstree/redis-exporter:v1.44.0
   redisLeader:
     readinessProbe:
-      exec:
-        command:
-        - bash
-        - /usr/bin/healthcheck.sh
       failureThreshold: 5
       initialDelaySeconds: 15
       periodSeconds: 15
       successThreshold: 1
       timeoutSeconds: 5
     livenessProbe:
-      exec:
-        command:
-        - bash
-        - /usr/bin/healthcheck.sh
       failureThreshold: 5
       initialDelaySeconds: 15
       periodSeconds: 15
diff --git a/example/probes/standalone.yaml b/example/probes/standalone.yaml
index 22c671560322526ebbf7bbc469561c779c87df5a..70797aced7fbe0b910232876598c4be0a99d72f1 100644
--- a/example/probes/standalone.yaml
+++ b/example/probes/standalone.yaml
@@ -4,16 +4,12 @@ kind: Redis
 metadata:
   name: redis-standalone
 spec:
+  securityContext:
+    runAsUser: 1000
+    fsGroup: 1000
   kubernetesConfig:
-    image: quay.io/opstree/redis:v6.2.5
+    image: quay.io/opstree/redis:v7.0.5
     imagePullPolicy: IfNotPresent
-    resources:
-      requests:
-        cpu: 101m
-        memory: 128Mi
-      limits:
-        cpu: 101m
-        memory: 128Mi
   storage:
     volumeClaimTemplate:
       spec:
@@ -24,7 +20,7 @@ spec:
             storage: 1Gi
   redisExporter:
     enabled: false
-    image: quay.io/opstree/redis-exporter:1.0
+    image: quay.io/opstree/redis-exporter:v1.44.0
   readinessProbe:
     failureThreshold: 5
     initialDelaySeconds: 15
diff --git a/example/redis-cluster.yaml b/example/redis-cluster.yaml
index dd7a5697b2163f9a51dec87ef4071457e86d667c..148c4f74b304d3463b5d0c0215a6587e1ec6f386 100644
--- a/example/redis-cluster.yaml
+++ b/example/redis-cluster.yaml
@@ -5,8 +5,13 @@ metadata:
   name: redis-cluster
 spec:
   clusterSize: 3
+  clusterVersion: v7
+  persistenceEnabled: true
+  securityContext:
+    runAsUser: 1000
+    fsGroup: 1000
   kubernetesConfig:
-    image: quay.io/opstree/redis:v6.2.5
+    image: quay.io/opstree/redis:v7.0.5
     imagePullPolicy: IfNotPresent
     resources:
       requests:
@@ -22,7 +27,7 @@ spec:
     #   - name: regcred
   redisExporter:
     enabled: false
-    image: quay.io/opstree/redis-exporter:1.0
+    image: quay.io/opstree/redis-exporter:v1.44.0
     imagePullPolicy: Always
     resources:
       requests:
@@ -45,12 +50,12 @@ spec:
     #     secretKeyRef:
     #       name: mysecret
     #       key: username
-  redisLeader:
-    redisConfig:
-      additionalRedisConfig: redis-external-config
-  redisFollower:
-    redisConfig:
-      additionalRedisConfig: redis-external-config
+#  redisLeader:
+#    redisConfig:
+#      additionalRedisConfig: redis-external-config
+#  redisFollower:
+#    redisConfig:
+#      additionalRedisConfig: redis-external-config
   storage:
     volumeClaimTemplate:
       spec:
@@ -61,7 +66,6 @@ spec:
             storage: 1Gi
   # nodeSelector:
   #   kubernetes.io/hostname: minikube
-  # securityContext: {}
   # priorityClassName:
   # Affinity:
   # Tolerations: []
diff --git a/example/redis-standalone.yaml b/example/redis-standalone.yaml
index 21ee243eaefd8fc99be4dba02c5dc577a44a1008..00340ed64a8bdd9b44e42525ba0da423b865373d 100644
--- a/example/redis-standalone.yaml
+++ b/example/redis-standalone.yaml
@@ -7,7 +7,7 @@ spec:
   # redisConfig:
   #   additionalRedisConfig: redis-external-config
   kubernetesConfig:
-    image: quay.io/opstree/redis:v6.2.5
+    image: quay.io/opstree/redis:v7.0.5
     imagePullPolicy: IfNotPresent
     resources:
       requests:
@@ -23,7 +23,7 @@ spec:
     #   - name: regcred
   redisExporter:
     enabled: false
-    image: quay.io/opstree/redis-exporter:1.0
+    image: quay.io/opstree/redis-exporter:v1.44.0
     imagePullPolicy: Always
     resources:
       requests:
diff --git a/example/redis_monitoring/cluster.yaml b/example/redis_monitoring/cluster.yaml
deleted file mode 100644
index 85e16956fcf19eb3754fe98625d92eb80730a62c..0000000000000000000000000000000000000000
--- a/example/redis_monitoring/cluster.yaml
+++ /dev/null
@@ -1,39 +0,0 @@
----
-apiVersion: redis.redis.opstreelabs.in/v1beta1
-kind: RedisCluster
-metadata:
-  name: redis-cluster
-spec:
-  clusterSize: 3
-  kubernetesConfig:
-    image: quay.io/opstree/redis:v6.2.5
-    imagePullPolicy: IfNotPresent
-    resources:
-      requests:
-        cpu: 101m
-        memory: 128Mi
-      limits:
-        cpu: 101m
-        memory: 128Mi
-  redisExporter:
-    enabled: true
-    image: quay.io/opstree/redis-exporter:1.0
-    imagePullPolicy: Always
-    resources:
-      requests:
-        cpu: 100m
-        memory: 128Mi
-      limits:
-        cpu: 100m
-        memory: 128Mi
-    # env:
-    # - name: REDIS_EXPORTER_INCL_SYSTEM_METRICS
-    #   value: "true"
-  storage:
-    volumeClaimTemplate:
-      spec:
-        # storageClassName: standard
-        accessModes: ["ReadWriteOnce"]
-        resources:
-          requests:
-            storage: 1Gi
diff --git a/example/redis_monitoring/clusterd.yaml b/example/redis_monitoring/clusterd.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..445ac7434ed66f4c3292e8d2d3fbc8842805a888
--- /dev/null
+++ b/example/redis_monitoring/clusterd.yaml
@@ -0,0 +1,28 @@
+---
+apiVersion: redis.redis.opstreelabs.in/v1beta1
+kind: RedisCluster
+metadata:
+  name: redis-cluster
+spec:
+  clusterSize: 3
+  clusterVersion: v7
+  securityContext:
+    runAsUser: 1000
+    fsGroup: 1000
+  persistenceEnabled: true
+  kubernetesConfig:
+    image: quay.io/opstree/redis:v7.0.5
+    imagePullPolicy: Always
+  redisExporter:
+    enabled: true
+    image: quay.io/opstree/redis-exporter:v1.44.0
+    imagePullPolicy: Always
+  storage:
+    volumeClaimTemplate:
+      spec:
+        accessModes: ["ReadWriteOnce"]
+        resources:
+          requests:
+            storage: 1Gi
+        # storageClassName: standard
+
diff --git a/example/redis_monitoring/standalone.yaml b/example/redis_monitoring/standalone.yaml
index 1caaa9c6bc2c8a72a8a1673890f59e8fabf6bde7..528b59fda35a8e8e8febea27a12b80cb4483035a 100644
--- a/example/redis_monitoring/standalone.yaml
+++ b/example/redis_monitoring/standalone.yaml
@@ -5,15 +5,8 @@ metadata:
   name: redis-standalone
 spec:
   kubernetesConfig:
-    image: quay.io/opstree/redis:v6.2.5
+    image: quay.io/opstree/redis:v7.0.5
     imagePullPolicy: IfNotPresent
-    resources:
-      requests:
-        cpu: 101m
-        memory: 128Mi
-      limits:
-        cpu: 101m
-        memory: 128Mi
   storage:
     volumeClaimTemplate:
       spec:
@@ -24,15 +17,11 @@ spec:
             storage: 1Gi
   redisExporter:
     enabled: true
-    image: quay.io/opstree/redis-exporter:1.0
+    image: quay.io/opstree/redis-exporter:v1.44.0
     imagePullPolicy: Always
-    resources:
-      requests:
-        cpu: 100m
-        memory: 128Mi
-      limits:
-        cpu: 100m
-        memory: 128Mi
     # env:
     # - name: REDIS_EXPORTER_INCL_SYSTEM_METRICS
     #   value: "true"
+  securityContext:
+    runAsUser: 1000
+    fsGroup: 1000
diff --git a/example/tls_enabled/redis-cluster.yaml b/example/tls_enabled/redis-cluster.yaml
index ac554922f39c8d54a3211572260ba8260ea2afe4..3c4e3e1a3c6c4ba890d9f9c69142c2028242a64a 100644
--- a/example/tls_enabled/redis-cluster.yaml
+++ b/example/tls_enabled/redis-cluster.yaml
@@ -12,9 +12,13 @@ spec:
     key: tls.key
     secret:
       secretName: sample-cert
-
+  clusterVersion: v7
+  persistenceEnabled: true
+  securityContext:
+    runAsUser: 1000
+    fsGroup: 1000
   kubernetesConfig:
-    image: quay.io/opstree/redis:v6.2.5
+    image: quay.io/opstree/redis:v7.0.5
     imagePullPolicy: IfNotPresent
     resources:
       requests:
@@ -29,7 +33,7 @@ spec:
 
   redisExporter:
     enabled: false
-    image: quay.io/opstree/redis-exporter:1.0
+    image: quay.io/opstree/redis-exporter:v1.44.0
     imagePullPolicy: Always
     resources:
       requests:
diff --git a/example/tls_enabled/redis-standalone.yaml b/example/tls_enabled/redis-standalone.yaml
index 024b02240fb1c93541d740773905481f738f6185..e64fffdfb40c194ce6f758e7f543443d07e507ab 100644
--- a/example/tls_enabled/redis-standalone.yaml
+++ b/example/tls_enabled/redis-standalone.yaml
@@ -12,9 +12,11 @@ spec:
     key: tls.key
     secret:
       secretName: sample-cert
-
+  securityContext:
+    runAsUser: 1000
+    fsGroup: 1000
   kubernetesConfig:
-    image: quay.io/opstree/redis:v6.2.5
+    image: quay.io/opstree/redis:v7.0.5
     imagePullPolicy: IfNotPresent
     resources:
       requests:
@@ -26,7 +28,7 @@ spec:
 
   redisExporter:
     enabled: false
-    image: quay.io/opstree/redis-exporter:1.0
+    image: quay.io/opstree/redis-exporter:v1.44.0
     imagePullPolicy: Always
     resources:
       requests:
diff --git a/k8sutils/redis.go b/k8sutils/redis.go
index c2e23242f5f0f9d6d4682d804051d7a8ff83ec9e..e2987ae69cd2113297c98311adccd2b557957d6f 100644
--- a/k8sutils/redis.go
+++ b/k8sutils/redis.go
@@ -46,6 +46,12 @@ func getRedisServerIP(redisInfo RedisDetails) string {
 	return redisIP
 }
 
+// getRedisHostname will return the complete FQDN for redis
+func getRedisHostname(redisInfo RedisDetails, cr *redisv1beta1.RedisCluster, role string) string {
+	fqdn := fmt.Sprintf("%s.%s-%s-headless.%s.svc", redisInfo.PodName, cr.ObjectMeta.Name, role, cr.Namespace)
+	return fqdn
+}
+
 // CreateSingleLeaderRedisCommand will create command for single leader cluster creation
 func CreateSingleLeaderRedisCommand(cr *redisv1beta1.RedisCluster) []string {
 	logger := generateRedisManagerLogger(cr.Namespace, cr.ObjectMeta.Name)
@@ -69,7 +75,11 @@ func CreateMultipleLeaderRedisCommand(cr *redisv1beta1.RedisCluster) []string {
 			PodName:   cr.ObjectMeta.Name + "-leader-" + strconv.Itoa(podCount),
 			Namespace: cr.Namespace,
 		}
-		cmd = append(cmd, getRedisServerIP(pod)+":6379")
+		if *cr.Spec.ClusterVersion == "v7" {
+			cmd = append(cmd, getRedisHostname(pod, cr, "leader")+":6379")
+		} else {
+			cmd = append(cmd, getRedisServerIP(pod)+":6379")
+		}
 	}
 	cmd = append(cmd, "--cluster-yes")
 
@@ -122,8 +132,13 @@ func getRedisTLSArgs(tlsConfig *redisv1beta1.TLSConfig, clientHost string) []str
 func createRedisReplicationCommand(cr *redisv1beta1.RedisCluster, leaderPod RedisDetails, followerPod RedisDetails) []string {
 	logger := generateRedisManagerLogger(cr.Namespace, cr.ObjectMeta.Name)
 	cmd := []string{"redis-cli", "--cluster", "add-node"}
-	cmd = append(cmd, getRedisServerIP(followerPod)+":6379")
-	cmd = append(cmd, getRedisServerIP(leaderPod)+":6379")
+	if *cr.Spec.ClusterVersion == "v7" {
+		cmd = append(cmd, getRedisHostname(followerPod, cr, "follower")+":6379")
+		cmd = append(cmd, getRedisHostname(leaderPod, cr, "leader")+":6379")
+	} else {
+		cmd = append(cmd, getRedisServerIP(followerPod)+":6379")
+		cmd = append(cmd, getRedisServerIP(leaderPod)+":6379")
+	}
 	cmd = append(cmd, "--cluster-slave")
 
 	if cr.Spec.KubernetesConfig.ExistingPasswordSecret != nil {
@@ -135,12 +150,13 @@ func createRedisReplicationCommand(cr *redisv1beta1.RedisCluster, leaderPod Redi
 		cmd = append(cmd, pass)
 	}
 	cmd = append(cmd, getRedisTLSArgs(cr.Spec.TLS, leaderPod.PodName)...)
-	logger.Info("Redis replication creation command is", "Command", cmd)
+	logger.V(2).Info("Redis replication creation command is", "Command", cmd)
 	return cmd
 }
 
 // ExecuteRedisReplicationCommand will execute the replication command
 func ExecuteRedisReplicationCommand(cr *redisv1beta1.RedisCluster) {
+	var podIP string
 	logger := generateRedisManagerLogger(cr.Namespace, cr.ObjectMeta.Name)
 	replicas := cr.Spec.GetReplicaCounts("follower")
 	nodes := checkRedisCluster(cr)
@@ -153,7 +169,7 @@ func ExecuteRedisReplicationCommand(cr *redisv1beta1.RedisCluster) {
 			PodName:   cr.ObjectMeta.Name + "-leader-" + strconv.Itoa(podCount),
 			Namespace: cr.Namespace,
 		}
-		podIP := getRedisServerIP(followerPod)
+		podIP = getRedisServerIP(followerPod)
 		if !checkRedisNodePresence(cr, nodes, podIP) {
 			logger.Info("Adding node to cluster.", "Node.IP", podIP, "Follower.Pod", followerPod)
 			cmd := createRedisReplicationCommand(cr, leaderPod, followerPod)
diff --git a/k8sutils/statefulset.go b/k8sutils/statefulset.go
index 7091ea411cdb2fba9939f8daf3e2d32bee45097f..9835ef35e3719565cd980e67d6fb314a91ffde4b 100644
--- a/k8sutils/statefulset.go
+++ b/k8sutils/statefulset.go
@@ -183,7 +183,7 @@ func generateStatefulSetsDef(stsMeta metav1.ObjectMeta, params statefulSetParame
 		ObjectMeta: stsMeta,
 		Spec: appsv1.StatefulSetSpec{
 			Selector:    LabelSelectors(stsMeta.GetLabels()),
-			ServiceName: stsMeta.Name,
+			ServiceName: fmt.Sprintf("%s-headless", stsMeta.Name),
 			Replicas:    params.Replicas,
 			Template: corev1.PodTemplateSpec{
 				ObjectMeta: metav1.ObjectMeta{