github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/k8s/statefulset.go (about)

     1  package k8s
     2  
     3  import (
     4  	v1 "k8s.io/api/apps/v1"
     5  	"k8s.io/api/apps/v1beta1"
     6  	"k8s.io/api/apps/v1beta2"
     7  )
     8  
     9  // By default, StatefulSets use OrderedPodManagement.
    10  //
    11  // This is a bad policy for development. If the pod goes into a crash loop,
    12  // the StatefulSet operator will get wedged and require manual intervention.
    13  // See:
    14  // https://github.com/tilt-dev/tilt/issues/1962
    15  //
    16  // Tilt should change all statefulsets to use a parallel policy.
    17  func InjectParallelPodManagementPolicy(entity K8sEntity) K8sEntity {
    18  	switch entity.Obj.(type) {
    19  	case *v1.StatefulSet:
    20  		entity = entity.DeepCopy()
    21  		entity.Obj.(*v1.StatefulSet).Spec.PodManagementPolicy = v1.ParallelPodManagement
    22  		return entity
    23  	case *v1beta1.StatefulSet:
    24  		entity = entity.DeepCopy()
    25  		entity.Obj.(*v1beta1.StatefulSet).Spec.PodManagementPolicy = v1beta1.ParallelPodManagement
    26  		return entity
    27  	case *v1beta2.StatefulSet:
    28  		entity = entity.DeepCopy()
    29  		entity.Obj.(*v1beta2.StatefulSet).Spec.PodManagementPolicy = v1beta2.ParallelPodManagement
    30  		return entity
    31  	}
    32  	return entity
    33  }