pkg/kuberneteshelper/client.go (43 lines of code) (raw):
package kuberneteshelper
import (
"context"
aadpodv1 "github.com/Azure/aad-pod-identity/pkg/apis/aadpodidentity/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
"sigs.k8s.io/controller-runtime/pkg/client"
)
var (
scheme = runtime.NewScheme()
)
func init() {
_ = clientgoscheme.AddToScheme(scheme)
// Add aadpodidentity v1 to the scheme.
aadPodIdentityGroupVersion := schema.GroupVersion{Group: aadpodv1.GroupName, Version: "v1"}
scheme.AddKnownTypes(aadPodIdentityGroupVersion,
&aadpodv1.AzureIdentity{},
&aadpodv1.AzureIdentityList{},
&aadpodv1.AzureIdentityBinding{},
&aadpodv1.AzureIdentityBindingList{},
)
metav1.AddToGroupVersion(scheme, aadPodIdentityGroupVersion)
}
// GetKubeConfig returns the kubeconfig
func GetKubeConfig() (*rest.Config, error) {
return clientcmd.NewNonInteractiveDeferredLoadingClientConfig(clientcmd.NewDefaultClientConfigLoadingRules(), &clientcmd.ConfigOverrides{}).ClientConfig()
}
// GetKubeClient returns a Kubernetes clientset.
func GetKubeClient() (client.Client, error) {
kubeConfig, err := GetKubeConfig()
if err != nil {
return nil, err
}
return client.New(kubeConfig, client.Options{Scheme: scheme})
}
// GetObject returns an object from the Kubernetes cluster.
func GetObject(ctx context.Context, kubeClient client.Client, namespace string, name string, obj client.Object) (client.Object, error) {
err := kubeClient.Get(ctx, client.ObjectKey{
Namespace: namespace,
Name: name,
}, obj)
return obj, err
}