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 }