github.com/spotahome/redis-operator@v1.2.4/service/k8s/secret.go (about) 1 package k8s 2 3 import ( 4 "context" 5 6 "github.com/spotahome/redis-operator/log" 7 "github.com/spotahome/redis-operator/metrics" 8 corev1 "k8s.io/api/core/v1" 9 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 10 "k8s.io/client-go/kubernetes" 11 ) 12 13 // Secret interacts with k8s to get secrets 14 type Secret interface { 15 GetSecret(namespace, name string) (*corev1.Secret, error) 16 } 17 18 // SecretService is the secret service implementation using API calls to kubernetes. 19 type SecretService struct { 20 kubeClient kubernetes.Interface 21 logger log.Logger 22 metricsRecorder metrics.Recorder 23 } 24 25 func NewSecretService(kubeClient kubernetes.Interface, logger log.Logger, metricsRecorder metrics.Recorder) *SecretService { 26 27 logger = logger.With("service", "k8s.secret") 28 return &SecretService{ 29 kubeClient: kubeClient, 30 logger: logger, 31 metricsRecorder: metricsRecorder, 32 } 33 } 34 35 func (s *SecretService) GetSecret(namespace, name string) (*corev1.Secret, error) { 36 37 secret, err := s.kubeClient.CoreV1().Secrets(namespace).Get(context.TODO(), name, metav1.GetOptions{}) 38 recordMetrics(namespace, "Secret", name, "GET", err, s.metricsRecorder) 39 if err != nil { 40 return nil, err 41 } 42 43 return secret, err 44 }