diff --git a/.gitignore b/.gitignore index 485dee6..5c3bdbb 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -.idea +*bundle.yaml diff --git a/README.md b/README.md index f6feadd..50e3b12 100644 --- a/README.md +++ b/README.md @@ -32,9 +32,9 @@ High level architecture and overview of the solution can be found [HERE](https:/ The following are the images and tags for this release: | Component | k8s | Openshift | | --- | --- | --- | -| Redis Enterprise | `redislabs/redis:6.2.10-129` | `redislabs/redis:6.2.10-129.rhel8-openshift` | -| Operator | `redislabs/operator:6.2.10-45` | `redislabs/operator:6.2.10-45` | -| Services Rigger | `redislabs/k8s-controller:6.2.10-45` | `redislabs/k8s-controller:6.2.10-45` | +| Redis Enterprise | `redislabs/redis:6.2.12-62` | `redislabs/redis:6.2.12-62.rhel8-openshift` | +| Operator | `redislabs/operator:100.0.5-6614` | `redislabs/operator:100.0.5-6614` | +| Services Rigger | `redislabs/k8s-controller:100.0.5-6614` | `redislabs/k8s-controller:100.0.5-6614` | > * RedHat certified images are available on [Redhat Catalog](https://access.redhat.com/containers/#/product/71f6d1bb3408bd0d)
@@ -376,7 +376,7 @@ The operator deploys a `RedisEnterpriseCluster` with default configurations valu redisEnterpriseImageSpec: imagePullPolicy: IfNotPresent repository: redislabs/redis - versionTag: 6.2.10-129 + versionTag: 6.2.12-62 ``` * Persistence @@ -478,21 +478,21 @@ For example: redisEnterpriseImageSpec: imagePullPolicy: IfNotPresent repository: harbor.corp.local/redisenterprise/redis - versionTag: 6.2.10-129 + versionTag: 6.2.12-62 ``` ```yaml redisEnterpriseServicesRiggerImageSpec: imagePullPolicy: IfNotPresent repository: harbor.corp.local/redisenterprise/k8s-controller - versionTag: 6.2.10-45 + versionTag: 100.0.5-6614 ``` ```yaml bootstrapperImageSpec: imagePullPolicy: IfNotPresent repository: harbor.corp.local/redisenterprise/operator - versionTag: 6.2.10-45 + versionTag: 100.0.5-6614 ``` In Operator Deployment spec (operator.yaml): @@ -504,7 +504,7 @@ spec: spec: containers: - name: redis-enterprise-operator - image: harbor.corp.local/redisenterprise/operator:6.2.10-45 + image: harbor.corp.local/redisenterprise/operator:100.0.5-6614 ``` Image specification follow the [K8s Container schema](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.10/#container-v1-core). @@ -627,7 +627,7 @@ Note: in the examples above the Redis Enterprise Cluster name is: 'rec' and the The Operator automates and simplifies the upgrade process. The Redis Enterprise Cluster Software, and the Redis Enterprise Operator for Kubernetes versions are tightly coupled and should be upgraded together. It is recommended to use the bundle.yaml to upgrade, as it loads all the relevant CRD documents for this version. If the updated CRDs are not loaded, the operator might fail. -There are two ways to upgrade - either set 'autoUpgradeRedisEnterprise' within the Redis Enterprise Cluster Spec to instruct the operator to automatically upgrade to the compatible version, or specify the correct Redis Enterprise image manually using the versionTag attribute. The Redis Enterprise Version compatible with this release is 6.2.10-129 +There are two ways to upgrade - either set 'autoUpgradeRedisEnterprise' within the Redis Enterprise Cluster Spec to instruct the operator to automatically upgrade to the compatible version, or specify the correct Redis Enterprise image manually using the versionTag attribute. The Redis Enterprise Version compatible with this release is 6.2.12-62 ```yaml autoUpgradeRedisEnterprise: true @@ -636,7 +636,7 @@ There are two ways to upgrade - either set 'autoUpgradeRedisEnterprise' within t Alternatively: ```yaml RedisEnterpriseImageSpec: - versionTag: redislabs/redis:6.2.10-129 + versionTag: redislabs/redis:6.2.12-62 ``` ## Supported K8S Distributions @@ -676,3 +676,11 @@ Supported versions (platforms/versions that are not listed are not supported): \* No longer supported by the vendor \*\* Tanzu Kubernetes Grid Integrated Edition + +### Supported RedisEnterprise versions per operator +Each release of the Redis Enterprise Operator deployment is tested against a set of Redis Enterprise releases. +You can specify Redis Enterprise image manually using the versionTag attribute. +Redis Enterprise Operator deployment versions and Redis Enterprise Cluster Software versions that are supported: +| Operator | Redis Enterprise | Openshift | +|----------------------|------------------|--------------------------------| +| `redislabs/operator:100.0.5-6614` | `redislabs/redis:6.2.12-62` | `redislabs/redis:6.2.12-62.rhel8-openshift` | diff --git a/bundle.yaml b/bundle.yaml index 14c0ef6..dc500e6 100644 --- a/bundle.yaml +++ b/bundle.yaml @@ -810,7 +810,7 @@ spec: serviceAccountName: redis-enterprise-operator containers: - name: redis-enterprise-operator - image: redislabs/operator:6.2.10-45 + image: redislabs/operator:100.0.5-6614 command: - redis-enterprise-operator imagePullPolicy: Always @@ -852,7 +852,7 @@ spec: port: 8080 scheme: HTTP - name: admission - image: redislabs/operator:6.2.10-45 + image: redislabs/operator:100.0.5-6614 command: - /usr/local/bin/admission imagePullPolicy: Always diff --git a/google_private_cloud/README.md b/google_private_cloud/README.md new file mode 100644 index 0000000..aa0fd0e --- /dev/null +++ b/google_private_cloud/README.md @@ -0,0 +1,100 @@ + +# Deploying Redis Enterprise on Google Private Cloud + +This page describes how to deploy Redis Enterprise on Google Private Cloud Kubernetes solution using the Redis Enterprise Operator. + +### Prerequisites + +- A Kubernetes cluster version of 1.20 or higher, with a minimum of 3 worker nodes. +- A Kubernetes client (kubectl) with a matching version. +- Access to DockerHub, Harbor or a private repository that can serve the required images. + + + +The following are the images and tags for this release: + +| Component | k8s | +| --- | --- | +| Redis Enterprise | `redislabs/redis:6.2.12-62` | +| Operator | `redislabs/operator:100.0.5-6614` | +| Services Rigger | `redislabs/k8s-controller:100.0.5-6614` | + + +### Installation +The "Basic" installation deploys the operator (from the current release) from DockerHub and default settings. +This is the fastest way to get up and running with a new Redis Enterprise on Kubernetes. + +1. We will need to clone the yamls from [github](https://github.com/RedisLabs/redis-enterprise-k8s-docs/releases) to your local directory. + +2. Create a new namespace: + > Note: + For the purpose of this doc, we'll use the name "demo" for our cluster's namespace. + + ```bash + kubectl create namespace demo + ``` + + Switch context to the newly created namespace: + + ```bash + kubectl config set-context --current --namespace=demo + ``` +*** +For deploying the bundle and the Redis Enterprise Cluster custom resource we will use the [Kustomize](https://kubernetes.io/docs/tasks/manage-kubernetes-objects/kustomization/). +3. Customize the operator deployment - + + Before deploying the bundle.yaml we will need to customize it . + edit the `bundle\kustomize_bundle.yaml` file : + > Note: + Replace the [User Private repo] with your private images repository location. + +4. Deploy the operator bundle + + with `kubectl`, the following command will deploy a bundle of all the yaml declarations required for the operator: + + ```bash + kubectl apply -k bundle + ``` + + Run `kubectl get deployment` and verify redis-enterprise-operator deployment is running. + + A typical response may look like this: + + ```bash + NAME READY UP-TO-DATE AVAILABLE AGE + redis-enterprise-operator 1/1 1 1 2m + ``` + +5. Customize the Redis Enterprise Cluster custom resource - + + Before deploying the rec.yaml we will need to customize it . + edit the `rec\kustomize_rec.yaml` file : + > Note: + Replace the [User Private repo] with your private images repository location. + + The kustomize_rec.yaml configure the Redis Enterprise Cluster custom resource with the default configuration, + which is suitable for development type deployments and works in typical scenarios. + The full list of attributes supported through the Redis Enterprise Cluster (REC) API can be found [HERE](redis_enterprise_cluster_api.md). + + +6. Redis Enterprise Cluster custom resource - `RedisEnterpriseCluster` + + Create a `RedisEnterpriseCluster`(REC) using the kustomize capability, + + ```bash + kubectl apply -k rec + ``` + + > Note: + The Operator can only manage one Redis Enterprise Cluster custom resource in a namespace. To deploy another Enterprise Clusters in the same Kubernetes cluster, deploy an Operator in an additional namespace for each additional Enterprise Cluster required. Note that each Enterprise Cluster can effectively host hundreds of Redis Database instances. Deploying multiple clusters is typically used for scenarios where complete operational isolation is required at the cluster level. + +7. Run ```kubectl get rec``` and verify creation was successful. `rec` is a shortcut for RedisEnterpriseCluster. The cluster takes around 5-10 minutes to come up. + A typical response may look like this: + ``` + NAME AGE + rec 5m + ``` + > Note: Once the cluster is up, the cluster GUI and API could be used to configure databases. It is recommended to use the K8s REDB API that is configured through the following steps. To configure the cluster using the cluster GUI/API, use the ui service created by the operator and the default credentials as set in a secret. The secret name is the same as the cluster name within the namespace. + + +*** For advanced configuration and more info you can visit our formal documentation [here](https://github.com/RedisLabs/redis-enterprise-k8s-docs/blob/master/README.md). \ No newline at end of file diff --git a/google_private_cloud/bundle/kustomization.yaml b/google_private_cloud/bundle/kustomization.yaml new file mode 100644 index 0000000..d0304c1 --- /dev/null +++ b/google_private_cloud/bundle/kustomization.yaml @@ -0,0 +1,4 @@ +resources: +- bundle.yaml +patchesStrategicMerge: +- kustomize_bundle.yaml \ No newline at end of file diff --git a/google_private_cloud/rec/kustomization.yaml b/google_private_cloud/rec/kustomization.yaml new file mode 100644 index 0000000..619df3f --- /dev/null +++ b/google_private_cloud/rec/kustomization.yaml @@ -0,0 +1,4 @@ +resources: +- rec.yaml +patchesStrategicMerge: +- kustomize_rec.yaml \ No newline at end of file diff --git a/google_private_cloud/rec/kustomize_rec.yaml b/google_private_cloud/rec/kustomize_rec.yaml new file mode 100644 index 0000000..0106bf8 --- /dev/null +++ b/google_private_cloud/rec/kustomize_rec.yaml @@ -0,0 +1,17 @@ +apiVersion: app.redislabs.com/v1alpha1 +kind: RedisEnterpriseCluster +metadata: + name: rec +spec: + persistentSpec: + storageClassName: standard + volumeSize: 20Gi + redisEnterpriseImageSpec: + repository: [User redis Private repo] + versionTag: 6.2.12-62 + redisEnterpriseServicesRiggerImageSpec: + repository: [User service rigger Private repo] + versionTag: 100.0.5-6614 + bootstrapperImageSpec: + repository: [User operator Private repo] + versionTag: 100.0.5-6614 \ No newline at end of file diff --git a/google_private_cloud/rec/rec.yaml b/google_private_cloud/rec/rec.yaml new file mode 100644 index 0000000..2480955 --- /dev/null +++ b/google_private_cloud/rec/rec.yaml @@ -0,0 +1,7 @@ +apiVersion: app.redislabs.com/v1 +kind: RedisEnterpriseCluster +metadata: + name: rec +spec: + # Add fields here + nodes: 3 diff --git a/multi-namespace-redb/operator.yaml b/multi-namespace-redb/operator.yaml index 690013c..03d65e2 100644 --- a/multi-namespace-redb/operator.yaml +++ b/multi-namespace-redb/operator.yaml @@ -15,7 +15,7 @@ spec: serviceAccountName: redis-enterprise-operator containers: - name: redis-enterprise-operator - image: redislabs/operator:6.2.10-45 + image: redislabs/operator:100.0.5-6614 command: - redis-enterprise-operator imagePullPolicy: Always @@ -57,7 +57,7 @@ spec: port: 8080 scheme: HTTP - name: admission - image: redislabs/operator:6.2.10-45 + image: redislabs/operator:100.0.5-6614 command: - /usr/local/bin/admission imagePullPolicy: Always diff --git a/openshift.bundle.yaml b/openshift.bundle.yaml index 3ec7c33..8a4ec6f 100644 --- a/openshift.bundle.yaml +++ b/openshift.bundle.yaml @@ -838,7 +838,7 @@ spec: serviceAccountName: redis-enterprise-operator containers: - name: redis-enterprise-operator - image: registry.connect.redhat.com/redislabs/redis-enterprise-operator:6.2.10-45 + image: registry.connect.redhat.com/redislabs/redis-enterprise-operator:100.0.5-6614 securityContext: runAsUser: 1001 command: @@ -884,7 +884,7 @@ spec: port: 8080 scheme: HTTP - name: admission - image: registry.connect.redhat.com/redislabs/redis-enterprise-operator:6.2.10-45 + image: registry.connect.redhat.com/redislabs/redis-enterprise-operator:100.0.5-6614 command: - /usr/local/bin/admission imagePullPolicy: Always diff --git a/openshift/operator_rhel.yaml b/openshift/operator_rhel.yaml index 5a5a1d1..fd5e69e 100644 --- a/openshift/operator_rhel.yaml +++ b/openshift/operator_rhel.yaml @@ -15,7 +15,7 @@ spec: serviceAccountName: redis-enterprise-operator containers: - name: redis-enterprise-operator - image: registry.connect.redhat.com/redislabs/redis-enterprise-operator:6.2.10-45 + image: registry.connect.redhat.com/redislabs/redis-enterprise-operator:100.0.5-6614 securityContext: runAsUser: 1001 command: @@ -61,7 +61,7 @@ spec: port: 8080 scheme: HTTP - name: admission - image: registry.connect.redhat.com/redislabs/redis-enterprise-operator:6.2.10-45 + image: registry.connect.redhat.com/redislabs/redis-enterprise-operator:100.0.5-6614 command: - /usr/local/bin/admission imagePullPolicy: Always diff --git a/openshift/rec_rhel.yaml b/openshift/rec_rhel.yaml index 7827a3b..aa6d9fa 100644 --- a/openshift/rec_rhel.yaml +++ b/openshift/rec_rhel.yaml @@ -7,7 +7,7 @@ spec: nodes: 3 redisEnterpriseImageSpec: repository: registry.connect.redhat.com/redislabs/redis-enterprise - versionTag: 6.2.10-129.rhel8-openshift + versionTag: 6.2.12-62.rhel8-openshift redisEnterpriseServicesRiggerImageSpec: repository: registry.connect.redhat.com/redislabs/services-manager bootstrapperImageSpec: diff --git a/operator.yaml b/operator.yaml index 690013c..03d65e2 100644 --- a/operator.yaml +++ b/operator.yaml @@ -15,7 +15,7 @@ spec: serviceAccountName: redis-enterprise-operator containers: - name: redis-enterprise-operator - image: redislabs/operator:6.2.10-45 + image: redislabs/operator:100.0.5-6614 command: - redis-enterprise-operator imagePullPolicy: Always @@ -57,7 +57,7 @@ spec: port: 8080 scheme: HTTP - name: admission - image: redislabs/operator:6.2.10-45 + image: redislabs/operator:100.0.5-6614 command: - /usr/local/bin/admission imagePullPolicy: Always diff --git a/redis_enterprise_cluster_api.md b/redis_enterprise_cluster_api.md index fb5c320..e849bcb 100644 --- a/redis_enterprise_cluster_api.md +++ b/redis_enterprise_cluster_api.md @@ -294,11 +294,11 @@ RedisEnterpriseClusterSpec defines the desired state of RedisEnterpriseCluster | certificates | RS Cluster Certificates. Used to modify the certificates used by the cluster. See the \"RSClusterCertificates\" struct described above to see the supported certificates. | *[RSClusterCertificates](#rsclustercertificates) | | false | | podStartingPolicy | Mitigation setting for STS pods stuck in \"ContainerCreating\" | *[StartingPolicy](#startingpolicy) | | false | | redisEnterpriseTerminationGracePeriodSeconds | The TerminationGracePeriodSeconds value for the (STS created) REC pods. Note that pods should not be taken down intentionally by force. Because clean pod shutdown is essential to prevent data loss, the default value is intentionally large (1 year). When data loss is acceptable (such as pure caching configurations), a value of a few minutes may be acceptable. | *int64 | 31536000 | false | -| redisOnFlashSpec | Stores configurations specific to redis on flash. If provided, the cluster will be capable of creating redis on flash databases. Note - This is an ALPHA Feature. For this feature to take effect, set a boolean environment variable with the name "ENABLE_ALPHA_FEATURES" to True. This variable can be set via the redis-enterprise-operator pod spec, or through the operator-environment-config Config Map. | *[RedisOnFlashSpec](#redisonflashspec) | | false | -| ocspConfiguration | An API object that represents the cluster's OCSP configuration. To enable OCSP, the cluster's proxy certificate should contain the OCSP responder URL. Note - This is an ALPHA Feature. For this feature to take effect, set a boolean environment variable with the name "ENABLE_ALPHA_FEATURES" to True. This variable can be set via the redis-enterprise-operator pod spec, or through the operator-environment-config Config Map. | *[OcspConfiguration](#ocspconfiguration) | | false | -| encryptPkeys | Private key encryption - in order to enable, first need to mount ${ephemeralconfdir}/secrets/pem/passphrase and add the passphrase and then set fields value to 'true' Possible values: true/false Note: This is an ALPHA Feature. For this feature to take effect, set a boolean environment variable with the name "ENABLE_ALPHA_FEATURES" to True. This variable can be set via the redis-enterprise-operator pod spec, or through the operator-environment-config Config Map. | *bool | | false | +| redisOnFlashSpec | Stores configurations specific to redis on flash. If provided, the cluster will be capable of creating redis on flash databases. Note - This is an ALPHA Feature. For this feature to take effect, set a boolean environment variable with the name \"ENABLE_ALPHA_FEATURES\" to True. This variable can be set via the redis-enterprise-operator pod spec, or through the operator-environment-config Config Map. | *[RedisOnFlashSpec](#redisonflashspec) | | false | +| ocspConfiguration | An API object that represents the cluster's OCSP configuration. To enable OCSP, the cluster's proxy certificate should contain the OCSP responder URL. Note - This is an ALPHA Feature. For this feature to take effect, set a boolean environment variable with the name \"ENABLE_ALPHA_FEATURES\" to True. This variable can be set via the redis-enterprise-operator pod spec, or through the operator-environment-config Config Map. | *[OcspConfiguration](#ocspconfiguration) | | false | +| encryptPkeys | Private key encryption - in order to enable, first need to mount ${ephemeralconfdir}/secrets/pem/passphrase and add the passphrase and then set fields value to 'true' Possible values: true/false Note: This is an ALPHA Feature. For this feature to take effect, set a boolean environment variable with the name \"ENABLE_ALPHA_FEATURES\" to True. This variable can be set via the redis-enterprise-operator pod spec, or through the operator-environment-config Config Map. | *bool | | false | | containerTimezone | Container timezone configuration. While the default timezone on all containers is UTC, this setting can be used to set the timezone on services rigger/bootstrapper/RS containers. Currently the only supported value is to propagate the host timezone to all containers. | *[ContainerTimezoneSpec](#containertimezonespec) | | false | -| ingressOrRouteSpec | Access configurations for the Redis Enterprise Cluster and Databases. Note - this feature is currently in preview. For this feature to take effect, set a boolean environment variable with the name "ENABLE_ALPHA_FEATURES" to True. This variable can be set via the redis-enterprise-operator pod spec, or through the operator-environment-config Config Map. At most one of ingressOrRouteSpec or activeActive fields can be set at the same time. | *[IngressOrRouteSpec](#ingressorroutespec) | | false | +| ingressOrRouteSpec | Access configurations for the Redis Enterprise Cluster and Databases. Note - this feature is currently in preview. For this feature to take effect, set a boolean environment variable with the name \"ENABLE_ALPHA_FEATURES\" to True. This variable can be set via the redis-enterprise-operator pod spec, or through the operator-environment-config Config Map. At most one of ingressOrRouteSpec or activeActive fields can be set at the same time. | *[IngressOrRouteSpec](#ingressorroutespec) | | false | [Back to Table of Contents](#table-of-contents) ### RedisEnterpriseClusterStatus