[ Agent ] [ APP ] - nfs mysql redis middleware
This commit is contained in:
@@ -2,18 +2,21 @@ package executor
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
"os"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"context"
|
||||
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
"k8s.io/client-go/tools/clientcmd"
|
||||
)
|
||||
|
||||
var k8sConfigFilePath = "/root/.kube/config"
|
||||
var k8sConfigFilePath = "/root/wdd/kube_config_cluster.yml"
|
||||
var k8sClient = newK8sClientInstance()
|
||||
|
||||
func newK8sClientInstance() *kubernetes.Clientset {
|
||||
@@ -107,7 +110,7 @@ func CheckDeploymentStatusTimeout(specificDeployment string, supreme string, wai
|
||||
if err != nil {
|
||||
log.ErrorF("[CheckDeploymentStatusTimeout] - 获取deployment信息失败: %v\n", err)
|
||||
} else {
|
||||
log.DebugF("[CheckDeploymentStatusTimeout] - 命名空间: %s, Deployment %s 还有Pods未处于Running状态 (Ready: %d, Total: %d)\n", supreme, deployment.Name, deployment.Status.ReadyReplicas, deployment.Status.Replicas)
|
||||
log.DebugF("[CheckDeploymentStatusTimeout] - 命名空间: [ %s ], Deployment: [ %s ] 还有Pods未处于Running状态 (Ready: %d, Total: %d)\n", supreme, deployment.Name, deployment.Status.ReadyReplicas, deployment.Status.Replicas)
|
||||
|
||||
if deployment.Status.ReadyReplicas == deployment.Status.Replicas {
|
||||
return true
|
||||
@@ -179,3 +182,80 @@ func KubectlDeleteExec(resourcesYamlFile string) (bool, []string) {
|
||||
return true, append(resultLog,
|
||||
fmt.Sprintf("[KubectlDeleteExec] - %s delete success!", resourcesYamlFile))
|
||||
}
|
||||
|
||||
func CreateK8sNamespace(namespaceName string) bool {
|
||||
if k8sClient == nil {
|
||||
log.ErrorF("k8s client is nil, run k8s function error !")
|
||||
return false
|
||||
}
|
||||
|
||||
// create namespace
|
||||
// 创建命名空间对象
|
||||
namespace := &corev1.Namespace{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: namespaceName,
|
||||
},
|
||||
}
|
||||
// 使用客户端创建命名空间
|
||||
_, err := k8sClient.CoreV1().Namespaces().Create(context.TODO(), namespace, metav1.CreateOptions{})
|
||||
if err != nil {
|
||||
log.ErrorF("Error creating namespace: %s \n", err.Error())
|
||||
return false
|
||||
}
|
||||
|
||||
// check namespace exists
|
||||
// 尝试获取名为 "xxg" 的命名空间
|
||||
namespace, err = k8sClient.CoreV1().Namespaces().Get(context.TODO(), namespaceName, metav1.GetOptions{})
|
||||
|
||||
// 如果返回错误,需要判断是因为命名空间不存在还是其他错误
|
||||
if err != nil {
|
||||
if errors.IsNotFound(err) {
|
||||
log.ErrorF("Namespace %s cant be got !", namespaceName)
|
||||
return false
|
||||
} else {
|
||||
log.ErrorF("Error retrieving namespace: %s\n", err.Error())
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
log.DebugF("Namespace %s create successful !", namespaceName)
|
||||
return true
|
||||
}
|
||||
|
||||
func GetK8sDashBoardAuthKey() {
|
||||
|
||||
// 获取 kube-system 命名空间的 secrets 列表
|
||||
secrets, err := k8sClient.CoreV1().Secrets("kube-system").List(context.TODO(), metav1.ListOptions{})
|
||||
if err != nil {
|
||||
fmt.Printf("Error retrieving secrets from kube-system namespace: %s\n", err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// 过滤出名为 admin-user 的 secret
|
||||
var adminUserSecretName string
|
||||
for _, secret := range secrets.Items {
|
||||
if strings.Contains(secret.Name, "admin-user") {
|
||||
adminUserSecretName = secret.Name
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if adminUserSecretName == "" {
|
||||
fmt.Println("No admin-user secret found")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// 获取并打印特定的 secret 描述信息
|
||||
secret, err := k8sClient.CoreV1().Secrets("kube-system").Get(context.TODO(), adminUserSecretName, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
fmt.Printf("Error retrieving secret %s: %s\n", adminUserSecretName, err.Error())
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// 打印 secret 的详细信息,根据需要格式化输出
|
||||
fmt.Printf("Name: %s\nNamespace: %s\nData:\n", secret.Name, secret.Namespace)
|
||||
for key, value := range secret.Data {
|
||||
fmt.Printf("%s: %s\n", key, value)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user