feat(apigateway): report k3s environment (#21198)

This commit is contained in:
Zexi Li
2024-09-10 14:24:16 +08:00
committed by GitHub
parent 88eff2afab
commit f14fce685a
+27
View File
@@ -21,6 +21,9 @@ import (
"strings"
"time"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
"yunion.io/x/jsonutils"
"yunion.io/x/log"
"yunion.io/x/pkg/errors"
@@ -76,6 +79,7 @@ type sReport struct {
const (
RUNNING_ENV_KUBERNETES = "kubernetes"
RUNNING_ENV_K3S = "k3s"
RUNNING_ENV_DOCKER_COMPOSE = "docker-compose"
RUNNING_ENV_DOCKER_COMPOSE_BAREMETAL = "docker-compose-baremetal"
RUNNING_ENV_UNKNOWN = "unknown"
@@ -118,8 +122,31 @@ func isInsideKubernetes() bool {
return true
}
func getK8sVersion() (string, error) {
cfg, err := rest.InClusterConfig()
if err != nil {
return "", errors.Wrap(err, "get k8s config")
}
client, err := kubernetes.NewForConfig(cfg)
if err != nil {
return "", errors.Wrap(err, "get k8s client")
}
ver, err := client.ServerVersion()
if err != nil {
return "", errors.Wrap(err, "get k8s version")
}
return ver.String(), nil
}
func getRunningEnv() string {
if isInsideKubernetes() {
ver, err := getK8sVersion()
if err != nil {
log.Errorf("get k8s version: %v", err)
}
if strings.Contains(ver, "k3s") {
return RUNNING_ENV_K3S
}
return RUNNING_ENV_KUBERNETES
}