[agent-operator] - cmii deploy part

This commit is contained in:
zeaslity
2024-06-13 15:06:33 +08:00
parent f1fdfc7777
commit 540d69ede2
19 changed files with 503 additions and 140 deletions

View File

@@ -3,6 +3,7 @@ package main
import (
"bytes"
"context"
"fmt"
v1 "k8s.io/api/apps/v1"
autoscalingv1 "k8s.io/api/autoscaling/v1"
corev1 "k8s.io/api/core/v1"
@@ -13,12 +14,16 @@ import (
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/client-go/tools/remotecommand"
"os"
"os/exec"
"runtime"
"strings"
"sync"
"time"
image2 "wdd.io/agent-common/image"
"wdd.io/agent-common/logger"
"wdd.io/agent-common/utils"
"wdd.io/agent-operator/config"
)
var log = logger.Log
@@ -45,11 +50,83 @@ const (
workerThread = 4
)
var CmiiDevClusterK8sConfig string
var CmiiCoreClusterK8sConfig string
func init() {
switch runtime.GOOS {
case "windows":
CmiiDevClusterK8sConfig = "C:\\Users\\wddsh\\Documents\\IdeaProjects\\ProjectOctopus\\agent-operator\\config\\cmii-dev-cluster.yaml"
CmiiCoreClusterK8sConfig = "C:\\Users\\wddsh\\Documents\\IdeaProjects\\ProjectOctopus\\agent-operator\\config\\cmii-core-cluster.yaml"
case "linux":
CmiiDevClusterK8sConfig = ""
CmiiCoreClusterK8sConfig = ""
}
}
func GetK8sConfigByEnv(cmiiEnv string) string {
switch cmiiEnv {
case dev:
return CmiiDevClusterK8sConfig
case devFlight:
return CmiiDevClusterK8sConfig
case devOperation:
return CmiiDevClusterK8sConfig
case integration:
return CmiiCoreClusterK8sConfig
case uat:
return CmiiCoreClusterK8sConfig
case validation:
return CmiiCoreClusterK8sConfig
case uavms:
return CmiiCoreClusterK8sConfig
case demo:
return CmiiCoreClusterK8sConfig
default:
return CmiiDevClusterK8sConfig
}
}
func DeleteByKubectl(applyFilePath string, cmiiEnv string) bool {
kubeconfig := GetK8sConfigByEnv(cmiiEnv)
cmd := exec.Command("/usr/local/bin/kubectl", "delete", "-f", applyFilePath)
cmd.Env = append(os.Environ(), fmt.Sprintf("KUBECONFIG=%s", kubeconfig))
output, err := cmd.CombinedOutput()
if err != nil {
log.ErrorF("failed to delete resources in file %s: %v\n%s", applyFilePath, err, output)
return false
}
log.InfoF("successfully deleted resources in file %s\n%s", applyFilePath, output)
return true
}
func ApplyByKubectl(applyFilePath string, cmiiEnv string) bool {
kubeconfig := GetK8sConfigByEnv(cmiiEnv)
cmd := exec.Command("/usr/local/bin/kubectl", "apply", "-f", applyFilePath)
cmd.Env = append(os.Environ(), fmt.Sprintf("KUBECONFIG=%s", kubeconfig))
output, err := cmd.CombinedOutput()
if err != nil {
log.ErrorF("failed to apply resources in file %s: %v\n%s", applyFilePath, err, output)
return false
}
log.InfoF("successfully apply resources in file %s\n%s", applyFilePath, output)
return true
}
func (op *CmiiK8sOperator) checkAndBuildCmiiK8sOperator() {
if op.DevClient == nil {
log.InfoF("[client] - build devFlight k8s operator client !")
devConfig, err := clientcmd.RESTConfigFromKubeConfig([]byte(CmiiDevK8sConfig))
devConfig, err := clientcmd.RESTConfigFromKubeConfig([]byte(config.CmiiDevK8sConfig))
if err != nil {
msg := "[client] - build devFlight k8s operator error !"
log.Error(msg)
@@ -64,7 +141,7 @@ func (op *CmiiK8sOperator) checkAndBuildCmiiK8sOperator() {
if op.CoreClient == nil {
log.InfoF("[client] - build core k8s operator client !")
coreConfig, err := clientcmd.RESTConfigFromKubeConfig([]byte(CmiiCoreK8sConfig))
coreConfig, err := clientcmd.RESTConfigFromKubeConfig([]byte(config.CmiiCoreK8sConfig))
if err != nil {
msg := "[client] - build devFlight k8s operator error !"
log.Error(msg)