Skip to content

Commit 18e470f

Browse files
committed
reduce unnecessary apiserver interaction
1 parent 8d2dcf7 commit 18e470f

File tree

1 file changed

+36
-69
lines changed

1 file changed

+36
-69
lines changed

controllers/microk8sconfig_controller.go

Lines changed: 36 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -627,115 +627,82 @@ func (r *MicroK8sConfigReconciler) storeBootstrapData(ctx context.Context, scope
627627
func (r *MicroK8sConfigReconciler) getJoinToken(ctx context.Context, scope *Scope) (string, error) {
628628
// See if the token exists. If not create it.
629629
secret := &corev1.Secret{}
630-
631-
var found bool
632630
err := r.Client.Get(ctx, types.NamespacedName{
633631
Namespace: scope.Cluster.Namespace,
634632
Name: fmt.Sprintf("%s-jointoken", scope.Cluster.Name),
635633
}, secret)
636634
switch {
637635
case err == nil:
638-
found = true
636+
return string(secret.Data["value"]), nil
639637
case apierrors.IsNotFound(err):
640638
default:
641639
return "", err
642640
}
643641

644-
if !found {
645-
const letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
646-
b := make([]byte, 32)
647-
for i := range b {
648-
b[i] = letters[mrand.Intn(len(letters))]
649-
}
650-
token := string(b)
651-
tokenSecret := &corev1.Secret{
652-
ObjectMeta: metav1.ObjectMeta{
653-
Namespace: scope.Cluster.Namespace,
654-
Name: scope.Cluster.Name + "-jointoken",
655-
},
656-
Data: map[string][]byte{
657-
"value": []byte(token),
658-
},
659-
}
660-
err = r.Client.Create(ctx, tokenSecret)
661-
if err != nil {
662-
return "", err
663-
}
642+
const letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
643+
b := make([]byte, 32)
644+
for i := range b {
645+
b[i] = letters[mrand.Intn(len(letters))]
664646
}
665-
666-
readTokenSecret := &corev1.Secret{}
667-
err = r.Client.Get(ctx,
668-
types.NamespacedName{
647+
token := string(b)
648+
tokenSecret := &corev1.Secret{
649+
ObjectMeta: metav1.ObjectMeta{
669650
Namespace: scope.Cluster.Namespace,
670651
Name: scope.Cluster.Name + "-jointoken",
671652
},
672-
readTokenSecret,
673-
)
674-
if err != nil {
653+
Data: map[string][]byte{
654+
"value": []byte(token),
655+
},
656+
}
657+
if err := r.Client.Create(ctx, tokenSecret); err != nil {
675658
return "", err
676659
}
677660

678-
return string(readTokenSecret.Data["value"]), nil
661+
return token, nil
679662
}
680663

681664
func (r *MicroK8sConfigReconciler) getCA(ctx context.Context, scope *Scope) (cert *string, key *string, err error) {
682665
// See if the CA cert exists. If not create it.
683-
caSecret := &corev1.Secret{}
666+
secret := &corev1.Secret{}
684667

685-
var found bool
686668
err = r.Client.Get(ctx, types.NamespacedName{
687669
Namespace: scope.Cluster.Namespace,
688670
Name: fmt.Sprintf("%s-ca", scope.Cluster.Name),
689-
}, caSecret)
671+
}, secret)
690672
switch {
691673
case err == nil:
692-
found = true
674+
cert := string(secret.Data["crt"])
675+
key := string(secret.Data["key"])
676+
return &cert, &key, nil
693677
case apierrors.IsNotFound(err):
694678
default:
695679
return nil, nil, err
696680
}
697681

698-
if !found {
699-
newcrt, newkey, err := r.generateCA()
700-
if err != nil {
701-
return nil, nil, err
702-
}
703-
caSecret := &corev1.Secret{
704-
ObjectMeta: metav1.ObjectMeta{
705-
Namespace: scope.Cluster.Namespace,
706-
Name: scope.Cluster.Name + "-ca",
707-
},
708-
Data: map[string][]byte{
709-
// these are the expected names for the certificate and key
710-
"tls.crt": []byte(*newcrt),
711-
"tls.key": []byte(*newkey),
712-
713-
// these are here for backwards-compatibility with older versions of the providers
714-
"crt": []byte(*newcrt),
715-
"key": []byte(*newkey),
716-
},
717-
}
718-
err = r.Client.Create(ctx, caSecret)
719-
if err != nil {
720-
return nil, nil, err
721-
}
682+
newcrt, newkey, err := r.generateCA()
683+
if err != nil {
684+
return nil, nil, err
722685
}
723-
724-
readCASecret := &corev1.Secret{}
725-
err = r.Client.Get(ctx,
726-
types.NamespacedName{
686+
caSecret := &corev1.Secret{
687+
ObjectMeta: metav1.ObjectMeta{
727688
Namespace: scope.Cluster.Namespace,
728689
Name: scope.Cluster.Name + "-ca",
729690
},
730-
readCASecret,
731-
)
732-
if err != nil {
691+
Data: map[string][]byte{
692+
// these are the expected names for the certificate and key
693+
"tls.crt": []byte(*newcrt),
694+
"tls.key": []byte(*newkey),
695+
696+
// these are here for backwards-compatibility with older versions of the providers
697+
"crt": []byte(*newcrt),
698+
"key": []byte(*newkey),
699+
},
700+
}
701+
if err := r.Client.Create(ctx, caSecret); err != nil {
733702
return nil, nil, err
734703
}
735704

736-
certstr := string(readCASecret.Data["crt"])
737-
keystr := string(readCASecret.Data["key"])
738-
return &certstr, &keystr, nil
705+
return newcrt, newkey, nil
739706
}
740707

741708
func (r *MicroK8sConfigReconciler) generateCA() (cert *string, key *string, err error) {

0 commit comments

Comments
 (0)