|
| 1 | +apiVersion: operators.coreos.com/v1alpha1 |
| 2 | +kind: ClusterServiceVersion |
| 3 | +metadata: |
| 4 | + annotations: |
| 5 | + alm-examples: |- |
| 6 | + [ |
| 7 | + { |
| 8 | + "apiVersion": "redis.redis.opstreelabs.in/v1beta2", |
| 9 | + "kind": "Redis", |
| 10 | + "metadata": { |
| 11 | + "name": "redis-standalone" |
| 12 | + }, |
| 13 | + "spec": { |
| 14 | + "kubernetesConfig": { |
| 15 | + "image": "quay.io/opstree/redis:v7.0.12", |
| 16 | + "imagePullPolicy": "IfNotPresent" |
| 17 | + } |
| 18 | + } |
| 19 | + }, |
| 20 | + { |
| 21 | + "apiVersion": "redis.redis.opstreelabs.in/v1beta2", |
| 22 | + "kind": "RedisCluster", |
| 23 | + "metadata": { |
| 24 | + "name": "redis-cluster" |
| 25 | + }, |
| 26 | + "spec": { |
| 27 | + "clusterSize": 3, |
| 28 | + "kubernetesConfig": { |
| 29 | + "image": "quay.io/opstree/redis:v7.0.12", |
| 30 | + "imagePullPolicy": "IfNotPresent" |
| 31 | + } |
| 32 | + } |
| 33 | + } |
| 34 | + ] |
| 35 | + capabilities: Deep Insights |
| 36 | + categories: Database |
| 37 | + certified: "false" |
| 38 | + containerImage: quay.io/opstree/redis-operator:v0.18.1 |
| 39 | + createdAt: "2025-10-03T05:48:27Z" |
| 40 | + description: Redis Operator v0.18.1 brings enhanced stateful set management with minReadySeconds support, improved operator deployment with tolerations and image pull secrets, comprehensive monitoring via ServiceMonitor for Redis Sentinel, and enhanced reliability through readiness/liveness probes. Includes Redis 7.0.15 upgrade for better performance and security. |
| 41 | + operators.operatorframework.io/builder: operator-sdk-v1.28.0+git |
| 42 | + operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 |
| 43 | + repository: https://github.com/OT-CONTAINER-KIT/redis-operator |
| 44 | + support: OpsTree Solutions |
| 45 | + name: redis-operator.v0.18.1 |
| 46 | + namespace: placeholder |
| 47 | +spec: |
| 48 | + apiservicedefinitions: {} |
| 49 | + customresourcedefinitions: |
| 50 | + owned: |
| 51 | + - description: Redis is the Schema for the redis API |
| 52 | + displayName: Redis |
| 53 | + kind: Redis |
| 54 | + name: redis.redis.redis.opstreelabs.in |
| 55 | + version: v1beta2 |
| 56 | + - description: RedisCluster is the Schema for the redisclusters API |
| 57 | + displayName: Redis Cluster |
| 58 | + kind: RedisCluster |
| 59 | + name: redisclusters.redis.redis.opstreelabs.in |
| 60 | + version: v1beta2 |
| 61 | + - description: RedisReplication is the Schema for the redisreplications API |
| 62 | + displayName: Redis Replication |
| 63 | + kind: RedisReplication |
| 64 | + name: redisreplications.redis.redis.opstreelabs.in |
| 65 | + version: v1beta2 |
| 66 | + - description: RedisSentinel is the Schema for the redissentinels API |
| 67 | + displayName: Redis Sentinel |
| 68 | + kind: RedisSentinel |
| 69 | + name: redissentinels.redis.redis.opstreelabs.in |
| 70 | + version: v1beta2 |
| 71 | + description: | |
| 72 | + ## Redis Operator v0.18.1 |
| 73 | + |
| 74 | + The Redis Operator is a comprehensive, production-grade Kubernetes operator that simplifies the deployment, management, and monitoring of Redis instances on Kubernetes clusters. Built with Go and following cloud-native best practices, this operator supports both standalone and cluster Redis deployments with enterprise-level features. |
| 75 | + |
| 76 | + ### Key Features |
| 77 | + |
| 78 | + **🚀 Deployment Modes:** |
| 79 | + - Redis Standalone: Single-instance Redis deployment |
| 80 | + - Redis Cluster: Highly available Redis cluster with automatic sharding |
| 81 | + - Redis Replication: Master-slave replication setup with automatic failover |
| 82 | + - Redis Sentinel: High availability with automatic master discovery and failover |
| 83 | + |
| 84 | + **🔒 Security & Authentication:** |
| 85 | + - TLS/SSL encryption support for secure communications |
| 86 | + - Access Control Lists (ACL) for fine-grained user permissions |
| 87 | + - Password-based and password-less authentication |
| 88 | + - Pod security contexts and security constraints |
| 89 | + |
| 90 | + **📊 Monitoring & Observability:** |
| 91 | + - Built-in Redis Exporter integration for Prometheus metrics |
| 92 | + - Comprehensive Grafana dashboards for performance monitoring |
| 93 | + - ServiceMonitor support for automatic Prometheus discovery |
| 94 | + - Health checks with configurable liveness and readiness probes |
| 95 | + |
| 96 | + ### Prerequisites |
| 97 | + - Kubernetes 1.18.0+ |
| 98 | + - 2 CPU cores and 4GB RAM (recommended) |
| 99 | + - StorageClass for persistent storage (for stateful deployments) |
| 100 | + |
| 101 | + ### Quick Start |
| 102 | + |
| 103 | + 1. Install the operator: |
| 104 | + ```bash |
| 105 | + kubectl create namespace redis-operator |
| 106 | + kubectl apply -f https://raw.githubusercontent.com/OT-CONTAINER-KIT/redis-operator/v0.18.1/config/samples/redis_v1beta2_redis.yaml |
| 107 | + ``` |
| 108 | + |
| 109 | + 2. Create a Redis instance: |
| 110 | + ```yaml |
| 111 | + apiVersion: redis.redis.opstreelabs.in/v1beta2 |
| 112 | + kind: Redis |
| 113 | + metadata: |
| 114 | + name: redis-standalone |
| 115 | + spec: |
| 116 | + kubernetesConfig: |
| 117 | + image: quay.io/opstree/redis:v7.0.12 |
| 118 | + imagePullPolicy: IfNotPresent |
| 119 | + ``` |
| 120 | + |
| 121 | + For more examples and documentation, visit: https://redis-operator.opstree.dev/ |
| 122 | + displayName: Redis Operator |
| 123 | + icon: |
| 124 | + - base64data: iVBORw0KGgoAAAANSUhEUgAAAKsAAACrCAYAAAAZ6GwZAAAACXBIWXMAAAsSAAALEgHS3X78AAANq0lEQVR4nO2da2wUVRiGX7q0tLRcpFwKCFgQFBEQBBEQQUAQFUQQUEEQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQQFUQ= |
| 125 | + mediatype: image/png |
| 126 | + install: |
| 127 | + spec: |
| 128 | + clusterPermissions: |
| 129 | + - rules: |
| 130 | + - apiGroups: |
| 131 | + - apps |
| 132 | + resources: |
| 133 | + - statefulsets |
| 134 | + verbs: |
| 135 | + - create |
| 136 | + - delete |
| 137 | + - get |
| 138 | + - list |
| 139 | + - patch |
| 140 | + - update |
| 141 | + - watch |
| 142 | + - apiGroups: |
| 143 | + - "" |
| 144 | + resources: |
| 145 | + - configmaps |
| 146 | + - events |
| 147 | + - persistentvolumeclaims |
| 148 | + - pods |
| 149 | + - services |
| 150 | + verbs: |
| 151 | + - create |
| 152 | + - delete |
| 153 | + - get |
| 154 | + - list |
| 155 | + - patch |
| 156 | + - update |
| 157 | + - watch |
| 158 | + - apiGroups: |
| 159 | + - redis.redis.opstreelabs.in |
| 160 | + resources: |
| 161 | + - redis |
| 162 | + - redisclusters |
| 163 | + - redisreplications |
| 164 | + - redissentinels |
| 165 | + verbs: |
| 166 | + - create |
| 167 | + - delete |
| 168 | + - get |
| 169 | + - list |
| 170 | + - patch |
| 171 | + - update |
| 172 | + - watch |
| 173 | + - apiGroups: |
| 174 | + - redis.redis.opstreelabs.in |
| 175 | + resources: |
| 176 | + - redis/finalizers |
| 177 | + - redisclusters/finalizers |
| 178 | + - redisreplications/finalizers |
| 179 | + - redissentinels/finalizers |
| 180 | + verbs: |
| 181 | + - update |
| 182 | + - apiGroups: |
| 183 | + - redis.redis.opstreelabs.in |
| 184 | + resources: |
| 185 | + - redis/status |
| 186 | + - redisclusters/status |
| 187 | + - redisreplications/status |
| 188 | + - redissentinels/status |
| 189 | + verbs: |
| 190 | + - get |
| 191 | + - patch |
| 192 | + - update |
| 193 | + serviceAccountName: redis-operator-controller-manager |
| 194 | + deployments: |
| 195 | + - name: redis-operator-controller-manager |
| 196 | + spec: |
| 197 | + replicas: 1 |
| 198 | + selector: |
| 199 | + matchLabels: |
| 200 | + app.kubernetes.io/component: manager |
| 201 | + app.kubernetes.io/created-by: redis-operator |
| 202 | + app.kubernetes.io/instance: controller-manager |
| 203 | + app.kubernetes.io/managed-by: kustomize |
| 204 | + app.kubernetes.io/name: deployment |
| 205 | + app.kubernetes.io/part-of: redis-operator |
| 206 | + control-plane: controller-manager |
| 207 | + strategy: {} |
| 208 | + template: |
| 209 | + metadata: |
| 210 | + annotations: |
| 211 | + kubectl.kubernetes.io/default-container: manager |
| 212 | + labels: |
| 213 | + app.kubernetes.io/component: manager |
| 214 | + app.kubernetes.io/created-by: redis-operator |
| 215 | + app.kubernetes.io/instance: controller-manager |
| 216 | + app.kubernetes.io/managed-by: kustomize |
| 217 | + app.kubernetes.io/name: deployment |
| 218 | + app.kubernetes.io/part-of: redis-operator |
| 219 | + control-plane: controller-manager |
| 220 | + spec: |
| 221 | + affinity: |
| 222 | + nodeAffinity: |
| 223 | + requiredDuringSchedulingIgnoredDuringExecution: |
| 224 | + nodeSelectorTerms: |
| 225 | + - matchExpressions: |
| 226 | + - key: kubernetes.io/arch |
| 227 | + operator: In |
| 228 | + values: |
| 229 | + - amd64 |
| 230 | + - arm64 |
| 231 | + - ppc64le |
| 232 | + - s390x |
| 233 | + - key: kubernetes.io/os |
| 234 | + operator: In |
| 235 | + values: |
| 236 | + - linux |
| 237 | + containers: |
| 238 | + - args: |
| 239 | + - --secure-listen-address=0.0.0.0:8443 |
| 240 | + - --upstream=http://127.0.0.1:8080/ |
| 241 | + - --logtostderr=true |
| 242 | + - --v=0 |
| 243 | + image: gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1 |
| 244 | + name: kube-rbac-proxy |
| 245 | + ports: |
| 246 | + - containerPort: 8443 |
| 247 | + name: https |
| 248 | + protocol: TCP |
| 249 | + resources: |
| 250 | + limits: |
| 251 | + cpu: 500m |
| 252 | + memory: 128Mi |
| 253 | + requests: |
| 254 | + cpu: 5m |
| 255 | + memory: 64Mi |
| 256 | + securityContext: |
| 257 | + allowPrivilegeEscalation: false |
| 258 | + capabilities: |
| 259 | + drop: |
| 260 | + - ALL |
| 261 | + - args: |
| 262 | + - --health-probe-bind-address=:8081 |
| 263 | + - --metrics-bind-address=127.0.0.1:8080 |
| 264 | + - --leader-elect |
| 265 | + command: |
| 266 | + - /manager |
| 267 | + image: quay.io/opstree/redis-operator:v0.18.1 |
| 268 | + livenessProbe: |
| 269 | + httpGet: |
| 270 | + path: /healthz |
| 271 | + port: 8081 |
| 272 | + initialDelaySeconds: 15 |
| 273 | + periodSeconds: 20 |
| 274 | + name: manager |
| 275 | + readinessProbe: |
| 276 | + httpGet: |
| 277 | + path: /readyz |
| 278 | + port: 8081 |
| 279 | + initialDelaySeconds: 5 |
| 280 | + periodSeconds: 10 |
| 281 | + resources: |
| 282 | + limits: |
| 283 | + cpu: 500m |
| 284 | + memory: 128Mi |
| 285 | + requests: |
| 286 | + cpu: 10m |
| 287 | + memory: 64Mi |
| 288 | + securityContext: |
| 289 | + allowPrivilegeEscalation: false |
| 290 | + capabilities: |
| 291 | + drop: |
| 292 | + - ALL |
| 293 | + securityContext: |
| 294 | + runAsNonRoot: true |
| 295 | + serviceAccountName: redis-operator-controller-manager |
| 296 | + terminationGracePeriodSeconds: 10 |
| 297 | + permissions: [] |
| 298 | + strategy: deployment |
| 299 | + installModes: |
| 300 | + - supported: false |
| 301 | + type: OwnNamespace |
| 302 | + - supported: false |
| 303 | + type: SingleNamespace |
| 304 | + - supported: false |
| 305 | + type: MultiNamespace |
| 306 | + - supported: true |
| 307 | + type: AllNamespaces |
| 308 | + keywords: |
| 309 | + - redis |
| 310 | + - database |
| 311 | + - nosql |
| 312 | + - cluster |
| 313 | + - cache |
| 314 | + - memory |
| 315 | + - sentinel |
| 316 | + - replication |
| 317 | + links: |
| 318 | + - name: Redis Operator |
| 319 | + url: https://redis-operator.opstree.dev |
| 320 | + - name: GitHub |
| 321 | + url: https://github.com/OT-CONTAINER-KIT/redis-operator |
| 322 | + - name: Documentation |
| 323 | + url: https://redis-operator.opstree.dev |
| 324 | + maintainers: |
| 325 | + |
| 326 | + name: iamabhishek-dubey |
| 327 | + |
| 328 | + name: yangw |
| 329 | + |
| 330 | + name: shubham-cmyk |
| 331 | + |
| 332 | + name: drivebyer |
| 333 | + |
| 334 | + name: sandy724 |
| 335 | + maturity: stable |
| 336 | + minKubeVersion: 1.18.0 |
| 337 | + provider: |
| 338 | + name: OpsTree Solutions |
| 339 | + url: https://opstree.com |
| 340 | + replaces: redis-operator.v0.15.1 |
| 341 | + version: 0.18.1 |
0 commit comments