cert-manager-webhook-sthome/_backup/secrets.go
2024-04-06 22:09:39 +02:00

39 lines
884 B
Go

package dns
import (
"context"
"fmt"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
)
//go:generate mockgen -destination=./mock/secrets.go -source=./secrets.go SecretFetcher
type SecretFetcher interface {
StringFromSecret(namespace, secretName, key string) (string, error)
}
type kubeSecretFetcher struct {
client kubernetes.Interface
ctx context.Context
}
func (k *kubeSecretFetcher) StringFromSecret(namespace, secretName, key string) (string, error) {
secret, err := k.client.CoreV1().Secrets(namespace).Get(k.ctx, secretName, metav1.GetOptions{})
if err != nil {
return "", err
}
binary, ok := secret.Data[key]
if !ok {
return "", fmt.Errorf("key `%q` not found in secretFetcher `%s/%s`",
key, namespace, secretName)
}
return string(binary), nil
}
func NewSecretFetcher() SecretFetcher {
return &kubeSecretFetcher{}
}