Skip to content

Latest commit

 

History

History
446 lines (356 loc) · 31.1 KB

redis_enterprise_cluster_api.md

File metadata and controls

446 lines (356 loc) · 31.1 KB

Redis Enterprise Cluster API

This document describes the parameters for the Redis Enterprise Cluster custom resource

Note this document is auto-generated from code comments. To contribute a change please change the code comments.

Table of Contents

Objects

ActiveActive

Field Description Scheme Default Value Required
method Used to distinguish between different platforms implementation IngressMethod true
apiIngressUrl RS API URL string true
dbIngressSuffix DB ENDPOINT SUFFIX - will be used to set the db host ingress . Creates a host name so it should be unique if more than one db is created on the cluster with the same name string true
ingressAnnotations Used for ingress controllers such as ha-proxy or nginx in GKE map[string]string false
Back to Table of Contents

BundledDatabaseRedisVersions

Field Description Scheme Default Value Required
version string true
Back to Table of Contents

BundledDatabaseVersions

Field Description Scheme Default Value Required
dbType string true
version string true
Back to Table of Contents

ClusterCertificate

Field Description Scheme Default Value Required
name string true
certificate string true
key string true
Back to Table of Contents

CmServer

Field Description Scheme Default Value Required
operatingMode Whether to enable/disable the CM server OperatingMode true
Back to Table of Contents

ContainerTimezoneSpec

Used to set the timezone across all redis enterprise containers.

Field Description Scheme Default Value Required
propagateHost Identifies that container timezone should be in sync with the host. *PropagateHost false
Back to Table of Contents

CrdbCoordinator

Field Description Scheme Default Value Required
operatingMode Whether to enable/disable the crdb coordinator process OperatingMode true
Back to Table of Contents

CrdbWorker

Field Description Scheme Default Value Required
operatingMode Whether to enable/disable the crdb worker processes OperatingMode true
Back to Table of Contents

ImageSpec

Image specification

Field Description Scheme Default Value Required
repository Repository string true
versionTag string true
digestHash The digest hash of the image to pull. Version tag must be also specified with the corresponding version, will use the digest hash to pull the image if exists. Note: This is currently supported only for OLM. string false
imagePullPolicy v1.PullPolicy true
Back to Table of Contents

IngressOrRouteSpec

Field Description Scheme Default Value Required
method Used to distinguish between different platforms implementation. IngressMethod true
apiFqdnUrl RS API URL string true
dbFqdnSuffix DB ENDPOINT SUFFIX - will be used to set the db host ingress . Creates a host name so it should be unique if more than one db is created on the cluster with the same name string true
ingressAnnotations Additional annotations to set on ingress resources created by the operator map[string]string false
Back to Table of Contents

LicenseStatus

Field Description Scheme Default Value Required
licenseState Is the license expired string true
activationDate When the license was activated string true
expirationDate When the license will\has expired string true
shardsLimit Number of redis shards allowed under this license int32 true
Back to Table of Contents

MdnsServer

Field Description Scheme Default Value Required
operatingMode Whether to enable/disable the Multicast DNS server OperatingMode true
Back to Table of Contents

Module

Field Description Scheme Default Value Required
name string true
displayName string true
versions []string true
Back to Table of Contents

OcspConfiguration

An API object that represents the cluster's OCSP configuration

Field Description Scheme Default Value Required
ocspFunctionality Whether to enable/disable OCSP mechanism for the cluster. *bool false
queryFrequency Determines the interval (in seconds) in which the control plane will poll the OCSP responder for a new status for the server certificate. Minimum value is 60. Maximum value is 86400. *int false
responseTimeout Determines the time interval (in seconds) for which the request waits for a response from the OCSP responder. Minimum value is 1. Maximum value is 60. *int false
recoveryFrequency Determines the interval (in seconds) in which the control plane will poll the OCSP responder for a new status for the server certificate when the current staple is invalid. Minimum value is 60. Maximum value is 86400. *int false
recoveryMaxTries Determines the maximum number for the OCSP recovery attempts. After max number of tries passed, the control plane will revert back to the regular frequency. Minimum value is 1. Maximum value is 100. *int false
Back to Table of Contents

OcspStatus

An API object that represents the cluster's OCSP status

Field Description Scheme Default Value Required
responderUrl The OCSP responder url from which this status came from. string false
certStatus Indicates the proxy certificate status - GOOD/REVOKED/UNKNOWN. string false
producedAt The time at which the OCSP responder signed this response. string false
thisUpdate The most recent time at which the status being indicated is known by the responder to have been correct. string false
nextUpdate The time at or before which newer information will be available about the status of the certificate (if available) string false
revocationTime The time at which the certificate was revoked or placed on hold. string false
Back to Table of Contents

