39 lines
884 B
Go
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{}
|
|
}
|