Skip to content

Commit 50b90cf

Browse files
committed
fix: separate control plane logging and vpc config updates
1 parent ad71a54 commit 50b90cf

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

@@ -413,7 +417,7 @@ func (s *Service) createCluster(eksClusterName string) (*eks.Cluster, error) {
413417
conditions.MarkTrue(s.scope.ControlPlane, ekscontrolplanev1.EKSControlPlaneCreatingCondition)
414418
record.Eventf(s.scope.ControlPlane, "InitiatedCreateEKSControlPlane", "Initiated creation of a new EKS control plane %s", s.scope.KubernetesClusterName())
415419
return true, nil
416-
}, awserrors.ResourceNotFound); err != nil { //TODO: change the error that can be retried
420+
}, awserrors.ResourceNotFound); err != nil { // TODO: change the error that can be retried
417421
record.Warnf(s.scope.ControlPlane, "FailedCreateEKSControlPlane", "Failed to initiate creation of a new EKS control plane: %v", err)
418422
return nil, errors.Wrapf(err, "failed to create EKS cluster")
419423
}
@@ -449,11 +453,6 @@ func (s *Service) reconcileClusterConfig(cluster *eks.Cluster) error {
449453
var needsUpdate bool
450454
input := eks.UpdateClusterConfigInput{Name: aws.String(s.scope.KubernetesClusterName())}
451455

452-
if updateLogging := s.reconcileLogging(cluster.Logging); updateLogging != nil {
453-
needsUpdate = true
454-
input.Logging = updateLogging
455-
}
456-
457456
updateVpcConfig, err := s.reconcileVpcConfig(cluster.ResourcesVpcConfig)
458457
if err != nil {
459458
return errors.Wrap(err, "couldn't create vpc config for cluster")
@@ -485,15 +484,39 @@ func (s *Service) reconcileClusterConfig(cluster *eks.Cluster) error {
485484
return nil
486485
}
487486

488-
func (s *Service) reconcileLogging(logging *eks.Logging) *eks.Logging {
487+
func (s *Service) reconcileLogging(logging *eks.Logging) error {
488+
input := eks.UpdateClusterConfigInput{Name: aws.String(s.scope.KubernetesClusterName())}
489+
489490
for _, logSetup := range logging.ClusterLogging {
490491
for _, l := range logSetup.Types {
491492
enabled := s.scope.ControlPlane.Spec.Logging.IsLogEnabled(*l)
492493
if enabled != *logSetup.Enabled {
493-
return makeEksLogging(s.scope.ControlPlane.Spec.Logging)
494+
input.Logging = makeEksLogging(s.scope.ControlPlane.Spec.Logging)
495+
}
496+
}
497+
}
498+
499+
if input.Logging != nil {
500+
if err := input.Validate(); err != nil {
501+
return errors.Wrap(err, "created invalid UpdateClusterConfigInput")
502+
}
503+
504+
if err := wait.WaitForWithRetryable(wait.NewBackoff(), func() (bool, error) {
505+
if _, err := s.EKSClient.UpdateClusterConfig(&input); err != nil {
506+
if aerr, ok := err.(awserr.Error); ok {
507+
return false, aerr
508+
}
509+
return false, err
494510
}
511+
conditions.MarkTrue(s.scope.ControlPlane, ekscontrolplanev1.EKSControlPlaneUpdatingCondition)
512+
record.Eventf(s.scope.ControlPlane, "InitiatedUpdateEKSControlPlane", "Initiated logging update for EKS control plane %s", s.scope.KubernetesClusterName())
513+
return true, nil
514+
}); err != nil {
515+
record.Warnf(s.scope.ControlPlane, "FailedUpdateEKSControlPlane", "Failed to update EKS control plane logging: %v", err)
516+
return errors.Wrapf(err, "failed to update EKS cluster")
495517
}
496518
}
519+
497520
return nil
498521
}
499522

0 commit comments

Comments
 (0)