PdnsServer

Field Description Scheme Default Value Required
operatingMode Whether to enable/disable the pdns server OperatingMode true
Back to Table of Contents

PersistentConfigurationSpec

Specification for Redis Enterprise Cluster persistence

Field Description Scheme Default Value Required
enabled Whether to add persistent volume to Redis Enterprise pods *bool True true
storageClassName Storage class for persistent volume in Redis Enterprise pods. Leave empty to use the default. If using the default this way, make sure the Kubernetes Cluster has a default Storage Class configured. This can be done by running a kubectl get storageclass and see if one of the Storage Classes' names contains a (default) mark. string true
volumeSize resource.Quantity true
Back to Table of Contents

PropagateHost

Used to specify that the timezone is configured to match the host machine timezone.

Field Description Scheme Default Value Required
Back to Table of Contents

RSClusterCertificates

Field Description Scheme Default Value Required
apiCertificateSecretName Secret Name/Path to use for Cluster's API Certificate. If left blank, will use certificate provided by the cluster. string false
cmCertificateSecretName Secret Name/Path to use for Cluster's CM Certificate. If left blank, will use certificate provided by the cluster. string false
metricsExporterCertificateSecretName Secret Name/Path to use for Cluster's Metrics Exporter Certificate. If left blank, will use certificate provided by the cluster. string false
proxyCertificateSecretName Secret Name/Path to use for Cluster's Proxy Certificate. If left blank, will use certificate provided by the cluster. string false
syncerCertificateSecretName Secret Name/Path to use for Cluster's Syncer Certificate. If left blank, will use certificate provided by the cluster. string false
Back to Table of Contents

RedisEnterpriseCluster

RedisEnterpriseCluster is the Schema for the redisenterpriseclusters API

Field Description Scheme Default Value Required
metadata metav1.ObjectMeta false
spec RedisEnterpriseClusterSpec false
status RedisEnterpriseClusterStatus false
Back to Table of Contents

RedisEnterpriseClusterList

RedisEnterpriseClusterList contains a list of RedisEnterpriseCluster

Field Description Scheme Default Value Required
metadata metav1.ListMeta false
items []RedisEnterpriseCluster true
Back to Table of Contents

RedisEnterpriseClusterSpec

RedisEnterpriseClusterSpec defines the desired state of RedisEnterpriseCluster

