[agent-operator] - cmii deploy part
This commit is contained in:
82
agent-operator/CmiiDeployOperator.go
Normal file
82
agent-operator/CmiiDeployOperator.go
Normal file
@@ -0,0 +1,82 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"wdd.io/agent-common/utils"
|
||||
"wdd.io/agent-deploy"
|
||||
"wdd.io/agent-operator/image"
|
||||
)
|
||||
|
||||
func CmiiEnvDeploy() {
|
||||
|
||||
// 完整部署
|
||||
shouldDoCompleteDeploy := true
|
||||
|
||||
// 部署的环境
|
||||
cmiiNamespace := dev
|
||||
|
||||
// 输出特定版本的Tag 或者 从DEMO环境拉取
|
||||
DeploySpecificTag := "5.5.0"
|
||||
|
||||
var backendMap map[string]string
|
||||
var frontendMap map[string]string
|
||||
var srsMap map[string]string
|
||||
|
||||
if DeploySpecificTag == "" {
|
||||
// 从DEMO环境拉取
|
||||
backendMap, frontendMap, srsMap = BackupAllCmiiDeploymentToMap(demo)
|
||||
} else {
|
||||
// 输出特定版本的Tag
|
||||
backendMap, frontendMap, srsMap = image.GenerateCmiiTagVersionImageMap(DeploySpecificTag)
|
||||
}
|
||||
|
||||
utils.BeautifulPrintWithTitle(backendMap, "backendMap")
|
||||
utils.BeautifulPrintWithTitle(frontendMap, "frontendMap")
|
||||
utils.BeautifulPrintWithTitle(srsMap, "srsMap")
|
||||
|
||||
// generate and get all old stuff
|
||||
applyYamlFolder := agent_deploy.CmiiEnvironmentDeploy(shouldDoCompleteDeploy, cmiiNamespace, frontendMap, backendMap)
|
||||
|
||||
// clear old apply file
|
||||
clearOldApplyStuff(applyYamlFolder+"old/", cmiiNamespace)
|
||||
|
||||
// apply new app
|
||||
applyNewAppStuff(applyYamlFolder, cmiiNamespace)
|
||||
|
||||
}
|
||||
|
||||
func applyNewAppStuff(applyYamlFolder string, cmiiEnv string) bool {
|
||||
files, err := os.ReadDir(applyYamlFolder)
|
||||
if err != nil {
|
||||
log.ErrorF("failed to read directory: %v", err)
|
||||
return false
|
||||
}
|
||||
|
||||
for _, file := range files {
|
||||
if filepath.Ext(file.Name()) == ".yaml" || filepath.Ext(file.Name()) == ".yml" {
|
||||
filePath := filepath.Join(applyYamlFolder, file.Name())
|
||||
ApplyByKubectl(filePath, cmiiEnv)
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
func clearOldApplyStuff(oldApplyYamlFolder string, cmiiEnv string) bool {
|
||||
|
||||
files, err := os.ReadDir(oldApplyYamlFolder)
|
||||
if err != nil {
|
||||
log.ErrorF("failed to read directory: %v", err)
|
||||
return false
|
||||
}
|
||||
|
||||
for _, file := range files {
|
||||
if filepath.Ext(file.Name()) == ".yaml" || filepath.Ext(file.Name()) == ".yml" {
|
||||
filePath := filepath.Join(oldApplyYamlFolder, file.Name())
|
||||
DeleteByKubectl(filePath, cmiiEnv)
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"time"
|
||||
image2 "wdd.io/agent-common/image"
|
||||
"wdd.io/agent-common/utils"
|
||||
"wdd.io/agent-operator/config"
|
||||
)
|
||||
|
||||
var DefaultCmiiOperator = CmiiK8sOperator{}
|
||||
@@ -193,7 +194,7 @@ func FindCmiiMiddlewarePodInterface(cmiiEnv string) (podList []CmiiPodInterface)
|
||||
cmiiPodInterfaces := DefaultCmiiOperator.PodAllInterface(cmiiEnv)
|
||||
|
||||
for _, podInterface := range cmiiPodInterfaces {
|
||||
for key := range CmiiMiddlewareNameMap {
|
||||
for key := range config.CmiiMiddlewareNameMap {
|
||||
if strings.Contains(podInterface.Name, key) {
|
||||
podList = append(podList, podInterface)
|
||||
}
|
||||
@@ -204,8 +205,8 @@ func FindCmiiMiddlewarePodInterface(cmiiEnv string) (podList []CmiiPodInterface)
|
||||
}
|
||||
|
||||
func ScaleCmiiFrontendDeploymentToDesiredReplicas(cmiiEnv string, desiredReplicas int32) (errorUpdateMap map[string]int32) {
|
||||
frontMap := make(map[string]int32, len(CmiiFrontendAppMap))
|
||||
for aooName := range CmiiFrontendAppMap {
|
||||
frontMap := make(map[string]int32, len(config.CmiiFrontendAppMap))
|
||||
for aooName := range config.CmiiFrontendAppMap {
|
||||
frontMap[aooName] = desiredReplicas
|
||||
}
|
||||
|
||||
@@ -213,8 +214,8 @@ func ScaleCmiiFrontendDeploymentToDesiredReplicas(cmiiEnv string, desiredReplica
|
||||
}
|
||||
|
||||
func ScaleCmiiBackendDeploymentToDesiredReplicas(cmiiEnv string, desiredReplicas int32) (errorUpdateMap map[string]int32) {
|
||||
backMap := make(map[string]int32, len(CmiiBackendAppMap))
|
||||
for aooName := range CmiiBackendAppMap {
|
||||
backMap := make(map[string]int32, len(config.CmiiBackendAppMap))
|
||||
for aooName := range config.CmiiBackendAppMap {
|
||||
backMap[aooName] = desiredReplicas
|
||||
}
|
||||
|
||||
@@ -283,7 +284,7 @@ func RestartCmiiFrontendDeployment(cmiiEnv string) {
|
||||
cmiiDeploymentInterfaces := DefaultCmiiOperator.DeploymentAllInterface(cmiiEnv)
|
||||
|
||||
for _, deploymentInterface := range cmiiDeploymentInterfaces {
|
||||
_, ok := CmiiFrontendAppMap[deploymentInterface.Name]
|
||||
_, ok := config.CmiiFrontendAppMap[deploymentInterface.Name]
|
||||
if ok {
|
||||
if !DefaultCmiiOperator.DeploymentRestart(deploymentInterface.Namespace, deploymentInterface.Name) {
|
||||
log.ErrorF("[RestartCmiiFrontendDeployment] - restart of [%s] [%s] failed !", deploymentInterface.Namespace, deploymentInterface.Name)
|
||||
@@ -408,8 +409,8 @@ func RollBackCmiiDeploymentFromUpdateLog(updateLog string) bool {
|
||||
return ok
|
||||
}
|
||||
|
||||
// BackupAllDeploymentFromEnv 从DEMO提取全部的CMII的应用
|
||||
func BackupAllDeploymentFromEnv(cmiiEnv string) bool {
|
||||
// BackupAllDeploymentFromEnvToFile 从DEMO提取全部的CMII的应用
|
||||
func BackupAllDeploymentFromEnvToFile(cmiiEnv string) bool {
|
||||
|
||||
allInterface := DefaultCmiiOperator.DeploymentAllInterface(cmiiEnv)
|
||||
|
||||
@@ -419,7 +420,7 @@ func BackupAllDeploymentFromEnv(cmiiEnv string) bool {
|
||||
//filePath := "C:\\Users\\wddsh\\Documents\\IdeaProjects\\ProjectOctopus\\cmii_operator\\log\\all-" + DefaultCmiiOperator.CurrentNamespace + "-" + utils.TimeSplitFormatString() + ".txt"
|
||||
filePath := "/home/wdd/IdeaProjects/ProjectOctopus/agent-operator/log/all-" + DefaultCmiiOperator.CurrentNamespace + "-" + utils.TimeSplitFormatString() + ".txt"
|
||||
|
||||
log.InfoF("[BackupAllDeploymentFromEnv] - backup all image from %s => %s", DefaultCmiiOperator.CurrentNamespace, filePath)
|
||||
log.InfoF("[BackupAllDeploymentFromEnvToFile] - backup all image from %s => %s", DefaultCmiiOperator.CurrentNamespace, filePath)
|
||||
|
||||
firstCol := 0
|
||||
secondCol := 0
|
||||
@@ -457,7 +458,7 @@ func BackupAllDeploymentFromEnv(cmiiEnv string) bool {
|
||||
content += "\n"
|
||||
|
||||
if !utils.AppendContentToFile(content, filePath) {
|
||||
log.ErrorF("[BackupAllDeploymentFromEnv] - write to file %s error with contend %s", filePath, content)
|
||||
log.ErrorF("[BackupAllDeploymentFromEnvToFile] - write to file %s error with contend %s", filePath, content)
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -485,7 +486,7 @@ func BackupAllCmiiDeploymentToMap(cmiiEnv string) (backendMap, frontendMap, srsM
|
||||
}
|
||||
|
||||
// add srs part
|
||||
for key, value := range CmiiSrsAppMap {
|
||||
for key, value := range config.CmiiSrsAppMap {
|
||||
var app *CmiiDeploymentInterface
|
||||
if strings.Contains(value, "deployment") {
|
||||
app = DefaultCmiiOperator.DeploymentOneInterface(cmiiEnv, key)
|
||||
@@ -545,7 +546,7 @@ func BackUpAllCmiiAppImageNameFromEnv(cmiiEnv string) {
|
||||
only := make(map[string]string, 150)
|
||||
// front
|
||||
utils.AppendContentToFile("---\n", filePath)
|
||||
for key, value := range CmiiFrontendAppMap {
|
||||
for key, value := range config.CmiiFrontendAppMap {
|
||||
_, ok := only[key]
|
||||
if !ok {
|
||||
deploy := DefaultCmiiOperator.DeploymentOneInterface(cmiiEnv, key)
|
||||
@@ -556,7 +557,7 @@ func BackUpAllCmiiAppImageNameFromEnv(cmiiEnv string) {
|
||||
}
|
||||
}
|
||||
utils.AppendContentToFile("---\n", filePath)
|
||||
for key, value := range CmiiBackendAppMap {
|
||||
for key, value := range config.CmiiBackendAppMap {
|
||||
_, ok := only[key]
|
||||
if !ok {
|
||||
deploy := DefaultCmiiOperator.DeploymentOneInterface(cmiiEnv, key)
|
||||
@@ -569,7 +570,7 @@ func BackUpAllCmiiAppImageNameFromEnv(cmiiEnv string) {
|
||||
// backend
|
||||
utils.AppendContentToFile("---\n", filePath)
|
||||
// gis server
|
||||
for key, value := range CmiiGISAppMap {
|
||||
for key, value := range config.CmiiGISAppMap {
|
||||
_, ok := only[key]
|
||||
if !ok {
|
||||
deploy := DefaultCmiiOperator.DeploymentOneInterface(cmiiEnv, key)
|
||||
@@ -581,7 +582,7 @@ func BackUpAllCmiiAppImageNameFromEnv(cmiiEnv string) {
|
||||
}
|
||||
// srs
|
||||
utils.AppendContentToFile("---\n", filePath)
|
||||
for key, value := range CmiiSrsAppMap {
|
||||
for key, value := range config.CmiiSrsAppMap {
|
||||
_, ok := only[key]
|
||||
if !ok {
|
||||
var app *CmiiDeploymentInterface
|
||||
@@ -608,9 +609,9 @@ func BackUpAllCmiiAppImageNameFromEnv(cmiiEnv string) {
|
||||
func FilterAllCmiiAppStrict(source []CmiiDeploymentInterface) (result []CmiiDeploymentInterface) {
|
||||
|
||||
for _, c := range source {
|
||||
_, ok := CmiiBackendAppMap[c.ContainerName]
|
||||
_, ok := config.CmiiBackendAppMap[c.ContainerName]
|
||||
if !ok {
|
||||
_, ok = CmiiFrontendAppMap[c.ContainerName]
|
||||
_, ok = config.CmiiFrontendAppMap[c.ContainerName]
|
||||
if !ok {
|
||||
log.WarnF("[FilterAllCmiiAppStrict] - [%s] not cmii pod !", c.ContainerName)
|
||||
continue
|
||||
@@ -662,9 +663,9 @@ func FilterAllCmiiAppSoft(source []CmiiDeploymentInterface) (result []CmiiDeploy
|
||||
|
||||
func FilterAllCmiiPodStrict(podList []CmiiPodInterface) (result []CmiiPodInterface) {
|
||||
for _, c := range podList {
|
||||
_, ok := CmiiBackendAppMap[c.ContainerName]
|
||||
_, ok := config.CmiiBackendAppMap[c.ContainerName]
|
||||
if !ok {
|
||||
_, ok = CmiiFrontendAppMap[c.ContainerName]
|
||||
_, ok = config.CmiiFrontendAppMap[c.ContainerName]
|
||||
if !ok {
|
||||
log.WarnF("[FilterAllCmiiPodStrict] - [%s] not cmii pod !", c.ContainerName)
|
||||
continue
|
||||
@@ -734,9 +735,9 @@ func FilterAllCmiiNodeSoft(nodeList []CmiiNodeInterface) (result []CmiiNodeInter
|
||||
}
|
||||
|
||||
func AppNameBelongsToCmiiImage(appName string) bool {
|
||||
_, ok := CmiiBackendAppMap[appName]
|
||||
_, ok := config.CmiiBackendAppMap[appName]
|
||||
if !ok {
|
||||
_, ok = CmiiFrontendAppMap[appName]
|
||||
_, ok = config.CmiiFrontendAppMap[appName]
|
||||
if !ok {
|
||||
log.WarnF("[AppNameBelongsToCmiiImage] - [%s] not cmii app !", appName)
|
||||
return false
|
||||
|
||||
@@ -227,7 +227,7 @@ func TestScaleCmiiBackendDeploymentToDesiredReplicas(t *testing.T) {
|
||||
|
||||
func TestBackupAllDeploymentFromEnv(t *testing.T) {
|
||||
|
||||
BackupAllDeploymentFromEnv(demo)
|
||||
BackupAllDeploymentFromEnvToFile(demo)
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
"os"
|
||||
"slices"
|
||||
"strings"
|
||||
"wdd.io/agent-operator/config"
|
||||
|
||||
image2 "wdd.io/agent-common/image"
|
||||
"wdd.io/agent-common/utils"
|
||||
@@ -330,7 +331,7 @@ func parseAndDownloadFromOss(ossUrlPrefix, ossFileName, localGzipFolder string)
|
||||
if strings.HasSuffix(ossFileName, ".txt") {
|
||||
// download from gzip file list txt
|
||||
// download all files in the txt file
|
||||
result := utils.ReadLineFromFile(localGzipFolder + ossFileName)
|
||||
result := utils.ReadAllContentFromFile(localGzipFolder + ossFileName)
|
||||
for _, gzipFileName := range result {
|
||||
DefaultCmiiMinioOperator.DemoMinioOperator.DownloadFileFromOssFullUrl(ossUrlPrefix+gzipFileName, localGzipFolder)
|
||||
}
|
||||
@@ -421,8 +422,8 @@ func buildAllCmiiImageNameListFromVersion(cmiiVersion string) []string {
|
||||
|
||||
var realCmiiImageName []string
|
||||
|
||||
backendMap := CmiiBackendAppMap
|
||||
frontendMap := CmiiFrontendAppMap
|
||||
backendMap := config.CmiiBackendAppMap
|
||||
frontendMap := config.CmiiFrontendAppMap
|
||||
|
||||
for app := range backendMap {
|
||||
backendMap[app] = cmiiVersion
|
||||
@@ -434,7 +435,7 @@ func buildAllCmiiImageNameListFromVersion(cmiiVersion string) []string {
|
||||
realCmiiImageName = append(realCmiiImageName, image.CmiiImageMapToFullNameList(backendMap)...)
|
||||
realCmiiImageName = append(realCmiiImageName, image.CmiiImageMapToFullNameList(frontendMap)...)
|
||||
|
||||
for key, value := range CmiiSrsAppMap {
|
||||
for key, value := range config.CmiiSrsAppMap {
|
||||
var app *CmiiDeploymentInterface
|
||||
if strings.Contains(value, "deployment") {
|
||||
app = DefaultCmiiOperator.DeploymentOneInterface(demo, key)
|
||||
@@ -469,12 +470,12 @@ func DownloadCompressUploadDependency(shouldGzip bool, shouldOss bool, shouldDow
|
||||
|
||||
if isRKE {
|
||||
log.Info("DCU for rke!")
|
||||
fulleImageNameList = image.Rancher1204Amd64
|
||||
fulleImageNameList = config.Rancher1204Amd64
|
||||
gzipFolderPrefix = image.OfflineImageGzipFolderPrefix + "rke/"
|
||||
} else {
|
||||
log.Info("DCU for middle!")
|
||||
|
||||
fulleImageNameList = image.MiddlewareAmd64
|
||||
fulleImageNameList = config.MiddlewareAmd64
|
||||
gzipFolderPrefix = image.OfflineImageGzipFolderPrefix + "middle/"
|
||||
}
|
||||
|
||||
@@ -487,7 +488,7 @@ func LoadSplitCmiiGzipImageToTargetHarbor(projectName, targetHarborHost string)
|
||||
projectGzipFolder := image.OfflineImageGzipFolderPrefix + projectName
|
||||
errorLoadImageNameList = append(errorLoadImageNameList, image.LoadFromFolderPath(projectGzipFolder)...)
|
||||
// read from json
|
||||
errorPushImageNameList = append(errorPushImageNameList, image.TagFromListAndPushToCHarbor(image.Cmii520DemoImageList, targetHarborHost)...)
|
||||
errorPushImageNameList = append(errorPushImageNameList, image.TagFromListAndPushToCHarbor(config.Cmii520DemoImageList, targetHarborHost)...)
|
||||
|
||||
// re-tag
|
||||
// push
|
||||
@@ -505,8 +506,8 @@ func LoadSplitDepGzipImageToTargetHarbor(targetHarborHost string) (errorLoadImag
|
||||
//errorLoadImageNameList = append(errorLoadImageNameList, ImageLoadFromFolderPath(middle)...)
|
||||
//errorLoadImageNameList = append(errorLoadImageNameList, ImageLoadFromFolderPath(rke)...)
|
||||
|
||||
errorPushImageNameList = append(errorPushImageNameList, image.TagFromListAndPushToCHarbor(image.MiddlewareAmd64, targetHarborHost)...)
|
||||
errorPushImageNameList = append(errorPushImageNameList, image.TagFromListAndPushToCHarbor(image.Rancher1204Amd64, targetHarborHost)...)
|
||||
errorPushImageNameList = append(errorPushImageNameList, image.TagFromListAndPushToCHarbor(config.MiddlewareAmd64, targetHarborHost)...)
|
||||
errorPushImageNameList = append(errorPushImageNameList, image.TagFromListAndPushToCHarbor(config.Rancher1204Amd64, targetHarborHost)...)
|
||||
|
||||
return errorLoadImageNameList, errorPushImageNameList
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -1,4 +1,95 @@
|
||||
package image
|
||||
package config
|
||||
|
||||
var CmiiBackendAppMap = map[string]string{
|
||||
"cmii-admin-data": "5.2.0",
|
||||
"cmii-admin-gateway": "5.2.0",
|
||||
"cmii-admin-user": "5.2.0",
|
||||
"cmii-app-release": "4.2.0-validation",
|
||||
"cmii-open-gateway": "5.2.0",
|
||||
"cmii-suav-supervision": "5.2.0",
|
||||
"cmii-uav-airspace": "5.2.0",
|
||||
"cmii-uav-alarm": "5.2.0",
|
||||
"cmii-uav-autowaypoint": "4.1.6-cm-0828",
|
||||
"cmii-uav-brain": "5.2.0",
|
||||
"cmii-uav-cloud-live": "5.2.0",
|
||||
"cmii-uav-clusters": "5.2.0",
|
||||
"cmii-uav-cms": "5.2.0",
|
||||
"cmii-uav-data-post-process": "5.2.0",
|
||||
"cmii-uav-depotautoreturn": "4.2.0",
|
||||
"cmii-uav-developer": "5.2.0-25858",
|
||||
"cmii-uav-device": "5.2.0",
|
||||
"cmii-uav-emergency": "5.2.0",
|
||||
"cmii-uav-gateway": "5.2.0",
|
||||
"cmii-uav-industrial-portfolio": "5.2.0-25268-10",
|
||||
"cmii-uav-integration": "5.2.0-25447",
|
||||
"cmii-uav-kpi-monitor": "5.2.0",
|
||||
"cmii-uav-logger": "5.2.0",
|
||||
"cmii-uav-material-warehouse": "5.2.0",
|
||||
"cmii-uav-mission": "5.2.0-25840",
|
||||
"cmii-uav-mqtthandler": "5.2.0-25340",
|
||||
"cmii-uav-notice": "5.2.0",
|
||||
"cmii-uav-oauth": "5.2.0",
|
||||
"cmii-uav-process": "5.2.0",
|
||||
"cmii-uav-surveillance": "5.2.0-25854",
|
||||
"cmii-uav-threedsimulation": "5.2.0",
|
||||
"cmii-uav-tower": "5.2.0",
|
||||
"cmii-uav-user": "5.2.0",
|
||||
"cmii-uav-waypoint": "5.2.0",
|
||||
"cmii-uav-multilink": "5.2.0",
|
||||
"cmii-uav-bridge": "5.2.0",
|
||||
"cmii-uas-lifecycle": "5.2.0",
|
||||
"cmii-uas-gateway": "5.2.0",
|
||||
}
|
||||
|
||||
var CmiiFrontendAppMap = map[string]string{
|
||||
"cmii-suav-platform-supervision": "5.2.0",
|
||||
"cmii-suav-platform-supervisionh5": "5.2.0",
|
||||
"cmii-uav-platform": "5.2.0-011004",
|
||||
"cmii-uav-platform-ai-brain": "5.2.0",
|
||||
"cmii-uav-platform-armypeople": "5.2.0-24538",
|
||||
"cmii-uav-platform-base": "5.2.0",
|
||||
"cmii-uav-platform-cms-portal": "5.2.0",
|
||||
"cmii-uav-platform-detection": "5.2.0",
|
||||
"cmii-uav-platform-emergency-rescue": "5.2.0",
|
||||
"cmii-uav-platform-hljtt": "5.2.0",
|
||||
"cmii-uav-platform-jiangsuwenlv": "4.1.3-jiangsu-0427",
|
||||
"cmii-uav-platform-logistics": "5.2.0",
|
||||
"cmii-uav-platform-media": "5.2.0",
|
||||
"cmii-uav-platform-multiterminal": "5.2.0",
|
||||
"cmii-uav-platform-mws": "5.2.0",
|
||||
"cmii-uav-platform-oms": "5.2.0",
|
||||
"cmii-uav-platform-open": "5.2.0",
|
||||
"cmii-uav-platform-qingdao": "4.1.6-24238-qingdao",
|
||||
"cmii-uav-platform-qinghaitourism": "4.1.0-21377-0508",
|
||||
"cmii-uav-platform-security": "4.1.6",
|
||||
"cmii-uav-platform-securityh5": "5.2.0",
|
||||
"cmii-uav-platform-seniclive": "5.2.0",
|
||||
"cmii-uav-platform-share": "5.2.0",
|
||||
"cmii-uav-platform-splice": "5.2.0",
|
||||
"cmii-uav-platform-threedsimulation": "5.2.0-21392",
|
||||
"cmii-uav-platform-visualization": "5.2.0",
|
||||
}
|
||||
|
||||
var CmiiMiddlewareNameMap = map[string]string{
|
||||
"helm-nacos": "single",
|
||||
"helm-emqxs": "single",
|
||||
"helm-mysql": "single",
|
||||
"helm-redis": "replication",
|
||||
"helm-rabbitmq": "single",
|
||||
}
|
||||
|
||||
var CmiiSrsAppMap = map[string]string{
|
||||
"helm-live-op-v2": "deployment",
|
||||
"helm-live-rtsp-op": "4.1.6",
|
||||
"helm-live-srs-rtc": "statefulset",
|
||||
}
|
||||
|
||||
var CmiiGISAppMap = map[string]string{
|
||||
"cmii-uav-gis-server": "5.4.0",
|
||||
"cmii-uav-grid-datasource": "5.4.0",
|
||||
"cmii-uav-grid-engine": "5.4.0",
|
||||
"cmii-uav-grid-manage": "5.4.0",
|
||||
}
|
||||
|
||||
var MiddlewareAmd64 = []string{
|
||||
"bitnami/redis:6.2.6-debian-10-r0",
|
||||
@@ -1,95 +1,4 @@
|
||||
package main
|
||||
|
||||
var CmiiBackendAppMap = map[string]string{
|
||||
"cmii-admin-data": "5.2.0",
|
||||
"cmii-admin-gateway": "5.2.0",
|
||||
"cmii-admin-user": "5.2.0",
|
||||
"cmii-app-release": "4.2.0-validation",
|
||||
"cmii-open-gateway": "5.2.0",
|
||||
"cmii-suav-supervision": "5.2.0",
|
||||
"cmii-uav-airspace": "5.2.0",
|
||||
"cmii-uav-alarm": "5.2.0",
|
||||
"cmii-uav-autowaypoint": "4.1.6-cm-0828",
|
||||
"cmii-uav-brain": "5.2.0",
|
||||
"cmii-uav-cloud-live": "5.2.0",
|
||||
"cmii-uav-clusters": "5.2.0",
|
||||
"cmii-uav-cms": "5.2.0",
|
||||
"cmii-uav-data-post-process": "5.2.0",
|
||||
"cmii-uav-depotautoreturn": "4.2.0",
|
||||
"cmii-uav-developer": "5.2.0-25858",
|
||||
"cmii-uav-device": "5.2.0",
|
||||
"cmii-uav-emergency": "5.2.0",
|
||||
"cmii-uav-gateway": "5.2.0",
|
||||
"cmii-uav-industrial-portfolio": "5.2.0-25268-10",
|
||||
"cmii-uav-integration": "5.2.0-25447",
|
||||
"cmii-uav-kpi-monitor": "5.2.0",
|
||||
"cmii-uav-logger": "5.2.0",
|
||||
"cmii-uav-material-warehouse": "5.2.0",
|
||||
"cmii-uav-mission": "5.2.0-25840",
|
||||
"cmii-uav-mqtthandler": "5.2.0-25340",
|
||||
"cmii-uav-notice": "5.2.0",
|
||||
"cmii-uav-oauth": "5.2.0",
|
||||
"cmii-uav-process": "5.2.0",
|
||||
"cmii-uav-surveillance": "5.2.0-25854",
|
||||
"cmii-uav-threedsimulation": "5.2.0",
|
||||
"cmii-uav-tower": "5.2.0",
|
||||
"cmii-uav-user": "5.2.0",
|
||||
"cmii-uav-waypoint": "5.2.0",
|
||||
"cmii-uav-multilink": "5.2.0",
|
||||
"cmii-uav-bridge": "5.2.0",
|
||||
"cmii-uas-lifecycle": "5.2.0",
|
||||
"cmii-uas-gateway": "5.2.0",
|
||||
}
|
||||
|
||||
var CmiiFrontendAppMap = map[string]string{
|
||||
"cmii-suav-platform-supervision": "5.2.0",
|
||||
"cmii-suav-platform-supervisionh5": "5.2.0",
|
||||
"cmii-uav-platform": "5.2.0-011004",
|
||||
"cmii-uav-platform-ai-brain": "5.2.0",
|
||||
"cmii-uav-platform-armypeople": "5.2.0-24538",
|
||||
"cmii-uav-platform-base": "5.2.0",
|
||||
"cmii-uav-platform-cms-portal": "5.2.0",
|
||||
"cmii-uav-platform-detection": "5.2.0",
|
||||
"cmii-uav-platform-emergency-rescue": "5.2.0",
|
||||
"cmii-uav-platform-hljtt": "5.2.0",
|
||||
"cmii-uav-platform-jiangsuwenlv": "4.1.3-jiangsu-0427",
|
||||
"cmii-uav-platform-logistics": "5.2.0",
|
||||
"cmii-uav-platform-media": "5.2.0",
|
||||
"cmii-uav-platform-multiterminal": "5.2.0",
|
||||
"cmii-uav-platform-mws": "5.2.0",
|
||||
"cmii-uav-platform-oms": "5.2.0",
|
||||
"cmii-uav-platform-open": "5.2.0",
|
||||
"cmii-uav-platform-qingdao": "4.1.6-24238-qingdao",
|
||||
"cmii-uav-platform-qinghaitourism": "4.1.0-21377-0508",
|
||||
"cmii-uav-platform-security": "4.1.6",
|
||||
"cmii-uav-platform-securityh5": "5.2.0",
|
||||
"cmii-uav-platform-seniclive": "5.2.0",
|
||||
"cmii-uav-platform-share": "5.2.0",
|
||||
"cmii-uav-platform-splice": "5.2.0",
|
||||
"cmii-uav-platform-threedsimulation": "5.2.0-21392",
|
||||
"cmii-uav-platform-visualization": "5.2.0",
|
||||
}
|
||||
|
||||
var CmiiMiddlewareNameMap = map[string]string{
|
||||
"helm-nacos": "single",
|
||||
"helm-emqxs": "single",
|
||||
"helm-mysql": "single",
|
||||
"helm-redis": "replication",
|
||||
"helm-rabbitmq": "single",
|
||||
}
|
||||
|
||||
var CmiiSrsAppMap = map[string]string{
|
||||
"helm-live-op-v2": "deployment",
|
||||
"helm-live-rtsp-op": "4.1.6",
|
||||
"helm-live-srs-rtc": "statefulset",
|
||||
}
|
||||
|
||||
var CmiiGISAppMap = map[string]string{
|
||||
"cmii-uav-gis-server": "5.4.0",
|
||||
"cmii-uav-grid-datasource": "5.4.0",
|
||||
"cmii-uav-grid-engine": "5.4.0",
|
||||
"cmii-uav-grid-manage": "5.4.0",
|
||||
}
|
||||
package config
|
||||
|
||||
var CmiiDevK8sConfig = `apiVersion: v1
|
||||
clusters:
|
||||
0
agent-operator/config/cmii-core-cluster.yaml
Normal file
0
agent-operator/config/cmii-core-cluster.yaml
Normal file
18
agent-operator/config/cmii-dev-cluster.yaml
Normal file
18
agent-operator/config/cmii-dev-cluster.yaml
Normal file
@@ -0,0 +1,18 @@
|
||||
clusters:
|
||||
- cluster:
|
||||
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeE1ERXhPREEyTURZeU5Gb1hEVE14TURFeE5qQTJNRFl5TkZvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBS2ZNCjFjTjBNUnhUTkRGdEZxcnRIZ0RPM29SV0dicmVob3VFcDJ3VUVRbU8yRUFyZDdkMUFReTJsSm9WM0RUVmhXbUwKcUFUOFcxaWRaS0x0Wm5mNjEva3JPeDd0U2lJeU4xa1ErN3NYRUhnTjVMc01EOVlKcndpUFdFY2FXdU9HVmI1aApMWDZWOTRjN0U5UlFDOENtd09iSkRCNG45ZE8zcDVlTDJHaFRpMkNrRWt3ZkRPR0tEL1IxeUNaK0tFcDRWWlplCnpwcnUzRG5zOUNqZHVOT1VBWTZzUGxjazNvdEdIVnhnRC9IRlRjUEhNbGhvUVQ4dmNDOTZwc0FtYXZPR1BZQ0YKa3RtN0VWYkZDOHN5Q1BMT3AwWWhTWHRkbGtKaC9UWHBaM0hSUWJxSzVPNXR4K1dGL05qMGJVc202ZldSMzZWQgpKQVVscUJIeFhSTzhGTFNrVHkwQ0F3RUFBYU1qTUNFd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFKeWZ2T3hHVVYvT2wybGRQNnYxeWFSTkd5RVkKWkVxTmM2Y29LSklsd0VQNUxNYzdZNGFReWorZCtVTE4zYmIrOXZsZXdHamluTHRrUW5HZ1R3Q3pKTU5ZNlNJNQo2NzJGZEtQTE85Szdpalhway9qRE9FVHJWS25aMXJBTytOUVBmSVhpcXQ3Y1RyVHlaVzdKTVl3emZNa2VlTGErCnREdmY1Rm5vQTBLN2U3a0ZXNTBpN2pXcGh4RXRMNEJpNzAwNnU4NEpqTU5weVp1MzhKMjFXZkR1RjBoU0NQREgKS0x4cnZIZ0FOYzJWU1c2L3JPaVVCQjdiV0JkcWcyQUNVRWZwN0V3UGs2S1BsdGNiNTJtdFhCU2xiQ3pRWWw4UQpmNmVGRFIrbnRjeXNGbU1FMFI3M1lNSHJwR0dGdlduSDVaTmEyVEJYdHpwN2tNNkVPREE5a2R4WkI1dz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
|
||||
server: https://192.168.11.170:16443
|
||||
name: kubernetes
|
||||
contexts:
|
||||
- context:
|
||||
cluster: kubernetes
|
||||
user: kubernetes-admin
|
||||
name: kubernetes-admin@kubernetes
|
||||
current-context: kubernetes-admin@kubernetes
|
||||
kind: Config
|
||||
preferences: { }
|
||||
users:
|
||||
- name: kubernetes-admin
|
||||
user:
|
||||
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM4ekNDQWR1Z0F3SUJBZ0lKQU9SWThQZlhadWQyTUEwR0NTcUdTSWIzRFFFQkN3VUFNQlV4RXpBUkJnTlYKQkFNVENtdDFZbVZ5Ym1WMFpYTXdIaGNOTWpJd01URTRNRFl6TmpRMFdoY05Nekl3TVRFMk1EWXpOalEwV2pBMApNUmN3RlFZRFZRUUtEQTV6ZVhOMFpXMDZiV0Z6ZEdWeWN6RVpNQmNHQTFVRUF3d1FhM1ZpWlhKdVpYUmxjeTFoClpHMXBiakNDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPNTZ0ZG51M24rWUsxM3oKZmNlTzNiSmhBL2J0SGpoQXpvRnNObmZjeEY3dlRTZGczSUxySmVNVkFGbG50MHpUL2xacFBlU0ZUN25iL1g1Ygo4RjErSHA2dVR0b0hRVGJHR2VzbEprdkpFMjB3OGJ0Z3VrdlNmTnROOS9NNlFTWWkvTGlHeTZpd2kveGdBVUtKClFtVW1vZmhZSHNKMllFbXJCcExOVFhtenl2a2lUTlJZVC9iNlJJRzNiT3lIVm1Lc1cwQkNQNVZTTFJsLzErZlMKM0dCUUZ2UTNXdTdmVWlzMW9DSXhsc1k5V2VJUmpGOWJDbWtKNnZsT3BWbGlsTlA0cEtSSnl4aXNBNzExNENNWAprRGJvRFBXb2lxMktubzYveXI2L0xwMktsVVVSa1JhQklodEl5eXV2TldPbjhiTW90SUpCNWNOems4UkxYTm5TCklPZEtMVDhDQXdFQUFhTW5NQ1V3RGdZRFZSMFBBUUgvQkFRREFnV2dNQk1HQTFVZEpRUU1NQW9HQ0NzR0FRVUYKQndNQ01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1lwVk9NemlGRUFta1A4S3B2ZWttR3laVGV3dzQreVhyUwo3TEpoWTdTR2pGY210ZldMSW9PWEhmWmZlZWNsN3M5Snh1SytPZlhqU0d0UU9jWXk0WHo5OVFWY2FRandJMEg5Cnc3aWJiYUw3M093RGZrRDMrdlNhME9ZRWZKSFlsNXErQXBnQVpLVWRWazMvZHpJSmhRR0V6L0UxcjdYTlNabDUKL1hOT3pwbzl0VHV2dDAxRlllV0RMN01DeWZGRHFTelpQdnNyWW81bDFiTE5yeEZHb1dvSTdUMlJzR205VXJyYwoyTy84R2hMYTkwZ2tLeE9JTEpYdlJCY2RrOUN4N01ROGFGVHBuSmtPMXJzVzUxMTFoTG5hNm9WRHhISlVrbjRkCmNhODFDV3R1Yk44dkpSYlFwVmkySTJ5K3ljZ3lrNTMzR21GQXNVS3dkdm5rVjNqTVJVbFYKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
|
||||
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcGdJQkFBS0NBUUVBN25xMTJlN2VmNWdyWGZOOXg0N2RzbUVEOXUwZU9FRE9nV3cyZDl6RVh1OU5KMkRjCmd1c2w0eFVBV1dlM1ROUCtWbWs5NUlWUHVkdjlmbHZ3WFg0ZW5xNU8yZ2RCTnNZWjZ5VW1TOGtUYlREeHUyQzYKUzlKODIwMzM4enBCSmlMOHVJYkxxTENML0dBQlFvbENaU2FoK0ZnZXduWmdTYXNHa3MxTmViUEsrU0pNMUZoUAo5dnBFZ2JkczdJZFdZcXhiUUVJL2xWSXRHWC9YNTlMY1lGQVc5RGRhN3Q5U0t6V2dJakdXeGoxWjRoR01YMXNLCmFRbnErVTZsV1dLVTAvaWtwRW5MR0t3RHZYWGdJeGVRTnVnTTlhaUtyWXFlanIvS3ZyOHVuWXFWUlJHUkZvRWkKRzBqTEs2ODFZNmZ4c3lpMGdrSGx3M09UeEV0YzJkSWc1MG90UHdJREFRQUJBb0lCQVFDdTE5YldGbFNZdGNjdAoxYVJsRi9DZ3BKSlVpcHA2WWNGRmtFSUs5UmdnQmxESnl6RkE1d2hiQ2YyOGp0Y01BKzFZQzBidWNYTDNjRHZWClZiRFB5dlRHSUVQOWhBNGpDM0RiUHR4cCtkMDlWQUlYQUI3MkVqZXFUZXE1TC8rdDV6N2tSeWV2NE9oeE95NFIKU3pNYm1BeHVXS1VNcTkrQ2cxcUpiTzRkaVYwSjg5cUtidExsclFCeDFxcHNnUjNES1VhVGVNKzVpeFYyQ1Y1bApSNDV4aU43NWRrSkpaZlY2UUV5K3V2UVd0VHk4NUN3R1U2T2hjOXA4d2s0MmFrQS9qM05FTUZiTjdDaDFKbi9RCjRhNUJpMituRUE4dGVvV2FRSzdoeU5CRENWbTFsamFjaFFveGRSNGhCWVUxdkhTbkt4a0c4bDA1K1BpRTZmZFkKaUtyemhGR0JBb0dCQVBwOStKTExzZXJ6dFQ4a2VLU2FSMXBMOHB5MTQ3cmdjdEVhckxJL2ZqY1VMU3c3OUk3UAovWWhIWnhmdm9TZEZ2QTZwNy81eHFCRitaNTM5L1NKNDlLeWFOdGNJbW01UTZKSW9aRGgzWmVVS3lMKzA1YTdRCkNqMU1wZ2hKMlZDT2VPamNxd0NVQkFhcjNWSjd0cXRxRVFCQk9jMnlWU3dzbU5wclMyYmU1S3RCQW9HQkFQTzUKSG9ZVTBMK2tzdzJKUVM5ODF1ZWtrbDMzR1ZWQ2dPUFdGWThhR3VGRGt3Sm84WGk2TmhtKzh2TjlNaGg3WkYzeQpTU3E1U2RJd01pR0IvKzVJaWp1V25DbWszY2RPdGU0VFBsZHFvdjc3Q1FUUmxPNWJCekR0L1VqYVBBam5GS0FpClg4K0V6NUVXOXFSclN2ZXplZHFDRVRBVDhRWThqNk1WY0VCRW96aC9Bb0dCQUphcVRHZ25RdVdhSHF0VENZbWcKRGtqZW81Zmt3NHcwMG5xNWU2UmZFbENZdnk3N0JQY2RYVmFwOC9WdXVkVEFXZ1BMN1VGekpXOFlROFRBNzQvYgpodmVHYm5QYWhlRFNvNEM5OE1JUjl1VFVIcmxJV2xwU1ljWkxJeGFiTEs0S2MrbEVTVXE0dk04eWNwWFpPWjlTCjFkVDhab00xdjRzcGErcjhYRWNNekNmQkFvR0JBSXVuaXI4SDFHbk1CVEYvY1pPMWRDczkyUVR3MzFwRWhqaUgKWnNrZUMwTURCb3o5OTBmWFk4S3k4T0htM2pxN0VkTG5UMWVrM3BFTFB0NkdjRkZvelpUQmczQTFZVU9nYlkwagpCN2p0aU1LVXRDRkh1cEF1SnR1NXMwWDRqeWdHeVlITTBKdkhuV3lrL09WUCthQWYvblhmeTl1QndiMXlIRmcxCm82R2Y4dXNmQW9HQkFKeGlQcGdDODJPckoxazE3V3dyOFI2ZXpxR2VYb0JPRzFlOEN6ZG1UbWFrN3prWDJJelEKSTVjT3dGaTlnREhTbUVMa0dYZnRHZ01EcXF1VHVLdS9OdW9DQS94Z2FrdTQvVHplNktqbzRjc0NDTmFza3VrRQozYnhwSnU5cElYRU5tMXVuNXBZRy90QTF0V1Rtc3dnRjY1anc2RFpTQUFUTFZMSXg3RVRDR0RlOQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
|
||||
@@ -5,7 +5,6 @@ go 1.22.1
|
||||
require (
|
||||
github.com/docker/docker v20.10.17+incompatible
|
||||
github.com/docker/go-units v0.4.0
|
||||
github.com/go-playground/validator/v10 v10.19.0
|
||||
github.com/klauspost/pgzip v1.2.6
|
||||
github.com/minio/minio-go v6.0.14+incompatible
|
||||
github.com/mittwald/goharbor-client/v5 v5.5.3
|
||||
@@ -15,10 +14,13 @@ require (
|
||||
k8s.io/apimachinery v0.29.1
|
||||
k8s.io/client-go v0.29.1
|
||||
wdd.io/agent-common v0.0.0
|
||||
wdd.io/agent-deploy v0.0.0
|
||||
)
|
||||
|
||||
replace wdd.io/agent-common => ../agent-common
|
||||
|
||||
replace wdd.io/agent-deploy => ../agent-deploy
|
||||
|
||||
require (
|
||||
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
|
||||
github.com/Microsoft/go-winio v0.6.1 // indirect
|
||||
@@ -43,6 +45,7 @@ require (
|
||||
github.com/go-openapi/validate v0.22.1 // indirect
|
||||
github.com/go-playground/locales v0.14.1 // indirect
|
||||
github.com/go-playground/universal-translator v0.18.1 // indirect
|
||||
github.com/go-playground/validator/v10 v10.21.0 // indirect
|
||||
github.com/gogo/protobuf v1.3.2 // indirect
|
||||
github.com/goharbor/harbor/src v0.0.0-20230220075213-6015b3efa7d0 // indirect
|
||||
github.com/golang/protobuf v1.5.3 // indirect
|
||||
|
||||
@@ -77,8 +77,8 @@ github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/o
|
||||
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
|
||||
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
|
||||
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
|
||||
github.com/go-playground/validator/v10 v10.19.0 h1:ol+5Fu+cSq9JD7SoSqe04GMI92cbn0+wvQ3bZ8b/AU4=
|
||||
github.com/go-playground/validator/v10 v10.19.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
|
||||
github.com/go-playground/validator/v10 v10.21.0 h1:4fZA11ovvtkdgaeev9RGWPgc1uj3H8W+rNYyH/ySBb0=
|
||||
github.com/go-playground/validator/v10 v10.21.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
|
||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
|
||||
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
|
||||
|
||||
@@ -9,8 +9,10 @@ import (
|
||||
"io"
|
||||
"io/fs"
|
||||
"os"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
"wdd.io/agent-operator/config"
|
||||
|
||||
"github.com/docker/docker/api/types"
|
||||
"github.com/docker/docker/api/types/filters"
|
||||
@@ -544,6 +546,31 @@ func FrontendBackendSrsImageMapFromCmiiImageMap(cmiiImageVersionMap map[string]s
|
||||
return frontendImageVersionMap, backendImageVersionMap, srsImageVersionMap
|
||||
}
|
||||
|
||||
// GenerateCmiiTagVersionImageMap 生成特定版本的ImageTagMap
|
||||
func GenerateCmiiTagVersionImageMap(specificTag string) (backendMap, frontendMap, srsMap map[string]string) {
|
||||
matched, _ := regexp.MatchString(`^\d+\.\d+\.\d+$`, specificTag)
|
||||
if !matched {
|
||||
log.ErrorF("srs tag is not match ! %s", specificTag)
|
||||
|
||||
}
|
||||
|
||||
backendMap = make(map[string]string, len(config.CmiiBackendAppMap))
|
||||
frontendMap = make(map[string]string, len(config.CmiiFrontendAppMap))
|
||||
srsMap = make(map[string]string, len(config.CmiiSrsAppMap))
|
||||
|
||||
for imageName, _ := range config.CmiiBackendAppMap {
|
||||
backendMap[imageName] = specificTag
|
||||
}
|
||||
for imageName, _ := range config.CmiiFrontendAppMap {
|
||||
frontendMap[imageName] = specificTag
|
||||
}
|
||||
for imageName, imageTag := range config.CmiiSrsAppMap {
|
||||
srsMap[imageName] = imageTag
|
||||
}
|
||||
|
||||
return backendMap, frontendMap, srsMap
|
||||
}
|
||||
|
||||
func loginToDockerHub(HarborFullHost string) {
|
||||
|
||||
if HarborFullHost == "" {
|
||||
@@ -568,13 +595,13 @@ func WriteDependencyImageToFile() {
|
||||
|
||||
middleFile := imageFilePrefix + "middle-image.txt"
|
||||
_ = os.Remove(middleFile)
|
||||
for _, image := range MiddlewareAmd64 {
|
||||
for _, image := range config.MiddlewareAmd64 {
|
||||
utils.AppendContentToFile(image+"\n", middleFile)
|
||||
}
|
||||
|
||||
rkeFile := imageFilePrefix + "rke-image.txt"
|
||||
_ = os.Remove(rkeFile)
|
||||
for _, image := range Rancher1204Amd64 {
|
||||
for _, image := range config.Rancher1204Amd64 {
|
||||
utils.AppendContentToFile(image+"\n", rkeFile)
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"wdd.io/agent-common/assert"
|
||||
"wdd.io/agent-common/image"
|
||||
"wdd.io/agent-common/utils"
|
||||
"wdd.io/agent-operator/config"
|
||||
"wdd.io/agent-operator/real_project/zjjt"
|
||||
)
|
||||
|
||||
@@ -128,7 +129,7 @@ func TestImageFullNameToGzipFileName(t *testing.T) {
|
||||
"busybox",
|
||||
}
|
||||
|
||||
test = append(test, MiddlewareAmd64...)
|
||||
test = append(test, config.MiddlewareAmd64...)
|
||||
|
||||
for _, s := range test {
|
||||
gzipFileName := image.ImageFullNameToGzipFileName(s)
|
||||
@@ -94,7 +94,7 @@ func main() {
|
||||
//
|
||||
//BuildDefaultK8sOperator()
|
||||
//
|
||||
//BackupAllDeploymentFromEnv(mode)
|
||||
//BackupAllDeploymentFromEnvToFile(mode)
|
||||
|
||||
//解析命令行参数
|
||||
var mode string
|
||||
|
||||
38
agent-operator/mysql/MysqlOperator.go
Normal file
38
agent-operator/mysql/MysqlOperator.go
Normal file
@@ -0,0 +1,38 @@
|
||||
package mysql
|
||||
|
||||
import (
|
||||
"log"
|
||||
"os"
|
||||
"os/exec"
|
||||
)
|
||||
|
||||
var AllCmiiTableList = []string{}
|
||||
|
||||
func main() {
|
||||
cmd := exec.Command("/root/wdd/mysql/bin/mysqldump",
|
||||
"-uroot",
|
||||
"-pQzfXQhd3bQ",
|
||||
"-h172.28.0.251",
|
||||
"-P33306",
|
||||
"-t",
|
||||
"--set-gtid-purged=OFF",
|
||||
"cmii_nacos_config",
|
||||
"config_info",
|
||||
"his_config_info",
|
||||
"roles",
|
||||
"users",
|
||||
)
|
||||
|
||||
outputFile, err := os.Create("cmii_nacos_config.sql")
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to create output file: %v", err)
|
||||
}
|
||||
defer outputFile.Close()
|
||||
|
||||
cmd.Stdout = outputFile
|
||||
cmd.Stderr = os.Stderr
|
||||
|
||||
if err := cmd.Run(); err != nil {
|
||||
log.Fatalf("Command execution failed: %v", err)
|
||||
}
|
||||
}
|
||||
43
agent-operator/mysql/cmii_mysql_dump.sh
Normal file
43
agent-operator/mysql/cmii_mysql_dump.sh
Normal file
@@ -0,0 +1,43 @@
|
||||
#!/bin/bash
|
||||
|
||||
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF uav_airspace airport >uav_airspace.sql
|
||||
sed -i '1s/^/use uav_airspace;\n/' uav_airspace.sql
|
||||
|
||||
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF uav_notice mail_provider_cfg msg_tpl msg_tpl_lang open_app >uav_notice.sql
|
||||
sed -i '1s/^/use uav_notice;\n/' uav_notice.sql
|
||||
|
||||
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF uav_process uav_proc_cfg >uav_process.sql
|
||||
sed -i '1s/^/use uav_process;\n/' uav_process.sql
|
||||
|
||||
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF admin_user sys_weak_password sys_platform sys_platform_attr sys_resource sys_resource_api sys_resource_attr sys_action_api xxl_job_group xxl_job_info xxl_job_lock sys_resource_group sys_resource_group_template sys_tenant_config sys_group_resource_mapping >admin_user.sql
|
||||
sed -i '1s/^/use admin_user;\n/' admin_user.sql
|
||||
|
||||
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF uav_user sys_weak_password sys_resource sys_resource_api sys_resource_attr sys_action_api sys_group_resource_mapping sys_resource_group sys_resource_group_template >uav_user.sql
|
||||
sed -i '1s/^/use uav_user;\n/' uav_user.sql
|
||||
|
||||
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF uav_oauth oauth_client_details >uav_oauth.sql
|
||||
sed -i '1s/^/use uav_oauth;\n/' uav_oauth.sql
|
||||
|
||||
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF uav_mission calendar num >uav_mission.sql
|
||||
sed -i '1s/^/use uav_mission;\n/' uav_mission.sql
|
||||
|
||||
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF admin_data sys_area_config sys_area_pinyin sys_dictionary sys_dictionary_attr sys_dictionary_type sys_language uav_dev_action_match uav_dev_type_match uav_hangar_model uav_load_cam_model uav_load_spk_model uav_plane_model >admin_data.sql
|
||||
sed -i '1s/^/use admin_data;\n/' admin_data.sql
|
||||
|
||||
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF cmii_material_warehouse mw_scr >cmii_material_warehouse.sql
|
||||
sed -i '1s/^/use cmii_material_warehouse;\n/' cmii_material_warehouse.sql
|
||||
|
||||
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF uav_brain scene_category_config scene_type_config >uav_brain.sql
|
||||
sed -i '1s/^/use uav_brain;\n/' uav_brain.sql
|
||||
|
||||
#/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF nacos_config config_info his_config_info roles users > nacos_config.sql
|
||||
#sed -i '1s/^/use nacos_config;\n/' nacos_config.sql
|
||||
|
||||
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF cmii_live_srs_op live_hls_sync_hq live_hub >cmii_live_srs_op.sql
|
||||
sed -i '1s/^/use cmii_live_srs_op;\n/' cmii_live_srs_op.sql
|
||||
|
||||
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF suav_supervision airport sys_area_config sys_area_pinyin >suav_supervision.sql
|
||||
sed -i '1s/^/use suav_supervision;\n/' suav_supervision.sql
|
||||
|
||||
/root/wdd/mysql/bin/mysqldump --login-path=root13306 -t --set-gtid-purged=OFF uav_gis emergence >uav_gis.sql
|
||||
sed -i '1s/^/use uav_gis;\n/' uav_gis.sql
|
||||
Reference in New Issue
Block a user