in pkg/authenticator/target_cluster_client.go [229:266]
func (tcc *targetClusterClient) ApplySecret(ctx context.Context, secret *corev1.Secret) error {
if tcc.clientConfig == nil {
tcc.logger.Error(fmt.Errorf("client is not initialized"), "creating secret")
return fmt.Errorf("client is not initialized")
}
restConfig, err := tcc.ToRESTConfig()
if err != nil {
tcc.logger.V(6).Error(err, "creating rest config")
return err
}
k8sClient, err := client.New(restConfig, client.Options{})
if err != nil {
tcc.logger.V(6).Error(err, "creating k8s client")
return err
}
newSecret := corev1.Secret{
ObjectMeta: metav1.ObjectMeta{
Name: secret.ObjectMeta.Name,
Namespace: secret.ObjectMeta.Namespace,
},
Data: secret.Data,
}
err = k8sClient.Create(ctx, &newSecret)
if err != nil {
if !apierrors.IsAlreadyExists(err) {
return fmt.Errorf("create secret for workload cluster %s", err)
}
err := k8sClient.Update(ctx, &newSecret)
if err != nil {
return fmt.Errorf("update secret for workload cluster %s", err)
}
}
return nil
}