Field Description Scheme Default Value Required
nodes Number of Redis Enterprise nodes (pods) int32 3 true
serviceAccountName Name of the service account to use string RedisEnterpriseCluster's name false
createServiceAccount Whether to create service account *bool True false
uiServiceType Type of service used to expose Redis Enterprise UI (https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) *v1.ServiceType ClusterIP false
uiAnnotations Annotations for Redis Enterprise UI service map[string]string false
servicesRiggerSpec Specification for service rigger *ServicesRiggerConfigurationSpec false
redisEnterpriseAdditionalPodSpecAttributes ADVANCED USAGE USE AT YOUR OWN RISK - specify pod attributes that are required for the statefulset - Redis Enterprise pods. Pod attributes managed by the operator might override these settings. Also make sure the attributes are supported by the K8s version running on the cluster - the operator does not validate that. *v1.PodSpec false
license Redis Enterprise License string Empty string which is a Trial Mode licesne false
licenseSecretName K8s secret or Vault Secret Name/Path to use for Cluster License. When left blank, the license is read from the "license" field. Note that you can't specify non-empty values in both "license" and "licenseSecretName", only one of these fields can be used to pass the license string. The license needs to be stored under the key "license". string Empty string false
username Username for the admin user of Redis Enterprise string [email protected] false
nodeSelector Selector for nodes that could fit Redis Enterprise pod *map[string]string false
redisEnterpriseImageSpec Specification for Redis Enterprise container image *ImageSpec the default Redis Enterprise image for this version false
redisEnterpriseServicesRiggerImageSpec Specification for Services Rigger container image *ImageSpec the default Services Rigger image for this version false
bootstrapperImageSpec Specification for Bootstrapper container image *ImageSpec the default Bootstrapper image for this version false
redisEnterpriseNodeResources Compute resource requirements for Redis Enterprise containers *v1.ResourceRequirements 2 CPUs and 4GB memory false
bootstrapperResources Compute resource requirements for bootstrapper containers *v1.ResourceRequirements 0.1 CPUs and 128Mi memory false
redisEnterpriseServicesRiggerResources Compute resource requirements for Services Rigger pod *v1.ResourceRequirements 0.5 CPU and 0.5GB memory false
pullSecrets PullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images. If specified, these secrets will be passed to individual puller implementations for them to use. More info: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ []v1.LocalObjectReference empty false
persistentSpec Specification for Redis Enterprise Cluster persistence PersistentConfigurationSpec false
sideContainersSpec Specification for a side container that will be added to each Redis Enterprise pod []v1.Container empty false
extraLabels Labels that the user defines for their convenience. Note that Persistent Volume Claims would only be labeled with the extra labels specified during the cluster's creation (modifying this field when the cluster is running won't affect the Persistent Volume map[string]string empty false
podAntiAffinity Override for the default anti-affinity rules of the Redis Enterprise pods *v1.PodAntiAffinity false
antiAffinityAdditionalTopologyKeys Additional antiAffinity terms in order to support installation on different zones/vcenters []string false
activeActive Specification for ActiveActive setup. At most one of ingressOrRouteSpec or activeActive fields can be set at the same time. *ActiveActive false
upgradeSpec Specification for upgrades of Redis Enterprise *UpgradeSpec false
podSecurityPolicyName Name of pod security policy to use on pods See https://kubernetes.io/docs/concepts/policy/pod-security-policy/ string empty false
enforceIPv4 Sets ENFORCE_IPV4 environment variable *bool False false
clusterRecovery ClusterRecovery initiates cluster recovery when set to true. Note that this field is cleared automatically after the cluster is recovered *bool false
rackAwarenessNodeLabel Node label that specifies rack ID - if specified, will create rack aware cluster. Rack awareness requires node label must exist on all nodes. Additionally, operator needs a special cluster role with permission to list nodes. string false
priorityClassName Adds the priority class to pods managed by the operator string false
volumes additional volumes []v1.Volume false
redisEnterpriseVolumeMounts additional volume mounts within the redis enterprise containers []v1.VolumeMount false
podAnnotations pod annotations map[string]string false
podTolerations Tolerations that are added to all managed pods. for more information: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ []v1.Toleration empty false
slaveHA Slave high availability mechanism configuration. *SlaveHA false
clusterCredentialSecretName Secret Name/Path to use for Cluster Credentials. To be used only if ClusterCredentialSecretType is vault. If left blank, will use cluster name. string false
clusterCredentialSecretType Type of Secret to use for ClusterCredential: vault, kubernetes,... If left blank, will default to kubernetes secrets string true
clusterCredentialSecretRole Used only if ClusterCredentialSecretType is vault, to define vault role to be used. If blank, defaults to "redis-enterprise-rec" string true
vaultCASecret K8s secret name containing Vault's CA cert - defaults to "vault-ca-cert" string false
redisEnterpriseServicesConfiguration RS Cluster optional services settings. Note that when disabling the CM Server service, the cluster's UI Service will be removed from the k8s cluster *RedisEnterpriseServicesConfiguration false
dataInternodeEncryption Internode encryption (INE) cluster wide policy. An optional boolean setting. Specifies if INE should be on/off for new created REDBs. May be overridden for specific REDB via similar setting, please view the similar setting for REDB for more info. *bool false
redisUpgradePolicy Redis upgrade policy to be set on the Redis Enterprise Cluster. Possible values: major/latest This value is used by the cluster to choose the Redis version of the database when an upgrade is performed. The Redis Enterprise Cluster includes multiple versions of OSS Redis that can be used for databases. string false
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 false
podStartingPolicy Mitigation setting for STS pods stuck in "ContainerCreating" *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 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 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 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 false
Back to Table of Contents

RedisEnterpriseClusterStatus

RedisEnterpriseClusterStatus defines the observed state of RedisEnterpriseCluster

Field Description Scheme Default Value Required
state State of Redis Enterprise Cluster ClusterState true
specStatus Validity of Redis Enterprise Cluster specification SpecStatusName true
modules Modules Available in Cluster []Module false
licenseStatus State of the Cluster's License *LicenseStatus false
bundledDatabaseVersions Versions of open source databases bundled by Redis Enterprise Software - please note that in order to use a specific version it should be supported by the ‘upgradePolicy’ - ‘major’ or ‘latest’ according to the desired version (major/minor) []*BundledDatabaseVersions false
ocspStatus An API object that represents the cluster's OCSP status *OcspStatus false
Back to Table of Contents

