Skip to content

Commit 54eff56

Browse files
committed
Create server and member sepcific certificates separately
Signed-off-by: ArkaSaha30 <[email protected]>
1 parent cb5a3a1 commit 54eff56

File tree

3 files changed

+19
-15
lines changed

3 files changed

+19
-15
lines changed

internal/controller/constants.go

-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,4 @@ package controller
22

33
const (
44
CertClusterIssuerName = "etcd-operator-selfsigned"
5-
CertDNSNames = "etcd.etcd-operator-system"
65
)

internal/controller/etcdcluster_controller.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,12 @@ func (r *EtcdClusterReconciler) Reconcile(ctx context.Context, req ctrl.Request)
8989

9090
logger.Info("Reconciling EtcdCluster", "spec", etcdCluster.Spec)
9191

92-
logger.Info("Reconciling EtcdCluster certificates", "tls", etcdCluster.Spec.TLS)
93-
certificates, err := reconcileCertificate(ctx, r.Client, etcdCluster, r.Scheme, logger)
92+
logger.Info("Reconciling EtcdCluster Server certificates", "tls", etcdCluster.Spec.TLS)
93+
certificates, err := reconcileServerCertificate(ctx, r.Client, etcdCluster, r.Scheme, logger)
9494
if err != nil {
95-
logger.Error(err, "failed to reconcile EtcdCluster certificates")
95+
logger.Error(err, "failed to reconcile EtcdCluster Server certificates")
9696
} else {
97-
logger.Info("Successfully reconciled EtcdCluster certificates", "tls", certificates)
97+
logger.Info("Successfully reconciled EtcdCluster Server certificates", "tls", certificates)
9898
}
9999

100100
// Get the statefulsets which has the same name as the EtcdCluster resource

internal/controller/utils.go

+15-10
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ func healthCheck(sts *appsv1.StatefulSet, lg klog.Logger) (*clientv3.MemberListR
405405
return memberlistResp, healthInfos, nil
406406
}
407407

408-
func reconcileCertificate(ctx context.Context, c client.Client, ec *ecv1alpha1.EtcdCluster, scheme *runtime.Scheme, logger logr.Logger) ([]*certv1.Certificate, error) {
408+
func reconcileMemberCertificate(ctx context.Context, c client.Client, ec *ecv1alpha1.EtcdCluster, scheme *runtime.Scheme, logger logr.Logger) ([]*certv1.Certificate, error) {
409409
var certificates []*certv1.Certificate
410410

411411
clientCertName := strings.Join([]string{ec.Name, ec.Spec.TLS.OperatorSecret}, "-")
@@ -432,6 +432,17 @@ func reconcileCertificate(ctx context.Context, c client.Client, ec *ecv1alpha1.E
432432
logger.Error(clientCertErr, "failed to get Peer Certificate")
433433
}
434434

435+
certificates = append(certificates, clientCert, peerCert)
436+
for _, cert := range certificates {
437+
if cert == nil {
438+
return certificates, errors.New("failed to create one or more certificate")
439+
}
440+
}
441+
return certificates, nil
442+
}
443+
444+
func reconcileServerCertificate(ctx context.Context, c client.Client, ec *ecv1alpha1.EtcdCluster, scheme *runtime.Scheme, logger logr.Logger) (*certv1.Certificate, error) {
445+
435446
serverCertName := strings.Join([]string{ec.Name, ec.Spec.TLS.Member.ServerSecret}, "-")
436447
logger.Info("Starting reconciliation of Server Certificate", serverCertName, ec.Namespace)
437448
serverCert, serverCertErr := getCertificate(ctx, c, serverCertName, ec.Namespace)
@@ -441,16 +452,10 @@ func reconcileCertificate(ctx context.Context, c client.Client, ec *ecv1alpha1.E
441452
logger.Error(serverCertErr, "failed to create Server Certificate")
442453
}
443454
} else {
444-
logger.Error(clientCertErr, "failed to get Server Certificate")
455+
logger.Error(serverCertErr, "failed to get Server Certificate")
445456
}
446457

447-
certificates = append(certificates, clientCert, peerCert, serverCert)
448-
for _, cert := range certificates {
449-
if cert == nil {
450-
return certificates, errors.New("failed to create one or more certificate")
451-
}
452-
}
453-
return certificates, nil
458+
return serverCert, nil
454459
}
455460

456461
func getCertificate(ctx context.Context, c client.Client, tlsCertName, namespace string) (*certv1.Certificate, error) {
@@ -476,7 +481,7 @@ func createCertificate(ctx context.Context, c client.Client, tlsCertName string,
476481
},
477482
Spec: certv1.CertificateSpec{
478483
SecretName: tlsCertName,
479-
DNSNames: []string{CertDNSNames},
484+
DNSNames: []string{fmt.Sprintf("%s-%d.%s.%s.svc.cluster.local", ec.Name, ec.Spec.Size, ec.Name, ec.Namespace)},
480485
IssuerRef: cmmeta.ObjectReference{
481486
Name: CertClusterIssuerName,
482487
Kind: "ClusterIssuer",

0 commit comments

Comments
 (0)