You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/operate/kubernetes/architecture/_index.md
+27-21Lines changed: 27 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,17 +11,17 @@ linkTitle: Architecture
11
11
weight: 1
12
12
---
13
13
14
-
Redis Enterprise for Kubernetes gives you the speed and durability of [Redis Enterprise](https://redis.io/redis-enterprise/advantages/), with the flexibility and ease of use Kubernetes (K8s) provides. Redis Enterprise for Kubernetes uses a custom operator and custom controllers to bring the best of Redis Enterprise to Kubernetes platforms.
14
+
Redis Enterprise for Kubernetes gives you the speed and durability of [Redis Enterprise](https://redis.io/redis-enterprise/advantages/), with the flexibility and ease of use Kubernetes (K8s) provides. Redis Enterprise for Kubernetes uses a the Kubernetes operator pattern and custom controllers to bring the best of Redis Enterprise to Kubernetes platforms.
15
15
16
16
The image below illustrates the components of a single namespace, three node deployment.
An operator is a custom extension of the Kubernetes API designed to manage complex, stateful processes and resources. The Redis Enterprise operator uses controllers to manage Redis Enterprise’s custom resources (CRs), ensuring that these resources are continuously monitored and maintained.
22
+
An [operator](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) is a custom extension of the Kubernetes API designed to manage complex, stateful applications and their components. This operator pattern is commonly used by databases and other applications to extend the cluster's behavior without changing its underlying code. Kubernetes.io/docs has a great explanation of the [operator pattern](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/).
23
23
24
-
--->Operator pattern is a common way to extend the K8s API to work with databases.......
24
+
The Redis Enterprise operator uses controllers to manage Redis Enterprise’s custom resources (CRs), ensuring that these resources are continuously monitored and maintained.
25
25
26
26
The operator is a deployment that runs within a given namespace. These operator pods must run with sufficient privileges to create the Redis Enterprise cluster resources within that namespace.
27
27
@@ -37,15 +37,15 @@ When the operator is installed, the following resources are created:
37
37
38
38
The Redis Enterprise operator is deployed within a namespace. Each namespace can host only one operator and one RedisEnterpriseCluster instance. Namespaces create a logical boundaries between resources, allowing organization and security. Some resources in your deployment are limited to a namespace, while others are cluster-wide.
39
39
40
-
Redis Enterprise for Kubernetes supports multi-namespace deployments, meaning databases in multiple namespaces can be monitored by a single operator.
40
+
Redis Enterprise for Kubernetes also supports multi-namespace deployments, meaning databases in other namespaces (that host applications) for custom resources and applies any changes defined in those custom resources.
41
41
42
42
## Custom resources
43
43
44
-
Custom resources (CRs) extend the Kubernetes API, enabling users to manage Redis databases the Kubernetes way.Custom resources are created and managed using YAML configuration files.
44
+
Kubernetes custom resources (CRs) are commonly used by databases and other applications to extend the cluster's behavior without changing its underlying code. [Custom resources (CRs)](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) extend the Kubernetes API, enabling users to manage Redis databases the Kubernetes way.Custom resources are created and managed using YAML configuration files.
45
45
46
46
This [declarative configuration approach](https://kubernetes.io/docs/tasks/manage-kubernetes-objects/declarative-config/) allows you to specify the desired state for your resources, and the operator makes the necessary changes to achieve that state. This simplifies installation, upgrades, and scaling both vertically and horizontally.
47
47
48
-
The operator continuously monitors CRs for changes, automatically reconciling any differences between the desired state you specified in your YAML configuration file and the actual state of your resources.
48
+
The operator continuously monitors CRs for changes, automatically reconciling any differences between the desired state you specified in your YAML configuration file and the actual state of your resources. Custom resources can also reside in separate namespaces from the operator managing them, such as in [multi-namespace installations](ADD LINK).
49
49
50
50
## Custom resource definitions
51
51
@@ -71,18 +71,6 @@ Redis databases are created and managed by the RedisEnterpriseDatabase (REDB) cu
71
71
72
72
A database can be managed by an operator in the same namespace, or a different namespace. See ["Flexible deployment"]({{<relref "/operate/kubernetes/architecture/deployment-options">}}) options and ["Manage databases in multiple namespaces"]({{<relref "/operate/kubernetes/re-clusters/multi-namespace">}}) for more information.
73
73
74
-
## Active-Active databases
75
-
76
-
On Kubernetes, Redis Enterprise [Active-Active]({{< relref "/operate/rs/databases/active-active/" >}}) databases provide read and write access to the same dataset from different Kubernetes clusters. For more general information about Active-Active, see the [Redis Enterprise Software docs]({{< relref "/operate/rs/databases/active-active/" >}}).
77
-
78
-
Creating an Active-Active database requires routing [network access]({{< relref "/operate/kubernetes/networking/" >}}) between two Redis Enterprise clusters residing in different Kubernetes clusters. Without the proper access configured for each cluster, syncing between the databases instances will fail.
79
-
80
-
## RedisEnterpriseRemoteCluster RERC
81
-
82
-
## RedisEnterpriseActiveActiveDatabase REAADB
83
-
84
-
## Services Rigger
85
-
86
74
## Security
87
75
88
76
Redis Enterprise for Kubernetes allows you to use secrets to manage your cluster credentials, cluster certificates, and client certificates. You can configure LDAP and internode encryption via the RedisEnterpriseCluster spec.
@@ -97,16 +85,22 @@ By default, Redis Enterprise Software for Kubernetes generates TLS certificates
97
85
98
86
## Client certificates
99
87
100
-
For each client certificate you want to use with your database, you need to create a Kubernetes secret to hold it. You can then reference that secret in your Redis Enterprise database (REDB) custom resource spec.
88
+
For each client certificate you want to use, you need to create a [Kubernetes secret](ADD LINK) to hold it. You can then reference that secret in your Redis Enterprise database (REDB) custom resource spec.
[Persistent storage is mandatory for Redis Enterprise.]({{<relref "/operate/rs/installing-upgrading/install/plan-deployment/persistent-ephemeral-storage/">}}) Redis Enterprise for Kubernetes [requires network-attached storage](https://en.wikipedia.org/wiki/Network-attached_storage).
105
93
106
-
We use PersistentVolumeClaims (PVCs) to manage storage resources. The PVC is an abstract representation of the PersistentVolume resources used by your Redis pods.[PersistentVolumeClaims (PVC)](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#expanding-persistent-volumes-claims) are created by the Redis Enterprise operator and used by the RedisEnterpriseCluster (REC).
94
+
Redis Enterprise for Kubernetes uses [[PersistentVolumeClaims (PVC)](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#expanding-persistent-volumes-claims) to manage storage resources. The PVC is an abstract representation of the PersistentVolume resources used by your Redis pods. PVCs are created by the Redis Enterprise operator and used by the RedisEnterpriseCluster (REC).
107
95
108
96
PVCs are created with a specific size and [can be expanded](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#expanding-persistent-volumes-claims) with the following steps, if the underlying [storage class](https://kubernetes.io/docs/concepts/storage/storage-classes/) supports it.
109
97
98
+
### Auto Tiering
99
+
100
+
Redis Enterprise Software for Kubernetes supports using Auto Tiering (previously known as Redis on Flash), which extends your node memory to use both RAM and flash storage. SSDs (solid state drives) can store infrequently used (warm) values while your keys and frequently used (hot) values are still stored in RAM. This improves performance and lowers costs for large datasets.
101
+
102
+
NVMe (non-volatile memory express) SSDs are strongly recommended to achieve the best performance.
103
+
110
104
## Networking
111
105
112
106
By default, Kubernetes doesn't allow you to access your Redis database from outside your K8s cluster. Redis Enterprise for Kubernetes supports several ways to route external traffic to your RedisEnterpriseCluster:
@@ -117,6 +111,18 @@ By default, Kubernetes doesn't allow you to access your Redis database from outs
117
111
118
112
The RedisEnterpriseActiveActiveDatabase (REAADB) requires one of above routing methods to be configured in the RedisEnterpriseCluster (REC) with the `ingressOrRouteSpec` field.
119
113
114
+
## Services Rigger
115
+
116
+
## Active-Active databases
117
+
118
+
On Kubernetes, Redis Enterprise [Active-Active]({{< relref "/operate/rs/databases/active-active/" >}}) databases provide read and write access to the same dataset from different Kubernetes clusters. For more general information about Active-Active, see the [Redis Enterprise Software docs]({{< relref "/operate/rs/databases/active-active/" >}}).
119
+
120
+
Creating an Active-Active database requires routing [network access]({{< relref "/operate/kubernetes/networking/" >}}) between two Redis Enterprise clusters residing in different Kubernetes clusters. Without the proper access configured for each cluster, syncing between the databases instances will fail.
121
+
122
+
## RedisEnterpriseRemoteCluster RERC
123
+
124
+
## RedisEnterpriseActiveActiveDatabase REAADB
125
+
120
126
## Metrics
121
127
122
128
To collect metrics data from your databases and Redis Enterprise cluster (REC), you can connect your [Prometheus](https://prometheus.io/) server to an endpoint exposed on your REC. Redis Enterprise for Kubernetes creates a dedicated service to expose the `prometheus` port (8070) for data collection. A custom resource called `ServiceMonitor` allows the [Prometheus operator](https://github.com/prometheus-operator/prometheus-operator/tree/main/Documentation) to connect to this port and collect data from Redis Enterprise.
0 commit comments