Skip to content

Commit 604d329

Browse files
authored
Merge pull request kubernetes-sigs#4918 from ianedwards/main
🐛 fix: separate control plane logging and vpc config updates
2 parents b2fae56 + 50b90cf commit 604d329

File tree

1 file changed

+34
-11
lines changed

1 file changed

+34
-11
lines changed

pkg/cloud/services/eks/cluster.go

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,10 @@ func (s *Service) reconcileCluster(ctx context.Context) error {
121121
return errors.Wrap(err, "failed reconciling cluster config")
122122
}
123123

124+
if err := s.reconcileLogging(cluster.Logging); err != nil {
125+
return errors.Wrap(err, "failed reconciling logging")
126+
}
127+
124128
if err := s.reconcileEKSEncryptionConfig(cluster.EncryptionConfig); err != nil {
125129
return errors.Wrap(err, "failed reconciling eks encryption config")
126130
}
@@ -230,7 +234,7 @@ func makeEksEncryptionConfigs(encryptionConfig *ekscontrolplanev1.EncryptionConf
230234
if encryptionConfig == nil {
231235
return cfg
232236
}
233-
//TODO: change EncryptionConfig so that provider and resources are required if encruptionConfig is specified
237+
// TODO: change EncryptionConfig so that provider and resources are required if encruptionConfig is specified
234238
if encryptionConfig.Provider == nil || len(*encryptionConfig.Provider) == 0 {
235239
return cfg
236240
}
@@ -312,8 +316,8 @@ func makeEksLogging(loggingSpec *ekscontrolplanev1.ControlPlaneLoggingSpec) *eks
312316
if loggingSpec == nil {
313317
return nil
314318
}
315-
var on = true
316-
var off = false
319+
on := true
320+
off := false
317321
var enabledTypes []string
318322
var disabledTypes []string
319323

@@ -421,7 +425,7 @@ func (s *Service) createCluster(eksClusterName string) (*eks.Cluster, error) {
421425
conditions.MarkTrue(s.scope.ControlPlane, ekscontrolplanev1.EKSControlPlaneCreatingCondition)
422426
record.Eventf(s.scope.ControlPlane, "InitiatedCreateEKSControlPlane", "Initiated creation of a new EKS control plane %s", s.scope.KubernetesClusterName())
423427
return true, nil
424-
}, awserrors.ResourceNotFound); err != nil { //TODO: change the error that can be retried
428+
}, awserrors.ResourceNotFound); err != nil { // TODO: change the error that can be retried
425429
record.Warnf(s.scope.ControlPlane, "FailedCreateEKSControlPlane", "Failed to initiate creation of a new EKS control plane: %v", err)
426430
return nil, errors.Wrapf(err, "failed to create EKS cluster")
427431
}
@@ -457,11 +461,6 @@ func (s *Service) reconcileClusterConfig(cluster *eks.Cluster) error {
457461
var needsUpdate bool
458462
input := eks.UpdateClusterConfigInput{Name: aws.String(s.scope.KubernetesClusterName())}
459463

460-
if updateLogging := s.reconcileLogging(cluster.Logging); updateLogging != nil {
461-
needsUpdate = true
462-
input.Logging = updateLogging
463-
}
464-
465464
updateVpcConfig, err := s.reconcileVpcConfig(cluster.ResourcesVpcConfig)
466465
if err != nil {
467466
return errors.Wrap(err, "couldn't create vpc config for cluster")
@@ -493,15 +492,39 @@ func (s *Service) reconcileClusterConfig(cluster *eks.Cluster) error {
493492
return nil
494493
}
495494

496-
func (s *Service) reconcileLogging(logging *eks.Logging) *eks.Logging {
495+
func (s *Service) reconcileLogging(logging *eks.Logging) error {
496+
input := eks.UpdateClusterConfigInput{Name: aws.String(s.scope.KubernetesClusterName())}
497+
497498
for _, logSetup := range logging.ClusterLogging {
498499
for _, l := range logSetup.Types {
499500
enabled := s.scope.ControlPlane.Spec.Logging.IsLogEnabled(*l)
500501
if enabled != *logSetup.Enabled {
501-
return makeEksLogging(s.scope.ControlPlane.Spec.Logging)
502+
input.Logging = makeEksLogging(s.scope.ControlPlane.Spec.Logging)
503+
}
504+
}
505+
}
506+
507+
if input.Logging != nil {
508+
if err := input.Validate(); err != nil {
509+
return errors.Wrap(err, "created invalid UpdateClusterConfigInput")
510+
}
511+
512+
if err := wait.WaitForWithRetryable(wait.NewBackoff(), func() (bool, error) {
513+
if _, err := s.EKSClient.UpdateClusterConfig(&input); err != nil {
514+
if aerr, ok := err.(awserr.Error); ok {
515+
return false, aerr
516+
}
517+
return false, err
502518
}
519+
conditions.MarkTrue(s.scope.ControlPlane, ekscontrolplanev1.EKSControlPlaneUpdatingCondition)
520+
record.Eventf(s.scope.ControlPlane, "InitiatedUpdateEKSControlPlane", "Initiated logging update for EKS control plane %s", s.scope.KubernetesClusterName())
521+
return true, nil
522+
}); err != nil {
523+
record.Warnf(s.scope.ControlPlane, "FailedUpdateEKSControlPlane", "Failed to update EKS control plane logging: %v", err)
524+
return errors.Wrapf(err, "failed to update EKS cluster")
503525
}
504526
}
527+
505528
return nil
506529
}
507530

0 commit comments

Comments
 (0)