add feature gate

This commit is contained in:
Daniel Vega-Myhre 2023-06-27 18:06:09 +00:00
parent 2176053415
commit a9afaa1eee
3 changed files with 17 additions and 2 deletions

View File

@ -1482,7 +1482,10 @@ func (jm *Controller) manageJob(ctx context.Context, job *batch.Job, activePods
if completionIndex != unknownCompletionIndex { if completionIndex != unknownCompletionIndex {
template = podTemplate.DeepCopy() template = podTemplate.DeepCopy()
addCompletionIndexAnnotation(template, completionIndex) addCompletionIndexAnnotation(template, completionIndex)
addCompletionIndexLabel(template, completionIndex)
if feature.DefaultFeatureGate.Enabled(features.PodIndexLabel) {
addCompletionIndexLabel(template, completionIndex)
}
template.Spec.Hostname = fmt.Sprintf("%s-%d", job.Name, completionIndex) template.Spec.Hostname = fmt.Sprintf("%s-%d", job.Name, completionIndex)
generateName = podGenerateNameWithIndex(job.Name, completionIndex) generateName = podGenerateNameWithIndex(job.Name, completionIndex)
} }

View File

@ -962,7 +962,9 @@ func checkIndexedJobPods(t *testing.T, control *controller.FakePodControl, wantI
gotIndexes := sets.New[int]() gotIndexes := sets.New[int]()
for _, p := range control.Templates { for _, p := range control.Templates {
checkJobCompletionEnvVariable(t, &p.Spec) checkJobCompletionEnvVariable(t, &p.Spec)
checkJobCompletionLabel(t, &p) if feature.DefaultFeatureGate.Enabled(features.PodIndexLabel) {
checkJobCompletionLabel(t, &p)
}
ix := getCompletionIndex(p.Annotations) ix := getCompletionIndex(p.Annotations)
if ix == -1 { if ix == -1 {
t.Errorf("Created pod %s didn't have completion index", p.Name) t.Errorf("Created pod %s didn't have completion index", p.Name)
@ -4395,6 +4397,7 @@ func TestFinalizersRemovedExpectations(t *testing.T) {
t.Errorf("Timeout waiting for expectations (-want, +got):\n%s", diff) t.Errorf("Timeout waiting for expectations (-want, +got):\n%s", diff)
} }
} }
func checkJobCompletionLabel(t *testing.T, p *v1.PodTemplateSpec) { func checkJobCompletionLabel(t *testing.T, p *v1.PodTemplateSpec) {
t.Helper() t.Helper()
labels := p.GetLabels() labels := p.GetLabels()

View File

@ -843,6 +843,13 @@ const (
// //
// Enables In-Place Pod Vertical Scaling // Enables In-Place Pod Vertical Scaling
InPlacePodVerticalScaling featuregate.Feature = "InPlacePodVerticalScaling" InPlacePodVerticalScaling featuregate.Feature = "InPlacePodVerticalScaling"
// owner: @danielvegamyhre
// kep: https://kep.k8s.io/4017
// beta: v1.28
//
// Set pod completion index as a pod label for Indexed Jobs and StatefulSets.
PodIndexLabel featuregate.Feature = "PodIndexLabel"
) )
func init() { func init() {
@ -1072,6 +1079,8 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS
InPlacePodVerticalScaling: {Default: false, PreRelease: featuregate.Alpha}, InPlacePodVerticalScaling: {Default: false, PreRelease: featuregate.Alpha},
PodIndexLabel: {Default: true, PreRelease: featuregate.Beta},
// inherited features from generic apiserver, relisted here to get a conflict if it is changed // inherited features from generic apiserver, relisted here to get a conflict if it is changed
// unintentionally on either side: // unintentionally on either side: