label has been added to the target pod to allow pod anti affinity
This commit is contained in:
parent
9ed5e3aea7
commit
92ea7f3872
@ -41,17 +41,25 @@ const (
|
|||||||
JobKind BackupType = "Job"
|
JobKind BackupType = "Job"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetTargetObjects(kind TargetKind) (targetObject client.Object, targetPodSpec *corev1.PodSpec) {
|
func GetTargetObjects(kind TargetKind) (targetObject client.Object, targetPodSpec *corev1.PodSpec, targetPodMeta *metav1.ObjectMeta) {
|
||||||
switch kind {
|
switch kind {
|
||||||
case Deployment:
|
case Deployment:
|
||||||
deployment := appsv1.Deployment{}
|
deployment := appsv1.Deployment{}
|
||||||
targetObject = &deployment
|
targetObject = &deployment
|
||||||
targetPodSpec = &deployment.Spec.Template.Spec
|
targetPodSpec = &deployment.Spec.Template.Spec
|
||||||
|
targetPodMeta = &deployment.Spec.Template.ObjectMeta
|
||||||
|
|
||||||
case StatefulSet:
|
case StatefulSet:
|
||||||
statefulSet := appsv1.StatefulSet{}
|
statefulSet := appsv1.StatefulSet{}
|
||||||
targetObject = &statefulSet
|
targetObject = &statefulSet
|
||||||
targetPodSpec = &statefulSet.Spec.Template.Spec
|
targetPodSpec = &statefulSet.Spec.Template.Spec
|
||||||
|
targetPodMeta = &statefulSet.Spec.Template.ObjectMeta
|
||||||
|
|
||||||
|
case Pod:
|
||||||
|
pod := corev1.Pod{}
|
||||||
|
targetObject = &pod
|
||||||
|
targetPodSpec = &pod.Spec
|
||||||
|
targetPodMeta = &pod.ObjectMeta
|
||||||
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
@ -60,6 +68,7 @@ func GetTargetObjects(kind TargetKind) (targetObject client.Object, targetPodSpe
|
|||||||
const (
|
const (
|
||||||
BACKUP_PREFIX_PATH = `backup`
|
BACKUP_PREFIX_PATH = `backup`
|
||||||
FORMOL_SHARED_VOLUME = `formol-shared`
|
FORMOL_SHARED_VOLUME = `formol-shared`
|
||||||
|
FORMOL_LABEL = `formol-target`
|
||||||
)
|
)
|
||||||
|
|
||||||
type Step struct {
|
type Step struct {
|
||||||
|
|||||||
@ -162,7 +162,7 @@ func (r *BackupConfigurationReconciler) DeleteSidecar(backupConf formolv1alpha1.
|
|||||||
}
|
}
|
||||||
r.Log.V(1).Info("Got Repository", "repo", repo)
|
r.Log.V(1).Info("Got Repository", "repo", repo)
|
||||||
for _, target := range backupConf.Spec.Targets {
|
for _, target := range backupConf.Spec.Targets {
|
||||||
targetObject, targetPodSpec := formolv1alpha1.GetTargetObjects(target.TargetKind)
|
targetObject, targetPodSpec, targetPodMeta := formolv1alpha1.GetTargetObjects(target.TargetKind)
|
||||||
if err := r.Get(r.Context, client.ObjectKey{
|
if err := r.Get(r.Context, client.ObjectKey{
|
||||||
Namespace: backupConf.Namespace,
|
Namespace: backupConf.Namespace,
|
||||||
Name: target.TargetName,
|
Name: target.TargetName,
|
||||||
@ -170,6 +170,9 @@ func (r *BackupConfigurationReconciler) DeleteSidecar(backupConf formolv1alpha1.
|
|||||||
r.Log.Error(err, "cannot get target", "target", target.TargetName)
|
r.Log.Error(err, "cannot get target", "target", target.TargetName)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if _, ok := targetPodMeta.Labels[formolv1alpha1.FORMOL_LABEL]; ok {
|
||||||
|
delete(targetPodMeta.Labels, formolv1alpha1.FORMOL_LABEL)
|
||||||
|
}
|
||||||
restoreContainers := []corev1.Container{}
|
restoreContainers := []corev1.Container{}
|
||||||
for _, container := range targetPodSpec.Containers {
|
for _, container := range targetPodSpec.Containers {
|
||||||
if container.Name == formolv1alpha1.SIDECARCONTAINER_NAME {
|
if container.Name == formolv1alpha1.SIDECARCONTAINER_NAME {
|
||||||
@ -219,7 +222,7 @@ func (r *BackupConfigurationReconciler) addSidecar(backupConf formolv1alpha1.Bac
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
r.Log.V(1).Info("Got Repository", "repo", repo)
|
r.Log.V(1).Info("Got Repository", "repo", repo)
|
||||||
targetObject, targetPodSpec := formolv1alpha1.GetTargetObjects(target.TargetKind)
|
targetObject, targetPodSpec, targetPodMeta := formolv1alpha1.GetTargetObjects(target.TargetKind)
|
||||||
if err := r.Get(r.Context, client.ObjectKey{
|
if err := r.Get(r.Context, client.ObjectKey{
|
||||||
Namespace: backupConf.Namespace,
|
Namespace: backupConf.Namespace,
|
||||||
Name: target.TargetName,
|
Name: target.TargetName,
|
||||||
@ -227,6 +230,9 @@ func (r *BackupConfigurationReconciler) addSidecar(backupConf formolv1alpha1.Bac
|
|||||||
r.Log.Error(err, "cannot get target", "target", target.TargetName)
|
r.Log.Error(err, "cannot get target", "target", target.TargetName)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if _, ok := targetPodMeta.Labels[formolv1alpha1.FORMOL_LABEL]; !ok {
|
||||||
|
targetPodMeta.Labels[formolv1alpha1.FORMOL_LABEL] = target.TargetName
|
||||||
|
}
|
||||||
hasSidecar := func(podSpec *corev1.PodSpec) int {
|
hasSidecar := func(podSpec *corev1.PodSpec) int {
|
||||||
for i, container := range podSpec.Containers {
|
for i, container := range podSpec.Containers {
|
||||||
if container.Name == formolv1alpha1.SIDECARCONTAINER_NAME {
|
if container.Name == formolv1alpha1.SIDECARCONTAINER_NAME {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user