in pkg/webhook/cert.go [73:126]
func (s *CertService) createCertsSecret(
ctx context.Context,
namespace,
serviceName string,
) (*CertData, error) {
serKey, serCert, caCert, err := certresources.CreateCerts(
ctx,
serviceName,
namespace,
time.Now().Add(century),
)
if err != nil {
return nil, fmt.Errorf("failed to create certs: %w", err)
}
certData := NewCertData(serKey, serCert, caCert)
secret := &corev1.Secret{}
err = s.clientReader.Get(ctx, ctrlClient.ObjectKey{Namespace: namespace, Name: secretCertsName}, secret)
if err != nil {
if k8serrors.IsNotFound(err) {
secret.ObjectMeta = metav1.ObjectMeta{
Namespace: namespace,
Name: secretCertsName,
}
secret.Data = map[string][]byte{
secretTLSKey: serKey,
secretTLSCert: serCert,
secretCACert: caCert,
}
secret.Type = corev1.SecretTypeOpaque
if err = s.clientWriter.Create(ctx, secret); err != nil {
return nil, fmt.Errorf("failed to create secret: %w", err)
}
return certData, nil
}
return nil, fmt.Errorf("failed to get secret: %w", err)
}
secret.Data = map[string][]byte{
secretTLSKey: serKey,
secretTLSCert: serCert,
secretCACert: caCert,
}
if err = s.clientWriter.Update(ctx, secret); err != nil {
return nil, fmt.Errorf("failed to update secret: %w", err)
}
return certData, nil
}