Skip to content

Commit

Permalink
Create server and member sepcific certificates separately
Browse files Browse the repository at this point in the history
Signed-off-by: ArkaSaha30 <[email protected]>
  • Loading branch information
ArkaSaha30 committed Jan 21, 2025
1 parent cb5a3a1 commit 54eff56
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 15 deletions.
1 change: 0 additions & 1 deletion internal/controller/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,4 @@ package controller

const (
CertClusterIssuerName = "etcd-operator-selfsigned"
CertDNSNames = "etcd.etcd-operator-system"
)
8 changes: 4 additions & 4 deletions internal/controller/etcdcluster_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,12 +89,12 @@ func (r *EtcdClusterReconciler) Reconcile(ctx context.Context, req ctrl.Request)

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

logger.Info("Reconciling EtcdCluster certificates", "tls", etcdCluster.Spec.TLS)
certificates, err := reconcileCertificate(ctx, r.Client, etcdCluster, r.Scheme, logger)
logger.Info("Reconciling EtcdCluster Server certificates", "tls", etcdCluster.Spec.TLS)
certificates, err := reconcileServerCertificate(ctx, r.Client, etcdCluster, r.Scheme, logger)
if err != nil {
logger.Error(err, "failed to reconcile EtcdCluster certificates")
logger.Error(err, "failed to reconcile EtcdCluster Server certificates")
} else {
logger.Info("Successfully reconciled EtcdCluster certificates", "tls", certificates)
logger.Info("Successfully reconciled EtcdCluster Server certificates", "tls", certificates)
}

// Get the statefulsets which has the same name as the EtcdCluster resource
Expand Down
25 changes: 15 additions & 10 deletions internal/controller/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -405,7 +405,7 @@ func healthCheck(sts *appsv1.StatefulSet, lg klog.Logger) (*clientv3.MemberListR
return memberlistResp, healthInfos, nil
}

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

Check failure on line 408 in internal/controller/utils.go

View workflow job for this annotation

GitHub Actions / Run on Ubuntu

func `reconcileMemberCertificate` is unused (unused)
var certificates []*certv1.Certificate

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

certificates = append(certificates, clientCert, peerCert)
for _, cert := range certificates {
if cert == nil {
return certificates, errors.New("failed to create one or more certificate")
}
}
return certificates, nil
}

func reconcileServerCertificate(ctx context.Context, c client.Client, ec *ecv1alpha1.EtcdCluster, scheme *runtime.Scheme, logger logr.Logger) (*certv1.Certificate, error) {

Check failure on line 444 in internal/controller/utils.go

View workflow job for this annotation

GitHub Actions / Run on Ubuntu

reconcileServerCertificate - result 1 (error) is always nil (unparam)

serverCertName := strings.Join([]string{ec.Name, ec.Spec.TLS.Member.ServerSecret}, "-")
logger.Info("Starting reconciliation of Server Certificate", serverCertName, ec.Namespace)
serverCert, serverCertErr := getCertificate(ctx, c, serverCertName, ec.Namespace)
Expand All @@ -441,16 +452,10 @@ func reconcileCertificate(ctx context.Context, c client.Client, ec *ecv1alpha1.E
logger.Error(serverCertErr, "failed to create Server Certificate")
}
} else {
logger.Error(clientCertErr, "failed to get Server Certificate")
logger.Error(serverCertErr, "failed to get Server Certificate")
}

certificates = append(certificates, clientCert, peerCert, serverCert)
for _, cert := range certificates {
if cert == nil {
return certificates, errors.New("failed to create one or more certificate")
}
}
return certificates, nil
return serverCert, nil
}

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

0 comments on commit 54eff56

Please sign in to comment.