RedisEnterpriseServicesConfiguration

Field Description Scheme Default Value Required
mdnsServer *MdnsServer false
cmServer *CmServer false
statsArchiver *StatsArchiver false
saslauthd *Saslauthd false
pdnsServer *PdnsServer false
crdbCoordinator *CrdbCoordinator false
crdbWorker *CrdbWorker false
Back to Table of Contents

RedisOnFlashSpec

RedisOnFlashSpec contains all the parameters needed to configure in order to enable creation of redis on flash databases.

Field Description Scheme Default Value Required
enabled Indicates whether RoF is turned on or not. bool true
flashStorageEngine The type of DB engine used on flash. Currently the only supported value is "rocksdb", but this will change in the future. RedisOnFlashsStorageEngine true
storageClassName Used to identify the storage class name of the corresponding volume claim template. string true
flashDiskSize Required flash disk size. resource.Quantity false
Back to Table of Contents

Saslauthd

Field Description Scheme Default Value Required
operatingMode Whether to enable/disable the saslauthd service OperatingMode true
Back to Table of Contents

ServicesRiggerConfigurationSpec

Specification for service rigger

Field Description Scheme Default Value Required
databaseServiceType Service types for access to databases. should be a comma separated list. The possible values are cluster_ip, headless and load_balancer. string cluster_ip,headless true
serviceNaming string true
extraEnvVars []v1.EnvVar false
servicesRiggerAdditionalPodSpecAttributes ADVANCED USAGE USE AT YOUR OWN RISK - specify pod attributes that are required for the rigger deployment pod. Pod attributes managed by the operator might override these settings (Containers, serviceAccountName, podTolerations, ImagePullSecrets, nodeSelector, PriorityClassName, PodSecurityContext). Also make sure the attributes are supported by the K8s version running on the cluster - the operator does not validate that. *v1.PodSpec false
Back to Table of Contents

SlaveHA

Field Description Scheme Default Value Required
slaveHAGracePeriod Time in seconds between when a node fails, and when slave high availability mechanism starts relocating shards. If set to 0, will not affect cluster configuration. *uint32 1800 true
Back to Table of Contents

StartingPolicy

Field Description Scheme Default Value Required
enabled Whether to detect and attempt to mitigate pod startup issues *bool False true
startingThresholdSeconds Time in seconds to wait for a pod to be stuck while starting up before action is taken. If set to 0, will be treated as if disabled. *uint32 540 true
Back to Table of Contents

StatsArchiver

Field Description Scheme Default Value Required
operatingMode Whether to enable/disable the stats archiver service OperatingMode true
Back to Table of Contents

UpgradeSpec

Specification for upgrades of Redis Enterprise

Field Description Scheme Default Value Required
autoUpgradeRedisEnterprise Whether to upgrade Redis Enterprise automatically when operator is upgraded bool true
Back to Table of Contents

Enums

ClusterState

State of the Redis Enterprise Cluster

Value Description
"PendingCreation" ClusterPendingCreate means cluster is not created yet
"BootstrappingFirstPod" Bootstrapping first pod
"Initializing" ClusterInitializing means the cluster was created and nodes are in the process of joining the cluster
"RecoveryReset" ClusterRecoveryReset resets the cluster by deleting all pods
"RecoveringFirstPod" ClusterRecoveringFirstPod means the cluster entered cluster recovery
"Running" ClusterRunning means the cluster's sub-resources have been created and are in running state
"Error" ClusterError means the there was an error when starting creating/updating the one or more of the cluster's resources
"Invalid" ClusterConfigurationInvalid means an invalid spec was applied
"InvalidUpgrade" ClusterInvalidUpgrade means an upgrade is not possible at this time
"Upgrade" ClusterUpgrade
"Deleting" ClusterDeleting
"ClusterRecreating" ClusterRecreating - similar to ClusterRecoveryReset - delete all pods before recreation of the cluster.
Back to Table of Contents

IngressMethod

Used to distinguish between different platforms implementation

Value Description
"openShiftRoute" Routes are only usable in OpenShift
"ingress" See https://kubernetes.io/docs/concepts/services-networking/ingress/
"istio" Ingress implemented via Istio
Back to Table of Contents

OperatingMode

Value Description
"enabled"
"disabled"
Back to Table of Contents

RedisOnFlashsStorageEngine

Value Description
"rocksdb"
Back to Table of Contents

SpecStatusName

Whether the REC specification is valid (custom resource)

Value Description
"Invalid" Specification status invalid
"Valid" Specification status valid
Back to Table of Contents