Skip kube-api-access Volume Comparison (#550)

* Skip kube-api-access volume comparison

This hotfixes the incompatibility between the Operator and Kubernetes
1.21.

Kubernetes 1.21 started adding a new volume named
"kube-api-access-<random-suffix>" and that broke the comparison
function and resulted in an infinite loop.
This commit is contained in:
Piotr Ryba 2021-04-28 14:23:00 +02:00 committed by GitHub
parent 0d118bf046
commit 223119b62d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 4 deletions

View File

@ -289,16 +289,25 @@ func CompareContainerVolumeMounts(expected corev1.Container, actual corev1.Conta
// compareVolumes returns true if Jenkins pod and Jenkins CR volumes are the same
func (r *JenkinsBaseConfigurationReconciler) compareVolumes(actualPod corev1.Pod) bool {
var withoutServiceAccount []corev1.Volume
var toCompare []corev1.Volume
for _, volume := range actualPod.Spec.Volumes {
if !strings.HasPrefix(volume.Name, actualPod.Spec.ServiceAccountName) {
withoutServiceAccount = append(withoutServiceAccount, volume)
// filter out service account
if strings.HasPrefix(volume.Name, actualPod.Spec.ServiceAccountName) {
continue
}
// hotfix for k8s 1.21 - filter out kube-api-access-<random-suffix>
const kubeAPIAccessPrefix = "kube-api-access-"
if strings.HasPrefix(volume.Name, kubeAPIAccessPrefix) {
continue
}
toCompare = append(toCompare, volume)
}
return reflect.DeepEqual(
append(resources.GetJenkinsMasterPodBaseVolumes(r.Configuration.Jenkins), r.Configuration.Jenkins.Spec.Master.Volumes...),
withoutServiceAccount,
toCompare,
)
}