constellation/e2e/internal/kubectl/kubectl.go

43 lines
1.0 KiB
Go
Raw Normal View History

/*
Copyright (c) Edgeless Systems GmbH
SPDX-License-Identifier: AGPL-3.0-only
*/
// Provides functionality to easily interact with the K8s API, which can be used
// from any e2e test.
package kubectl
import (
"fmt"
"os"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
)
// New creates a new k8s client. The kube config file is expected to be set
// via environment variable KUBECONFIG or located at ./constellation-admin.conf.
func New() (*kubernetes.Clientset, error) {
cfgPath := ""
if envPath := os.Getenv("KUBECONFIG"); envPath != "" {
cfgPath = envPath
fmt.Printf("K8s config path empty. Using environment variable %s=%s.\n", "KUBECONFIG", envPath)
} else {
cfgPath = "constellation-admin.conf"
fmt.Printf("K8s config path empty. Assuming '%s'.\n", cfgPath)
}
kubeConfig, err := clientcmd.BuildConfigFromFlags("", cfgPath)
if err != nil {
return nil, err
}
k8sClient, err := kubernetes.NewForConfig(kubeConfig)
if err != nil {
return nil, err
}
return k8sClient, nil
}