2022-12-21 04:49:21 -05:00
|
|
|
/*
|
|
|
|
Copyright (c) Edgeless Systems GmbH
|
|
|
|
|
|
|
|
SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
*/
|
|
|
|
|
2023-01-19 09:57:50 -05:00
|
|
|
// Provides functionality to easily interact with the K8s API, which can be used
|
|
|
|
// from any e2e test.
|
2022-12-21 04:49:21 -05:00
|
|
|
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
|
|
|
|
}
|