Documentation ¶
Index ¶
- func GetRedisName(rf *redisfailoverv1.RedisFailover) string
- func GetRedisReadinessName(rf *redisfailoverv1.RedisFailover) string
- func GetRedisShutdownConfigMapName(rf *redisfailoverv1.RedisFailover) string
- func GetRedisShutdownName(rf *redisfailoverv1.RedisFailover) string
- func GetSentinelName(rf *redisfailoverv1.RedisFailover) string
- type RedisFailoverCheck
- type RedisFailoverChecker
- func (r *RedisFailoverChecker) CheckAllSlavesFromMaster(master string, rf *redisfailoverv1.RedisFailover) error
- func (r *RedisFailoverChecker) CheckRedisNumber(rf *redisfailoverv1.RedisFailover) error
- func (r *RedisFailoverChecker) CheckRedisSlavesReady(ip string, rFailover *redisfailoverv1.RedisFailover) (bool, error)
- func (r *RedisFailoverChecker) CheckSentinelMonitor(sentinel string, monitor ...string) error
- func (r *RedisFailoverChecker) CheckSentinelNumber(rf *redisfailoverv1.RedisFailover) error
- func (r *RedisFailoverChecker) CheckSentinelNumberInMemory(sentinel string, rf *redisfailoverv1.RedisFailover) error
- func (r *RedisFailoverChecker) CheckSentinelSlavesNumberInMemory(sentinel string, rf *redisfailoverv1.RedisFailover) error
- func (r *RedisFailoverChecker) GetMasterIP(rf *redisfailoverv1.RedisFailover) (string, error)
- func (r *RedisFailoverChecker) GetMinimumRedisPodTime(rf *redisfailoverv1.RedisFailover) (time.Duration, error)
- func (r *RedisFailoverChecker) GetNumberMasters(rf *redisfailoverv1.RedisFailover) (int, error)
- func (r *RedisFailoverChecker) GetRedisRevisionHash(podName string, rFailover *redisfailoverv1.RedisFailover) (string, error)
- func (r *RedisFailoverChecker) GetRedisesIPs(rf *redisfailoverv1.RedisFailover) ([]string, error)
- func (r *RedisFailoverChecker) GetRedisesMasterPod(rFailover *redisfailoverv1.RedisFailover) (string, error)
- func (r *RedisFailoverChecker) GetRedisesSlavesPods(rf *redisfailoverv1.RedisFailover) ([]string, error)
- func (r *RedisFailoverChecker) GetSentinelsIPs(rf *redisfailoverv1.RedisFailover) ([]string, error)
- func (r *RedisFailoverChecker) GetStatefulSetUpdateRevision(rFailover *redisfailoverv1.RedisFailover) (string, error)
- type RedisFailoverClient
- type RedisFailoverHeal
- type RedisFailoverHealer
- func (r *RedisFailoverHealer) DeletePod(podName string, rFailover *redisfailoverv1.RedisFailover) error
- func (r *RedisFailoverHealer) MakeMaster(ip string, rf *redisfailoverv1.RedisFailover) error
- func (r *RedisFailoverHealer) NewSentinelMonitor(ip string, monitor string, rf *redisfailoverv1.RedisFailover) error
- func (r *RedisFailoverHealer) NewSentinelMonitorWithPort(ip string, monitor string, monitorPort string, ...) error
- func (r *RedisFailoverHealer) RestoreSentinel(ip string) error
- func (r *RedisFailoverHealer) SetExternalMasterOnAll(masterIP, masterPort string, rf *redisfailoverv1.RedisFailover) error
- func (r *RedisFailoverHealer) SetMasterOnAll(masterIP string, rf *redisfailoverv1.RedisFailover) error
- func (r *RedisFailoverHealer) SetOldestAsMaster(rf *redisfailoverv1.RedisFailover) error
- func (r *RedisFailoverHealer) SetRedisCustomConfig(ip string, rf *redisfailoverv1.RedisFailover) error
- func (r *RedisFailoverHealer) SetSentinelCustomConfig(ip string, rf *redisfailoverv1.RedisFailover) error
- type RedisFailoverKubeClient
- func (r *RedisFailoverKubeClient) EnsureNotPresentRedisService(rf *redisfailoverv1.RedisFailover) error
- func (r *RedisFailoverKubeClient) EnsureRedisConfigMap(rf *redisfailoverv1.RedisFailover, labels map[string]string, ...) error
- func (r *RedisFailoverKubeClient) EnsureRedisReadinessConfigMap(rf *redisfailoverv1.RedisFailover, labels map[string]string, ...) error
- func (r *RedisFailoverKubeClient) EnsureRedisService(rf *redisfailoverv1.RedisFailover, labels map[string]string, ...) error
- func (r *RedisFailoverKubeClient) EnsureRedisShutdownConfigMap(rf *redisfailoverv1.RedisFailover, labels map[string]string, ...) error
- func (r *RedisFailoverKubeClient) EnsureRedisStatefulset(rf *redisfailoverv1.RedisFailover, labels map[string]string, ...) error
- func (r *RedisFailoverKubeClient) EnsureSentinelConfigMap(rf *redisfailoverv1.RedisFailover, labels map[string]string, ...) error
- func (r *RedisFailoverKubeClient) EnsureSentinelDeployment(rf *redisfailoverv1.RedisFailover, labels map[string]string, ...) error
- func (r *RedisFailoverKubeClient) EnsureSentinelService(rf *redisfailoverv1.RedisFailover, labels map[string]string, ...) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetRedisName ¶
func GetRedisName(rf *redisfailoverv1.RedisFailover) string
GetRedisName returns the name for redis resources
func GetRedisReadinessName ¶
func GetRedisReadinessName(rf *redisfailoverv1.RedisFailover) string
GetRedisReadinessName returns the name for redis resources
func GetRedisShutdownConfigMapName ¶
func GetRedisShutdownConfigMapName(rf *redisfailoverv1.RedisFailover) string
GetRedisShutdownConfigMapName returns the name for redis configmap
func GetRedisShutdownName ¶
func GetRedisShutdownName(rf *redisfailoverv1.RedisFailover) string
GetRedisShutdownName returns the name for redis resources
func GetSentinelName ¶
func GetSentinelName(rf *redisfailoverv1.RedisFailover) string
GetSentinelName returns the name for sentinel resources
Types ¶
type RedisFailoverCheck ¶
type RedisFailoverCheck interface { CheckRedisNumber(rFailover *redisfailoverv1.RedisFailover) error CheckSentinelNumber(rFailover *redisfailoverv1.RedisFailover) error CheckAllSlavesFromMaster(master string, rFailover *redisfailoverv1.RedisFailover) error CheckSentinelNumberInMemory(sentinel string, rFailover *redisfailoverv1.RedisFailover) error CheckSentinelSlavesNumberInMemory(sentinel string, rFailover *redisfailoverv1.RedisFailover) error CheckSentinelMonitor(sentinel string, monitor ...string) error GetMasterIP(rFailover *redisfailoverv1.RedisFailover) (string, error) GetNumberMasters(rFailover *redisfailoverv1.RedisFailover) (int, error) GetRedisesIPs(rFailover *redisfailoverv1.RedisFailover) ([]string, error) GetSentinelsIPs(rFailover *redisfailoverv1.RedisFailover) ([]string, error) GetMinimumRedisPodTime(rFailover *redisfailoverv1.RedisFailover) (time.Duration, error) GetRedisesSlavesPods(rFailover *redisfailoverv1.RedisFailover) ([]string, error) GetRedisesMasterPod(rFailover *redisfailoverv1.RedisFailover) (string, error) GetStatefulSetUpdateRevision(rFailover *redisfailoverv1.RedisFailover) (string, error) GetRedisRevisionHash(podName string, rFailover *redisfailoverv1.RedisFailover) (string, error) CheckRedisSlavesReady(slaveIP string, rFailover *redisfailoverv1.RedisFailover) (bool, error) }
RedisFailoverCheck defines the interface able to check the correct status of a redis failover
type RedisFailoverChecker ¶
type RedisFailoverChecker struct {
// contains filtered or unexported fields
}
RedisFailoverChecker is our implementation of RedisFailoverCheck interface
func NewRedisFailoverChecker ¶
func NewRedisFailoverChecker(k8sService k8s.Services, redisClient redis.Client, logger log.Logger) *RedisFailoverChecker
NewRedisFailoverChecker creates an object of the RedisFailoverChecker struct
func (*RedisFailoverChecker) CheckAllSlavesFromMaster ¶
func (r *RedisFailoverChecker) CheckAllSlavesFromMaster(master string, rf *redisfailoverv1.RedisFailover) error
CheckAllSlavesFromMaster controlls that all slaves have the same master (the real one)
func (*RedisFailoverChecker) CheckRedisNumber ¶
func (r *RedisFailoverChecker) CheckRedisNumber(rf *redisfailoverv1.RedisFailover) error
CheckRedisNumber controlls that the number of deployed redis is the same than the requested on the spec
func (*RedisFailoverChecker) CheckRedisSlavesReady ¶
func (r *RedisFailoverChecker) CheckRedisSlavesReady(ip string, rFailover *redisfailoverv1.RedisFailover) (bool, error)
CheckRedisSlavesReady returns true if the slave is ready (sync, connected, etc)
func (*RedisFailoverChecker) CheckSentinelMonitor ¶
func (r *RedisFailoverChecker) CheckSentinelMonitor(sentinel string, monitor ...string) error
CheckSentinelMonitor controls if the sentinels are monitoring the expected master
func (*RedisFailoverChecker) CheckSentinelNumber ¶
func (r *RedisFailoverChecker) CheckSentinelNumber(rf *redisfailoverv1.RedisFailover) error
CheckSentinelNumber controlls that the number of deployed sentinel is the same than the requested on the spec
func (*RedisFailoverChecker) CheckSentinelNumberInMemory ¶
func (r *RedisFailoverChecker) CheckSentinelNumberInMemory(sentinel string, rf *redisfailoverv1.RedisFailover) error
CheckSentinelNumberInMemory controls that the provided sentinel has only the living sentinels on its memory.
func (*RedisFailoverChecker) CheckSentinelSlavesNumberInMemory ¶
func (r *RedisFailoverChecker) CheckSentinelSlavesNumberInMemory(sentinel string, rf *redisfailoverv1.RedisFailover) error
CheckSentinelSlavesNumberInMemory controls that the provided sentinel has only the expected slaves number.
func (*RedisFailoverChecker) GetMasterIP ¶
func (r *RedisFailoverChecker) GetMasterIP(rf *redisfailoverv1.RedisFailover) (string, error)
GetMasterIP connects to all redis and returns the master of the redis failover
func (*RedisFailoverChecker) GetMinimumRedisPodTime ¶
func (r *RedisFailoverChecker) GetMinimumRedisPodTime(rf *redisfailoverv1.RedisFailover) (time.Duration, error)
GetMinimumRedisPodTime returns the minimum time a pod is alive
func (*RedisFailoverChecker) GetNumberMasters ¶
func (r *RedisFailoverChecker) GetNumberMasters(rf *redisfailoverv1.RedisFailover) (int, error)
GetNumberMasters returns the number of redis nodes that are working as a master
func (*RedisFailoverChecker) GetRedisRevisionHash ¶
func (r *RedisFailoverChecker) GetRedisRevisionHash(podName string, rFailover *redisfailoverv1.RedisFailover) (string, error)
GetRedisRevisionHash returns the statefulset uid for the pod
func (*RedisFailoverChecker) GetRedisesIPs ¶
func (r *RedisFailoverChecker) GetRedisesIPs(rf *redisfailoverv1.RedisFailover) ([]string, error)
GetRedisesIPs returns the IPs of the Redis nodes
func (*RedisFailoverChecker) GetRedisesMasterPod ¶
func (r *RedisFailoverChecker) GetRedisesMasterPod(rFailover *redisfailoverv1.RedisFailover) (string, error)
GetRedisesMasterPod returns pods names of the Redis slave nodes
func (*RedisFailoverChecker) GetRedisesSlavesPods ¶
func (r *RedisFailoverChecker) GetRedisesSlavesPods(rf *redisfailoverv1.RedisFailover) ([]string, error)
GetRedisesSlavesPods returns pods names of the Redis slave nodes
func (*RedisFailoverChecker) GetSentinelsIPs ¶
func (r *RedisFailoverChecker) GetSentinelsIPs(rf *redisfailoverv1.RedisFailover) ([]string, error)
GetSentinelsIPs returns the IPs of the Sentinel nodes
func (*RedisFailoverChecker) GetStatefulSetUpdateRevision ¶
func (r *RedisFailoverChecker) GetStatefulSetUpdateRevision(rFailover *redisfailoverv1.RedisFailover) (string, error)
GetStatefulSetUpdateRevision returns current version for the statefulSet If the label don't exists, we return an empty value and no error, so previous versions don't break
type RedisFailoverClient ¶
type RedisFailoverClient interface { EnsureSentinelService(rFailover *redisfailoverv1.RedisFailover, labels map[string]string, ownerRefs []metav1.OwnerReference) error EnsureSentinelConfigMap(rFailover *redisfailoverv1.RedisFailover, labels map[string]string, ownerRefs []metav1.OwnerReference) error EnsureSentinelDeployment(rFailover *redisfailoverv1.RedisFailover, labels map[string]string, ownerRefs []metav1.OwnerReference) error EnsureRedisStatefulset(rFailover *redisfailoverv1.RedisFailover, labels map[string]string, ownerRefs []metav1.OwnerReference) error EnsureRedisService(rFailover *redisfailoverv1.RedisFailover, labels map[string]string, ownerRefs []metav1.OwnerReference) error EnsureRedisShutdownConfigMap(rFailover *redisfailoverv1.RedisFailover, labels map[string]string, ownerRefs []metav1.OwnerReference) error EnsureRedisReadinessConfigMap(rFailover *redisfailoverv1.RedisFailover, labels map[string]string, ownerRefs []metav1.OwnerReference) error EnsureRedisConfigMap(rFailover *redisfailoverv1.RedisFailover, labels map[string]string, ownerRefs []metav1.OwnerReference) error EnsureNotPresentRedisService(rFailover *redisfailoverv1.RedisFailover) error }
RedisFailoverClient has the minimumm methods that a Redis failover controller needs to satisfy in order to talk with K8s
type RedisFailoverHeal ¶
type RedisFailoverHeal interface { MakeMaster(ip string, rFailover *redisfailoverv1.RedisFailover) error SetOldestAsMaster(rFailover *redisfailoverv1.RedisFailover) error SetMasterOnAll(masterIP string, rFailover *redisfailoverv1.RedisFailover) error SetExternalMasterOnAll(masterIP string, masterPort string, rFailover *redisfailoverv1.RedisFailover) error NewSentinelMonitor(ip string, monitor string, rFailover *redisfailoverv1.RedisFailover) error NewSentinelMonitorWithPort(ip string, monitor string, port string, rFailover *redisfailoverv1.RedisFailover) error RestoreSentinel(ip string) error SetSentinelCustomConfig(ip string, rFailover *redisfailoverv1.RedisFailover) error SetRedisCustomConfig(ip string, rFailover *redisfailoverv1.RedisFailover) error DeletePod(podName string, rFailover *redisfailoverv1.RedisFailover) error }
RedisFailoverHeal defines the interface able to fix the problems on the redis failovers
type RedisFailoverHealer ¶
type RedisFailoverHealer struct {
// contains filtered or unexported fields
}
RedisFailoverHealer is our implementation of RedisFailoverCheck interface
func NewRedisFailoverHealer ¶
func NewRedisFailoverHealer(k8sService k8s.Services, redisClient redis.Client, logger log.Logger) *RedisFailoverHealer
NewRedisFailoverHealer creates an object of the RedisFailoverChecker struct
func (*RedisFailoverHealer) DeletePod ¶
func (r *RedisFailoverHealer) DeletePod(podName string, rFailover *redisfailoverv1.RedisFailover) error
DeletePod delete a failing pod so kubernetes relaunch it again
func (*RedisFailoverHealer) MakeMaster ¶
func (r *RedisFailoverHealer) MakeMaster(ip string, rf *redisfailoverv1.RedisFailover) error
func (*RedisFailoverHealer) NewSentinelMonitor ¶
func (r *RedisFailoverHealer) NewSentinelMonitor(ip string, monitor string, rf *redisfailoverv1.RedisFailover) error
NewSentinelMonitor changes the master that Sentinel has to monitor
func (*RedisFailoverHealer) NewSentinelMonitorWithPort ¶
func (r *RedisFailoverHealer) NewSentinelMonitorWithPort(ip string, monitor string, monitorPort string, rf *redisfailoverv1.RedisFailover) error
NewSentinelMonitorWithPort changes the master that Sentinel has to monitor by the provided IP and Port
func (*RedisFailoverHealer) RestoreSentinel ¶
func (r *RedisFailoverHealer) RestoreSentinel(ip string) error
RestoreSentinel clear the number of sentinels on memory
func (*RedisFailoverHealer) SetExternalMasterOnAll ¶
func (r *RedisFailoverHealer) SetExternalMasterOnAll(masterIP, masterPort string, rf *redisfailoverv1.RedisFailover) error
SetExternalMasterOnAll puts all redis nodes as a slave of a given master outside of the current RedisFailover instance
func (*RedisFailoverHealer) SetMasterOnAll ¶
func (r *RedisFailoverHealer) SetMasterOnAll(masterIP string, rf *redisfailoverv1.RedisFailover) error
SetMasterOnAll puts all redis nodes as a slave of a given master
func (*RedisFailoverHealer) SetOldestAsMaster ¶
func (r *RedisFailoverHealer) SetOldestAsMaster(rf *redisfailoverv1.RedisFailover) error
SetOldestAsMaster puts all redis to the same master, choosen by order of appearance
func (*RedisFailoverHealer) SetRedisCustomConfig ¶
func (r *RedisFailoverHealer) SetRedisCustomConfig(ip string, rf *redisfailoverv1.RedisFailover) error
SetRedisCustomConfig will call redis to set the configuration given in config
func (*RedisFailoverHealer) SetSentinelCustomConfig ¶
func (r *RedisFailoverHealer) SetSentinelCustomConfig(ip string, rf *redisfailoverv1.RedisFailover) error
SetSentinelCustomConfig will call sentinel to set the configuration given in config
type RedisFailoverKubeClient ¶
type RedisFailoverKubeClient struct { K8SService k8s.Services // contains filtered or unexported fields }
RedisFailoverKubeClient implements the required methods to talk with kubernetes
func NewRedisFailoverKubeClient ¶
func NewRedisFailoverKubeClient(k8sService k8s.Services, logger log.Logger) *RedisFailoverKubeClient
NewRedisFailoverKubeClient creates a new RedisFailoverKubeClient
func (*RedisFailoverKubeClient) EnsureNotPresentRedisService ¶
func (r *RedisFailoverKubeClient) EnsureNotPresentRedisService(rf *redisfailoverv1.RedisFailover) error
EnsureNotPresentRedisService makes sure the redis service is not present
func (*RedisFailoverKubeClient) EnsureRedisConfigMap ¶
func (r *RedisFailoverKubeClient) EnsureRedisConfigMap(rf *redisfailoverv1.RedisFailover, labels map[string]string, ownerRefs []metav1.OwnerReference) error
EnsureRedisConfigMap makes sure the Redis ConfigMap exists
func (*RedisFailoverKubeClient) EnsureRedisReadinessConfigMap ¶
func (r *RedisFailoverKubeClient) EnsureRedisReadinessConfigMap(rf *redisfailoverv1.RedisFailover, labels map[string]string, ownerRefs []metav1.OwnerReference) error
EnsureRedisReadinessConfigMap makes sure the redis configmap with shutdown script exists
func (*RedisFailoverKubeClient) EnsureRedisService ¶
func (r *RedisFailoverKubeClient) EnsureRedisService(rf *redisfailoverv1.RedisFailover, labels map[string]string, ownerRefs []metav1.OwnerReference) error
EnsureRedisService makes sure the redis statefulset exists
func (*RedisFailoverKubeClient) EnsureRedisShutdownConfigMap ¶
func (r *RedisFailoverKubeClient) EnsureRedisShutdownConfigMap(rf *redisfailoverv1.RedisFailover, labels map[string]string, ownerRefs []metav1.OwnerReference) error
EnsureRedisShutdownConfigMap makes sure the redis configmap with shutdown script exists
func (*RedisFailoverKubeClient) EnsureRedisStatefulset ¶
func (r *RedisFailoverKubeClient) EnsureRedisStatefulset(rf *redisfailoverv1.RedisFailover, labels map[string]string, ownerRefs []metav1.OwnerReference) error
EnsureRedisStatefulset makes sure the redis statefulset exists in the desired state
func (*RedisFailoverKubeClient) EnsureSentinelConfigMap ¶
func (r *RedisFailoverKubeClient) EnsureSentinelConfigMap(rf *redisfailoverv1.RedisFailover, labels map[string]string, ownerRefs []metav1.OwnerReference) error
EnsureSentinelConfigMap makes sure the sentinel configmap exists
func (*RedisFailoverKubeClient) EnsureSentinelDeployment ¶
func (r *RedisFailoverKubeClient) EnsureSentinelDeployment(rf *redisfailoverv1.RedisFailover, labels map[string]string, ownerRefs []metav1.OwnerReference) error
EnsureSentinelDeployment makes sure the sentinel deployment exists in the desired state
func (*RedisFailoverKubeClient) EnsureSentinelService ¶
func (r *RedisFailoverKubeClient) EnsureSentinelService(rf *redisfailoverv1.RedisFailover, labels map[string]string, ownerRefs []metav1.OwnerReference) error
EnsureSentinelService makes sure the sentinel service exists