github.com/percona/percona-xtradb-cluster-operator@v1.14.0/pkg/k8s/operator_pod.go (about)

     1  package k8s
     2  
     3  import (
     4  	"context"
     5  	"os"
     6  	"strings"
     7  
     8  	corev1 "k8s.io/api/core/v1"
     9  	"k8s.io/apimachinery/pkg/types"
    10  	"sigs.k8s.io/controller-runtime/pkg/client"
    11  )
    12  
    13  func OperatorPod(ctx context.Context, cl client.Client) (corev1.Pod, error) {
    14  	operatorPod := corev1.Pod{}
    15  
    16  	nsBytes, err := os.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/namespace")
    17  	if err != nil {
    18  		return operatorPod, err
    19  	}
    20  
    21  	ns := strings.TrimSpace(string(nsBytes))
    22  
    23  	if err := cl.Get(ctx, types.NamespacedName{
    24  		Namespace: ns,
    25  		Name:      os.Getenv("HOSTNAME"),
    26  	}, &operatorPod); err != nil {
    27  		return operatorPod, err
    28  	}
    29  
    30  	return operatorPod, nil
    31  }