[agent-operator] - cmii deploy part - basic accomplished

This commit is contained in:
zeaslity
2024-06-14 11:41:38 +08:00
parent d86bc43b28
commit f3db4a9ff6
7 changed files with 202 additions and 102 deletions

View File

@@ -2,7 +2,6 @@ package agent_deploy
import (
"os"
"strings"
image2 "wdd.io/agent-common/image"
"wdd.io/agent-common/logger"
"wdd.io/agent-common/utils"
@@ -168,72 +167,49 @@ func configMapDeploy(common *z_dep.CommonEnvironmentConfig) {
}
// CmiiEnvironmentDeploy 部署完整的CMII环境的所有组件
func CmiiEnvironmentDeploy(isCompleteDeploy bool, cmiiNameSpace string, backendImageVersionMap, frontendImageVersionMap map[string]string) (applyYamlFolder string) {
folderPrefix := "/home/wdd/IdeaProjects/ProjectOctopus/agent-deploy/" + cmiiNameSpace + "/"
tenantEnv := cmiiNameSpace
if strings.Contains(cmiiNameSpace, "-") {
split := strings.Split(cmiiNameSpace, "-")
tenantEnv = split[len(split)-1]
}
// common environment
common := &z_dep.CommonEnvironmentConfig{
WebIP: "lab.uavcmlc.com",
WebPort: "",
HarborIP: image2.CmiiHarborPrefix,
HarborPort: "",
Namespace: cmiiNameSpace,
TagVersion: "5.5.0",
TenantEnv: tenantEnv,
ApplyFilePrefix: folderPrefix,
}
func CmiiEnvironmentDeploy(isCompleteDeploy bool, commonEnv *z_dep.CommonEnvironmentConfig, backendImageVersionMap, frontendImageVersionMap map[string]string) {
// clear old apply file
_ = os.Mkdir(folderPrefix, os.ModePerm)
_ = os.Mkdir(commonEnv.ApplyFilePrefix, os.ModePerm)
oldApplyFileFolder := folderPrefix + "old"
oldApplyFileFolder := commonEnv.ApplyFilePrefix + "old"
utils.RemoveFolderComplete(oldApplyFileFolder)
_ = os.Mkdir(oldApplyFileFolder, os.ModePerm)
// move all apply file to old folder
_ = utils.FolderMoveFiles(folderPrefix, oldApplyFileFolder)
_ = utils.FolderMoveFiles(commonEnv.ApplyFilePrefix, oldApplyFileFolder)
// clear all middleware data
// ignore redis rabbitmq mongo nacos emqx
// sync mysql-data
// generate
common.GenerateApplyFilePath()
commonEnv.GenerateApplyFilePath()
// generate new apply file for specific environment
if isCompleteDeploy {
// pvc
b_middle.PVCDeploy(common)
b_middle.PVCDeploy(commonEnv)
// middlewares
b_middle.MidMySQlDeploy(common)
b_middle.MidRedisDeploy(common)
b_middle.MidEmqxDeploy(common)
b_middle.MidMongoDeploy(common)
b_middle.MidRabbitMQDeploy(common)
b_middle.MidNacosDeploy(common)
b_middle.MidMySQlDeploy(commonEnv)
b_middle.MidRedisDeploy(commonEnv)
b_middle.MidEmqxDeploy(commonEnv)
b_middle.MidMongoDeploy(commonEnv)
b_middle.MidRabbitMQDeploy(commonEnv)
b_middle.MidNacosDeploy(commonEnv)
configMapDeploy(common)
c_app.IngressDeploy(common)
configMapDeploy(commonEnv)
c_app.IngressDeploy(commonEnv)
}
// frontend
// frontend
frontendDeploy(common, frontendImageVersionMap)
frontendDeploy(commonEnv, frontendImageVersionMap)
// backend
backendDeploy(common, backendImageVersionMap)
backendDeploy(commonEnv, backendImageVersionMap)
// apply for them
return folderPrefix
}

View File

@@ -4,6 +4,7 @@ import (
"bytes"
"fmt"
"github.com/go-playground/validator/v10"
"path/filepath"
"text/template"
"wdd.io/agent-common/assert"
"wdd.io/agent-common/logger"
@@ -82,22 +83,21 @@ func (env *CommonEnvironmentConfig) GenerateApplyFilePath() {
Asserter.NotEmpty(env.ApplyFilePrefix, "apply file prefix is empty!")
K8sDashboardApplyFilePath = env.ApplyFilePrefix + "k8s-dashboard.yaml"
EmqxApplyFilePath = env.ApplyFilePrefix + "k8s-emqx.yaml"
MongoApplyFilePath = env.ApplyFilePrefix + "k8s-mongo.yaml"
RabbitMQApplyFilePath = env.ApplyFilePrefix + "k8s-rabbitmq.yaml"
RedisApplyFilePath = env.ApplyFilePrefix + "k8s-redis.yaml"
MySQLApplyFilePath = env.ApplyFilePrefix + "k8s-mysql.yaml"
NacosApplyFilePath = env.ApplyFilePrefix + "k8s-nacos.yaml"
PVCApplyFilePath = env.ApplyFilePrefix + "k8s-pvc.yaml"
NfsApplyFilePath = env.ApplyFilePrefix + "k8s-nfs.yaml"
NfsTestApplyFilePath = env.ApplyFilePrefix + "k8s-nfs-test.yaml"
BackendApplyFilePath = env.ApplyFilePrefix + "k8s-backend.yaml"
FrontendApplyFilePath = env.ApplyFilePrefix + "k8s-frontend.yaml"
SRSApplyFilePath = env.ApplyFilePrefix + "k8s-srs.yaml"
IngresApplyFilePath = env.ApplyFilePrefix + "k8s-ingress.yaml"
ConfigMapApplyFilePath = env.ApplyFilePrefix + "k8s-configmap.yaml"
K8sDashboardApplyFilePath = filepath.Join(env.ApplyFilePrefix, "k8s-dashboard.yaml")
EmqxApplyFilePath = filepath.Join(env.ApplyFilePrefix, "k8s-emqx.yaml")
MongoApplyFilePath = filepath.Join(env.ApplyFilePrefix, "k8s-mongo.yaml")
RabbitMQApplyFilePath = filepath.Join(env.ApplyFilePrefix, "k8s-rabbitmq.yaml")
RedisApplyFilePath = filepath.Join(env.ApplyFilePrefix, "k8s-redis.yaml")
MySQLApplyFilePath = filepath.Join(env.ApplyFilePrefix, "k8s-mysql.yaml")
NacosApplyFilePath = filepath.Join(env.ApplyFilePrefix, "k8s-nacos.yaml")
PVCApplyFilePath = filepath.Join(env.ApplyFilePrefix, "k8s-pvc.yaml")
NfsApplyFilePath = filepath.Join(env.ApplyFilePrefix, "k8s-nfs.yaml")
NfsTestApplyFilePath = filepath.Join(env.ApplyFilePrefix, "k8s-nfs-test.yaml")
BackendApplyFilePath = filepath.Join(env.ApplyFilePrefix, "k8s-backend.yaml")
FrontendApplyFilePath = filepath.Join(env.ApplyFilePrefix, "k8s-frontend.yaml")
SRSApplyFilePath = filepath.Join(env.ApplyFilePrefix, "k8s-srs.yaml")
IngresApplyFilePath = filepath.Join(env.ApplyFilePrefix, "k8s-ingress.yaml")
ConfigMapApplyFilePath = filepath.Join(env.ApplyFilePrefix, "k8s-configmap.yaml")
}

View File

@@ -1,25 +1,47 @@
package main
import (
"fmt"
"os"
"path/filepath"
"strings"
image2 "wdd.io/agent-common/image"
"wdd.io/agent-common/utils"
agent_deploy "wdd.io/agent-deploy"
"wdd.io/agent-deploy/z_dep"
"wdd.io/agent-operator/image"
)
func CmiiEnvDeploy() {
// 完整部署
shouldDoCompleteDeploy := true
// 部署的环境
cmiiNamespace := dev
// 完整部署
shouldDoCompleteDeploy := true
// 输出特定版本的Tag 或者 从DEMO环境拉取
DeploySpecificTag := "5.5.0"
folderPrefix := "/home/wdd/IdeaProjects/ProjectOctopus/agent-deploy/" + cmiiNamespace + "/"
tenantEnv := cmiiNamespace
if strings.Contains(cmiiNamespace, "-") {
split := strings.Split(cmiiNamespace, "-")
tenantEnv = split[len(split)-1]
}
// common environment
common := &z_dep.CommonEnvironmentConfig{
WebIP: "lab.uavcmlc.com",
WebPort: "",
HarborIP: image2.CmiiHarborPrefix,
HarborPort: "",
Namespace: cmiiNamespace,
TagVersion: DeploySpecificTag,
TenantEnv: tenantEnv,
ApplyFilePrefix: folderPrefix,
}
var backendMap map[string]string
var frontendMap map[string]string
var srsMap map[string]string
@@ -37,35 +59,77 @@ func CmiiEnvDeploy() {
utils.BeautifulPrintWithTitle(srsMap, "srsMap")
// generate and get all old stuff
applyYamlFolder := agent_deploy.CmiiEnvironmentDeploy(shouldDoCompleteDeploy, cmiiNamespace, backendMap, frontendMap)
fmt.Println(applyYamlFolder)
agent_deploy.CmiiEnvironmentDeploy(shouldDoCompleteDeploy, common, backendMap, frontendMap)
// test
//GetNodeWideByKubectl(cmiiNamespace)
GetNodeWideByKubectl(cmiiNamespace)
// clear old apply file
//clearOldApplyStuff(applyYamlFolder+"old/", cmiiNamespace)
// apply new app
//applyNewAppStuff(applyYamlFolder, cmiiNamespace)
//applyNewAppStuff(common, shouldDoCompleteDeploy)
}
func applyNewAppStuff(applyYamlFolder string, cmiiEnv string) bool {
files, err := os.ReadDir(applyYamlFolder)
func applyNewAppStuff(common *z_dep.CommonEnvironmentConfig, shouldDoCompleteDeploy bool) bool {
files, err := os.ReadDir(common.ApplyFilePrefix)
if err != nil {
log.ErrorF("failed to read directory: %v", err)
return false
}
if len(files) == 0 {
log.WarnF("no apply file found in %s", common.ApplyFilePrefix)
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)
namespace := common.Namespace
if shouldDoCompleteDeploy {
// mysql
ApplyByKubectl(z_dep.MySQLApplyFilePath, namespace)
if !DefaultCmiiOperator.PodStatusCheckTimeout("helm-mysql-0", namespace, 180) {
return false
}
// mongo
ApplyByKubectl(z_dep.MongoApplyFilePath, namespace)
if !DefaultCmiiOperator.PodStatusCheckTimeout("helm-mongo-0", namespace, 180) {
return false
}
// redis
ApplyByKubectl(z_dep.RedisApplyFilePath, namespace)
if !DefaultCmiiOperator.PodStatusCheckTimeout("helm-redis-master-0", namespace, 180) {
return false
}
if !DefaultCmiiOperator.PodStatusCheckTimeout("helm-redis-replicas-0", namespace, 180) {
return false
}
// rabbitmq
ApplyByKubectl(z_dep.RabbitMQApplyFilePath, namespace)
if !DefaultCmiiOperator.PodStatusCheckTimeout("helm-rabbitmq-0", namespace, 180) {
return false
}
// nacos
ApplyByKubectl(z_dep.NacosApplyFilePath, namespace)
if !DefaultCmiiOperator.PodStatusCheckTimeout("helm-nacos-0", namespace, 180) {
return false
}
}
// frontend
ApplyByKubectl(z_dep.IngresApplyFilePath, namespace)
ApplyByKubectl(z_dep.ConfigMapApplyFilePath, namespace)
ApplyByKubectl(z_dep.FrontendApplyFilePath, namespace)
// backend
ApplyByKubectl(z_dep.BackendApplyFilePath, namespace)
return true
}
@@ -78,7 +142,7 @@ func clearOldApplyStuff(oldApplyYamlFolder string, cmiiEnv string) bool {
}
// rearrange
rearrangeCmiiDeploySequence(files)
//rearrangeCmiiDeploySequence(files)
for _, file := range files {
if filepath.Ext(file.Name()) == ".yaml" || filepath.Ext(file.Name()) == ".yml" {
@@ -92,21 +156,11 @@ func clearOldApplyStuff(oldApplyYamlFolder string, cmiiEnv string) bool {
// rearrangeCmiiDeploySequence 重新排序CmiiDeploy顺序
func rearrangeCmiiDeploySequence(files []os.DirEntry) {
k8s - backend.yaml
k8s - configmap.yaml
k8s - emqx.yaml
k8s - frontend.yaml
k8s - ingress.yaml
k8s - mongo.yaml
k8s - mysql.yaml
k8s - nacos.yaml
k8s - pvc.yaml
k8s - rabbitmq.yaml
k8s - redis.yaml
for _, file := range files {
if filepath.Ext(file.Name()) == ".yaml" || filepath.Ext(file.Name()) == ".yml" {
filePath := filepath.Join(oldApplyYamlFolder, file.Name())
DeleteByKubectl(filePath, cmiiEnv)
//filePath := filepath.Join(oldApplyYamlFolder, file.Name())
//DeleteByKubectl(filePath, cmiiEnv)
}
}
}

View File

@@ -50,8 +50,8 @@ const (
workerThread = 4
)
var CmiiDevClusterK8sConfig string
var CmiiCoreClusterK8sConfig string
var CmiiDevClusterK8sConfig string // used for kubectl
var CmiiCoreClusterK8sConfig string // used for kubectl
func init() {
@@ -953,6 +953,35 @@ func (op *CmiiK8sOperator) PodExec(cmiiEnv string, podInterface CmiiPodInterface
return stdout, stderr
}
func (op *CmiiK8sOperator) PodStatusCheckTimeout(specificPod string, cmiiEnv string, waitTimeOut int) bool {
op.changeOperatorEnv(cmiiEnv)
client := op.CurrentClient
// 设置超时时间和时间间隔
timeout := time.After(time.Duration(waitTimeOut) * time.Second)
tick := time.Tick(5 * time.Second)
// 监控Pod状态
for {
select {
case <-timeout:
log.ErrorF("[K8sCheckPodStatusTimeout] - 命名空间: [%s], Pod名称: [%s], 状态: 失败!", cmiiEnv, specificPod)
return false
case <-tick:
pod, err := client.CoreV1().Pods(cmiiEnv).Get(context.TODO(), specificPod, metav1.GetOptions{})
if err != nil {
log.ErrorF("[K8sCheckPodStatusTimeout] - 命名空间: [%s], Pod名称: [%s], 获取Pod信息失败 ", cmiiEnv, err.Error())
} else {
log.DebugF("[K8sCheckPodStatusTimeout] - 命名空间: [%s], Pod名称: [%s], 状态: [%s]", cmiiEnv, pod.Name, pod.Status.Phase)
if pod.Status.Phase == corev1.PodRunning || pod.Status.Phase == corev1.PodSucceeded {
return true
}
}
}
}
}
func (op *CmiiK8sOperator) NodeAll(cmiiEnv string) (nodeListR []corev1.Node) {
op.changeOperatorEnv(cmiiEnv)
client := op.CurrentClient

View File

@@ -1,6 +1,28 @@
package config
var CmiiDevK8sConfig = `apiVersion: v1
var CmiiDevK8sConfig = `
apiVersion: v1
kind: Config
clusters:
- cluster:
api-version: v1
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN3akNDQWFxZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFTTVJBd0RnWURWUVFERXdkcmRXSmwKTFdOaE1CNFhEVEkwTURZd05UQTRNakl4T0ZvWERUTTBNRFl3TXpBNE1qSXhPRm93RWpFUU1BNEdBMVVFQXhNSAphM1ZpWlMxallUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUxsWFhmZGwrbkxnCkt2RnV6OFVkNTQ0T2Q2M1RpaHNOYzMvZlJZSXdEcWNLcXo3ditEQVZzYTZXem94WUxHK1BOaDFHbzZYeXBKSXoKV1hWNFN4NC9mVXo0S2hpMW5mY3RnSkVReVdnU3ZkbDVpcEQxaTJIRkEvR3Jnb3R2RkljN0IwRExVdzBrb3F0Ygo2QzlSYnhNSFFpWk1yZXlzelJYWXRGN3J1c1dHb2J5eGc5RFZsczdTWmdGMjhOSkZXOHNFa0FMaWRwMTBUVENECk05QkhENXdEQkRVMGsyMzFRaE1lY3IzL2YzZDVvOG8vVklLTWs0VDFIZ2lMM0NuZmZlc2FGeTNVSnlxSnBERkUKYmtici9uSmNxcXZ5emxnQ1hsSEtTUlN1ZFN1QkVhbHVRbTczSC83b05oVHE2Y1BkN0hwUHdnK3BTR0kvd0h6NwpHaHNReVVCRXNoa0NBd0VBQWFNak1DRXdEZ1lEVlIwUEFRSC9CQVFEQWdLa01BOEdBMVVkRXdFQi93UUZNQU1CCkFmOHdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBREJUSlc0ckNQSFNraVQzZ1RsQWJ5a0VsMlF4cFBwRHRLdWwKUHU0cDVsQ0RUZWhJTWFabnlnREZMajlpN2tQQ3lGb1JQaFRxcyswaWVId0p3N2xYWG00dnNOTGZXajN3MDV1Rgo0dnM1N0JRZTI2VzBSZWNMdG5iUFNYVXBJdDBxcjV2VVcwVkYxNk1wdm40ZzZIL2Rvc0hxOUlHcTBMWFpWaU5sClhPUUgvUXZNOG5xTWM4RHFaSG9DUzNvQ3NGQWVTeHd2eFQvY3QwRDUwVWE3ZWtlRllVLzZkSzY0dkk5bzJhY0UKSWc1UkhnM0NlR2RNN2VLdXN1bUpjL1FOeHZTd3pwS0xjWjlzNnpLODVRdlB2dFlTWmRYVEhmdlVENUpHdlFoQwpjLzlMci9BV0hBWUxOOXpOSEdOdE9nK0h1TTBPVHZKeWZkYnF0dVJXTklOL2NlYmhnTTA9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
server: "https://192.168.35.178:6443"
name: "rke-cluster"
contexts:
- context:
cluster: "rke-cluster"
user: "kube-admin-rke-cluster"
name: "rke-cluster"
current-context: "rke-cluster"
users:
- name: "kube-admin-rke-cluster"
user:
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM2VENDQWRHZ0F3SUJBZ0lJQmtVSkFlMU9yMW93RFFZSktvWklodmNOQVFFTEJRQXdFakVRTUE0R0ExVUUKQXhNSGEzVmlaUzFqWVRBZUZ3MHlOREEyTURVd09ESXlNVGhhRncwek5EQTJNRE13T0RJeU1UbGFNQzR4RnpBVgpCZ05WQkFvVERuTjVjM1JsYlRwdFlYTjBaWEp6TVJNd0VRWURWUVFERXdwcmRXSmxMV0ZrYldsdU1JSUJJakFOCkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXNLTS9KclZCRjJhejV5Wlcwb0ZoN0dCNnhkYW8KWjh4cnk2MXBob0FmM3gxbmxJUkhtK08vaDdCbVdpNXBCciswV1FOUEJNV3pXT3FCa1VDcWVrZHJEd3VqM3VpZQoxVzJ0d2tUUDhmb1NZK1ZQY2xPWkJIR0NrNzZad0N0SFlTb05mci9PcHQyb2grNFptVUdlcFJjNndrYzNXTkxXClB6djh0NUFTZGJTbnYxUXZJaVg5Z1kySWpjRlU0YUdudW9PQ29Rdzd5OUdIOWJOMHMwM2hMN0kraXhoTm16TlIKajVoOEU4SGhPVzhSZXVwUzBDSlVVazZwSzZRUFcwd0hRME9pajVIV1JZRmd1aTFDaE9vcTN0emVlVTBvRytRegpPN1M1bFB0NExYdFpGN1NvSWFMb1A5bG9valpMWFhlY21QcnBTS3NOY2p2K3FnNk93d3BhZXNDaG5RSURBUUFCCm95Y3dKVEFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUhBd0l3RFFZSktvWkkKaHZjTkFRRUxCUUFEZ2dFQkFEcHJJMGRtZTMrK0RRWmVTNjRuSHBySHBwNGxFU2t5UkNsNVdjd3gvR00yc2s5bQp5Z0Jmcjlkd2dJQmFpSU5XQld3YWFlWVdBaS91dXJTRTZ2cUxkeUNlVkRNeGlQWnhPS3hLd3ZtWFpHL2lsRkxjCk50TEg5R3pGY0RqdUM4QndpRDAxbnlaTHZsRVV3TW9DVEpQNi96VGRpV3JqU1VHVXVIN1FkTHhNN29ROU4za0YKNm5qUzlZV2JYU1hVckNXc2pna1lIMmphTXEyZzFuNU9mN3JQOXptZjJBZ1VVVUlmYzhIaS9RQWx6eWRIdlFqUQpHNlFGUjF4aGg0ZzFtcUw5aWQyek1sZXQvZXNqSWlwemZJMzF4L1lvd2lnNlZPeDhkQWNQMFZBZXpOS3Y3cmJaCkdYSFNwcEJrOS9GdFFyMytWTitsTWVtS2dqTG40Tk1EZjkzOTcxcz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBc0tNL0pyVkJGMmF6NXlaVzBvRmg3R0I2eGRhb1o4eHJ5NjFwaG9BZjN4MW5sSVJICm0rTy9oN0JtV2k1cEJyKzBXUU5QQk1XeldPcUJrVUNxZWtkckR3dWozdWllMVcydHdrVFA4Zm9TWStWUGNsT1oKQkhHQ2s3Nlp3Q3RIWVNvTmZyL09wdDJvaCs0Wm1VR2VwUmM2d2tjM1dOTFdQenY4dDVBU2RiU252MVF2SWlYOQpnWTJJamNGVTRhR251b09Db1F3N3k5R0g5Yk4wczAzaEw3SStpeGhObXpOUmo1aDhFOEhoT1c4UmV1cFMwQ0pVClVrNnBLNlFQVzB3SFEwT2lqNUhXUllGZ3VpMUNoT29xM3R6ZWVVMG9HK1F6TzdTNWxQdDRMWHRaRjdTb0lhTG8KUDlsb29qWkxYWGVjbVBycFNLc05janYrcWc2T3d3cGFlc0NoblFJREFRQUJBb0lCQUM1QzB1dEVWVVBYdGc0MwowRTFaYlZnRy9LQ0wwNWM3eG8rVlh5bkdySkkybFVZa1RzelpIUFJna3EzVHNkWCtwekVZMkwwYk9obHpjWE9sClNBQzJhNmVKR09Yc2JvemZLTDdVWHRHMCtOUUkzb0hHdXpDYXVlUVA2eHlWT1NDTmJ2TmZNTFFySVZSWVc0UHoKMTZUTkxLcHRGR1hDOGpHbGVFNXJBU3Fxb2JSTjNHeG01R08xL0ppOHlvcG5sbVdnV0VKUjUyWXI2SVFBNk1xMQpYQXNGYzZ6UlRhVHRsN000Z3ZRU3VONVNKT1BZdkpscGJYejZ1WDRGcTRSUFc5dEFLekN5cFVDam05WGdaZ2FHCktpaHEwWVY1ZWMybFYveVZlTjBTMUs1NS9ZL3ZsOHNTNC9XbmZlZk1na2FBbytEc3FJOS9lSzduOUNQZkNUc3EKQ2VTUkJJRUNnWUVBNEtvbzJNcTkxemlJSE9BRXpTNjNKaVlzY2VqTCs5bCtCM1FUV1RteE1jc2MrUnptUW5OMQp3dllzaTdnSkVsR3hnVHJ3ai9KT3NhM1hCUnJPL0NjOXZQYzhNNnR0UEliUjVNZ29lSzFNalBvMGdhTmlsV1F5CnlScUh5RzlOMWMrMEhOZnFyUFAydzVhMysvQmZ5VS9mVEI5a0RjMU1waDZWaHNzQ2VuakhoOWtDZ1lFQXlVWSsKS1NaVzc5RFJYS1k5N0U1OG9MRGt4ajhXUllpMVlwTFc2djJPLy9McXBmU08ycmR0USs5aHR0cklrUC9hZlc0MAowMzRmOTVsKzNPR0c0b0I5VytNdUhIOVdtR1ZKNHljUlJhSk9YWXNhVk42Smh1ZGE5Y0FGRFJkRkJLZVBVRjB3Ck9NaFlBSU9OYnRKcFdENXJ0djNZTlM3ckg4K2QweU1kc2RvVHNXVUNnWUFiTFhwemYxTW56ZmJwUjFCTllmRlYKOUJnOFQyVWR1bG04blJZYUhSaUtaWC9Ed3ZNMzVxL0FQZmQxajNYSmVZaDNrYUc0U0Irczd0S3NFMm9tcHJpWgpPMjlVOE0vdUdvRVpvLzBCWERWK2VHWVJxS29zV0Vxc2VVRWp4aE1zWWt2dmtVOGFUUWowOEM2aGs1cUN4OTdEClhxakQ0cW43RG9nWUhrYldlZlhwUVFLQmdDbTdHcUJGaHJqcVByNUs2WVBaTWhYUEYxL1RMTGIyQlVXTzFHaWMKY2MyM2U5YzB3WG12bGtRRG1lcmpxYm9Ha2pKM2F4UitqZm8wSlExKzVReUpQM1NSd2JtKzNTRnp2c0lPRTVLdwplRGNFNUV5OFp4OUZVS0tyVVdESmRsSGt1OTRadENuUndBMDdPVlBFNUhxYlZwSDJSNkdmUExpM3Z5MUxscGlOCmNvL1JBb0dCQUl4OHloK1lLOHpHUlR2aTFseUdTTG90eFlWdlZMbWc4bG9CRmFzUS9tR0RhTk1rNVZ6cS9mUmgKbHU1dGUzWjhtYmxvTExUdzd1OUhRcGM3UGNqVklFV21DazBhYVA4YUs5VkpGYVQzV0xzWG1nRGIrb0tuNG9DVgpTSzZsOWVlQS9uWDA1Uk5xMEx0ekR3d3JNa2paR1VYZ3FldXJvTTF2cjJ2a2RLTkxhWEtmCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==
`
var CmiiDevOldK8sConfig = `apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeE1ERXhPREEyTURZeU5Gb1hEVE14TURFeE5qQTJNRFl5TkZvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBS2ZNCjFjTjBNUnhUTkRGdEZxcnRIZ0RPM29SV0dicmVob3VFcDJ3VUVRbU8yRUFyZDdkMUFReTJsSm9WM0RUVmhXbUwKcUFUOFcxaWRaS0x0Wm5mNjEva3JPeDd0U2lJeU4xa1ErN3NYRUhnTjVMc01EOVlKcndpUFdFY2FXdU9HVmI1aApMWDZWOTRjN0U5UlFDOENtd09iSkRCNG45ZE8zcDVlTDJHaFRpMkNrRWt3ZkRPR0tEL1IxeUNaK0tFcDRWWlplCnpwcnUzRG5zOUNqZHVOT1VBWTZzUGxjazNvdEdIVnhnRC9IRlRjUEhNbGhvUVQ4dmNDOTZwc0FtYXZPR1BZQ0YKa3RtN0VWYkZDOHN5Q1BMT3AwWWhTWHRkbGtKaC9UWHBaM0hSUWJxSzVPNXR4K1dGL05qMGJVc202ZldSMzZWQgpKQVVscUJIeFhSTzhGTFNrVHkwQ0F3RUFBYU1qTUNFd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFKeWZ2T3hHVVYvT2wybGRQNnYxeWFSTkd5RVkKWkVxTmM2Y29LSklsd0VQNUxNYzdZNGFReWorZCtVTE4zYmIrOXZsZXdHamluTHRrUW5HZ1R3Q3pKTU5ZNlNJNQo2NzJGZEtQTE85Szdpalhway9qRE9FVHJWS25aMXJBTytOUVBmSVhpcXQ3Y1RyVHlaVzdKTVl3emZNa2VlTGErCnREdmY1Rm5vQTBLN2U3a0ZXNTBpN2pXcGh4RXRMNEJpNzAwNnU4NEpqTU5weVp1MzhKMjFXZkR1RjBoU0NQREgKS0x4cnZIZ0FOYzJWU1c2L3JPaVVCQjdiV0JkcWcyQUNVRWZwN0V3UGs2S1BsdGNiNTJtdFhCU2xiQ3pRWWw4UQpmNmVGRFIrbnRjeXNGbU1FMFI3M1lNSHJwR0dGdlduSDVaTmEyVEJYdHpwN2tNNkVPREE5a2R4WkI1dz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=

View File

@@ -1,18 +1,19 @@
apiVersion: v1
kind: Config
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeE1ERXhPREEyTURZeU5Gb1hEVE14TURFeE5qQTJNRFl5TkZvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBS2ZNCjFjTjBNUnhUTkRGdEZxcnRIZ0RPM29SV0dicmVob3VFcDJ3VUVRbU8yRUFyZDdkMUFReTJsSm9WM0RUVmhXbUwKcUFUOFcxaWRaS0x0Wm5mNjEva3JPeDd0U2lJeU4xa1ErN3NYRUhnTjVMc01EOVlKcndpUFdFY2FXdU9HVmI1aApMWDZWOTRjN0U5UlFDOENtd09iSkRCNG45ZE8zcDVlTDJHaFRpMkNrRWt3ZkRPR0tEL1IxeUNaK0tFcDRWWlplCnpwcnUzRG5zOUNqZHVOT1VBWTZzUGxjazNvdEdIVnhnRC9IRlRjUEhNbGhvUVQ4dmNDOTZwc0FtYXZPR1BZQ0YKa3RtN0VWYkZDOHN5Q1BMT3AwWWhTWHRkbGtKaC9UWHBaM0hSUWJxSzVPNXR4K1dGL05qMGJVc202ZldSMzZWQgpKQVVscUJIeFhSTzhGTFNrVHkwQ0F3RUFBYU1qTUNFd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFKeWZ2T3hHVVYvT2wybGRQNnYxeWFSTkd5RVkKWkVxTmM2Y29LSklsd0VQNUxNYzdZNGFReWorZCtVTE4zYmIrOXZsZXdHamluTHRrUW5HZ1R3Q3pKTU5ZNlNJNQo2NzJGZEtQTE85Szdpalhway9qRE9FVHJWS25aMXJBTytOUVBmSVhpcXQ3Y1RyVHlaVzdKTVl3emZNa2VlTGErCnREdmY1Rm5vQTBLN2U3a0ZXNTBpN2pXcGh4RXRMNEJpNzAwNnU4NEpqTU5weVp1MzhKMjFXZkR1RjBoU0NQREgKS0x4cnZIZ0FOYzJWU1c2L3JPaVVCQjdiV0JkcWcyQUNVRWZwN0V3UGs2S1BsdGNiNTJtdFhCU2xiQ3pRWWw4UQpmNmVGRFIrbnRjeXNGbU1FMFI3M1lNSHJwR0dGdlduSDVaTmEyVEJYdHpwN2tNNkVPREE5a2R4WkI1dz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
server: https://192.168.11.170:16443
name: kubernetes
api-version: v1
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN3akNDQWFxZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFTTVJBd0RnWURWUVFERXdkcmRXSmwKTFdOaE1CNFhEVEkwTURZd05UQTRNakl4T0ZvWERUTTBNRFl3TXpBNE1qSXhPRm93RWpFUU1BNEdBMVVFQXhNSAphM1ZpWlMxallUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUxsWFhmZGwrbkxnCkt2RnV6OFVkNTQ0T2Q2M1RpaHNOYzMvZlJZSXdEcWNLcXo3ditEQVZzYTZXem94WUxHK1BOaDFHbzZYeXBKSXoKV1hWNFN4NC9mVXo0S2hpMW5mY3RnSkVReVdnU3ZkbDVpcEQxaTJIRkEvR3Jnb3R2RkljN0IwRExVdzBrb3F0Ygo2QzlSYnhNSFFpWk1yZXlzelJYWXRGN3J1c1dHb2J5eGc5RFZsczdTWmdGMjhOSkZXOHNFa0FMaWRwMTBUVENECk05QkhENXdEQkRVMGsyMzFRaE1lY3IzL2YzZDVvOG8vVklLTWs0VDFIZ2lMM0NuZmZlc2FGeTNVSnlxSnBERkUKYmtici9uSmNxcXZ5emxnQ1hsSEtTUlN1ZFN1QkVhbHVRbTczSC83b05oVHE2Y1BkN0hwUHdnK3BTR0kvd0h6NwpHaHNReVVCRXNoa0NBd0VBQWFNak1DRXdEZ1lEVlIwUEFRSC9CQVFEQWdLa01BOEdBMVVkRXdFQi93UUZNQU1CCkFmOHdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBREJUSlc0ckNQSFNraVQzZ1RsQWJ5a0VsMlF4cFBwRHRLdWwKUHU0cDVsQ0RUZWhJTWFabnlnREZMajlpN2tQQ3lGb1JQaFRxcyswaWVId0p3N2xYWG00dnNOTGZXajN3MDV1Rgo0dnM1N0JRZTI2VzBSZWNMdG5iUFNYVXBJdDBxcjV2VVcwVkYxNk1wdm40ZzZIL2Rvc0hxOUlHcTBMWFpWaU5sClhPUUgvUXZNOG5xTWM4RHFaSG9DUzNvQ3NGQWVTeHd2eFQvY3QwRDUwVWE3ZWtlRllVLzZkSzY0dkk5bzJhY0UKSWc1UkhnM0NlR2RNN2VLdXN1bUpjL1FOeHZTd3pwS0xjWjlzNnpLODVRdlB2dFlTWmRYVEhmdlVENUpHdlFoQwpjLzlMci9BV0hBWUxOOXpOSEdOdE9nK0h1TTBPVHZKeWZkYnF0dVJXTklOL2NlYmhnTTA9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
server: "https://192.168.35.178:6443"
name: "rke-cluster"
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: { }
cluster: "rke-cluster"
user: "kube-admin-rke-cluster"
name: "rke-cluster"
current-context: "rke-cluster"
users:
- name: kubernetes-admin
- name: "kube-admin-rke-cluster"
user:
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM4ekNDQWR1Z0F3SUJBZ0lKQU9SWThQZlhadWQyTUEwR0NTcUdTSWIzRFFFQkN3VUFNQlV4RXpBUkJnTlYKQkFNVENtdDFZbVZ5Ym1WMFpYTXdIaGNOTWpJd01URTRNRFl6TmpRMFdoY05Nekl3TVRFMk1EWXpOalEwV2pBMApNUmN3RlFZRFZRUUtEQTV6ZVhOMFpXMDZiV0Z6ZEdWeWN6RVpNQmNHQTFVRUF3d1FhM1ZpWlhKdVpYUmxjeTFoClpHMXBiakNDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPNTZ0ZG51M24rWUsxM3oKZmNlTzNiSmhBL2J0SGpoQXpvRnNObmZjeEY3dlRTZGczSUxySmVNVkFGbG50MHpUL2xacFBlU0ZUN25iL1g1Ygo4RjErSHA2dVR0b0hRVGJHR2VzbEprdkpFMjB3OGJ0Z3VrdlNmTnROOS9NNlFTWWkvTGlHeTZpd2kveGdBVUtKClFtVW1vZmhZSHNKMllFbXJCcExOVFhtenl2a2lUTlJZVC9iNlJJRzNiT3lIVm1Lc1cwQkNQNVZTTFJsLzErZlMKM0dCUUZ2UTNXdTdmVWlzMW9DSXhsc1k5V2VJUmpGOWJDbWtKNnZsT3BWbGlsTlA0cEtSSnl4aXNBNzExNENNWAprRGJvRFBXb2lxMktubzYveXI2L0xwMktsVVVSa1JhQklodEl5eXV2TldPbjhiTW90SUpCNWNOems4UkxYTm5TCklPZEtMVDhDQXdFQUFhTW5NQ1V3RGdZRFZSMFBBUUgvQkFRREFnV2dNQk1HQTFVZEpRUU1NQW9HQ0NzR0FRVUYKQndNQ01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1lwVk9NemlGRUFta1A4S3B2ZWttR3laVGV3dzQreVhyUwo3TEpoWTdTR2pGY210ZldMSW9PWEhmWmZlZWNsN3M5Snh1SytPZlhqU0d0UU9jWXk0WHo5OVFWY2FRandJMEg5Cnc3aWJiYUw3M093RGZrRDMrdlNhME9ZRWZKSFlsNXErQXBnQVpLVWRWazMvZHpJSmhRR0V6L0UxcjdYTlNabDUKL1hOT3pwbzl0VHV2dDAxRlllV0RMN01DeWZGRHFTelpQdnNyWW81bDFiTE5yeEZHb1dvSTdUMlJzR205VXJyYwoyTy84R2hMYTkwZ2tLeE9JTEpYdlJCY2RrOUN4N01ROGFGVHBuSmtPMXJzVzUxMTFoTG5hNm9WRHhISlVrbjRkCmNhODFDV3R1Yk44dkpSYlFwVmkySTJ5K3ljZ3lrNTMzR21GQXNVS3dkdm5rVjNqTVJVbFYKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcGdJQkFBS0NBUUVBN25xMTJlN2VmNWdyWGZOOXg0N2RzbUVEOXUwZU9FRE9nV3cyZDl6RVh1OU5KMkRjCmd1c2w0eFVBV1dlM1ROUCtWbWs5NUlWUHVkdjlmbHZ3WFg0ZW5xNU8yZ2RCTnNZWjZ5VW1TOGtUYlREeHUyQzYKUzlKODIwMzM4enBCSmlMOHVJYkxxTENML0dBQlFvbENaU2FoK0ZnZXduWmdTYXNHa3MxTmViUEsrU0pNMUZoUAo5dnBFZ2JkczdJZFdZcXhiUUVJL2xWSXRHWC9YNTlMY1lGQVc5RGRhN3Q5U0t6V2dJakdXeGoxWjRoR01YMXNLCmFRbnErVTZsV1dLVTAvaWtwRW5MR0t3RHZYWGdJeGVRTnVnTTlhaUtyWXFlanIvS3ZyOHVuWXFWUlJHUkZvRWkKRzBqTEs2ODFZNmZ4c3lpMGdrSGx3M09UeEV0YzJkSWc1MG90UHdJREFRQUJBb0lCQVFDdTE5YldGbFNZdGNjdAoxYVJsRi9DZ3BKSlVpcHA2WWNGRmtFSUs5UmdnQmxESnl6RkE1d2hiQ2YyOGp0Y01BKzFZQzBidWNYTDNjRHZWClZiRFB5dlRHSUVQOWhBNGpDM0RiUHR4cCtkMDlWQUlYQUI3MkVqZXFUZXE1TC8rdDV6N2tSeWV2NE9oeE95NFIKU3pNYm1BeHVXS1VNcTkrQ2cxcUpiTzRkaVYwSjg5cUtidExsclFCeDFxcHNnUjNES1VhVGVNKzVpeFYyQ1Y1bApSNDV4aU43NWRrSkpaZlY2UUV5K3V2UVd0VHk4NUN3R1U2T2hjOXA4d2s0MmFrQS9qM05FTUZiTjdDaDFKbi9RCjRhNUJpMituRUE4dGVvV2FRSzdoeU5CRENWbTFsamFjaFFveGRSNGhCWVUxdkhTbkt4a0c4bDA1K1BpRTZmZFkKaUtyemhGR0JBb0dCQVBwOStKTExzZXJ6dFQ4a2VLU2FSMXBMOHB5MTQ3cmdjdEVhckxJL2ZqY1VMU3c3OUk3UAovWWhIWnhmdm9TZEZ2QTZwNy81eHFCRitaNTM5L1NKNDlLeWFOdGNJbW01UTZKSW9aRGgzWmVVS3lMKzA1YTdRCkNqMU1wZ2hKMlZDT2VPamNxd0NVQkFhcjNWSjd0cXRxRVFCQk9jMnlWU3dzbU5wclMyYmU1S3RCQW9HQkFQTzUKSG9ZVTBMK2tzdzJKUVM5ODF1ZWtrbDMzR1ZWQ2dPUFdGWThhR3VGRGt3Sm84WGk2TmhtKzh2TjlNaGg3WkYzeQpTU3E1U2RJd01pR0IvKzVJaWp1V25DbWszY2RPdGU0VFBsZHFvdjc3Q1FUUmxPNWJCekR0L1VqYVBBam5GS0FpClg4K0V6NUVXOXFSclN2ZXplZHFDRVRBVDhRWThqNk1WY0VCRW96aC9Bb0dCQUphcVRHZ25RdVdhSHF0VENZbWcKRGtqZW81Zmt3NHcwMG5xNWU2UmZFbENZdnk3N0JQY2RYVmFwOC9WdXVkVEFXZ1BMN1VGekpXOFlROFRBNzQvYgpodmVHYm5QYWhlRFNvNEM5OE1JUjl1VFVIcmxJV2xwU1ljWkxJeGFiTEs0S2MrbEVTVXE0dk04eWNwWFpPWjlTCjFkVDhab00xdjRzcGErcjhYRWNNekNmQkFvR0JBSXVuaXI4SDFHbk1CVEYvY1pPMWRDczkyUVR3MzFwRWhqaUgKWnNrZUMwTURCb3o5OTBmWFk4S3k4T0htM2pxN0VkTG5UMWVrM3BFTFB0NkdjRkZvelpUQmczQTFZVU9nYlkwagpCN2p0aU1LVXRDRkh1cEF1SnR1NXMwWDRqeWdHeVlITTBKdkhuV3lrL09WUCthQWYvblhmeTl1QndiMXlIRmcxCm82R2Y4dXNmQW9HQkFKeGlQcGdDODJPckoxazE3V3dyOFI2ZXpxR2VYb0JPRzFlOEN6ZG1UbWFrN3prWDJJelEKSTVjT3dGaTlnREhTbUVMa0dYZnRHZ01EcXF1VHVLdS9OdW9DQS94Z2FrdTQvVHplNktqbzRjc0NDTmFza3VrRQozYnhwSnU5cElYRU5tMXVuNXBZRy90QTF0V1Rtc3dnRjY1anc2RFpTQUFUTFZMSXg3RVRDR0RlOQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM2VENDQWRHZ0F3SUJBZ0lJQmtVSkFlMU9yMW93RFFZSktvWklodmNOQVFFTEJRQXdFakVRTUE0R0ExVUUKQXhNSGEzVmlaUzFqWVRBZUZ3MHlOREEyTURVd09ESXlNVGhhRncwek5EQTJNRE13T0RJeU1UbGFNQzR4RnpBVgpCZ05WQkFvVERuTjVjM1JsYlRwdFlYTjBaWEp6TVJNd0VRWURWUVFERXdwcmRXSmxMV0ZrYldsdU1JSUJJakFOCkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXNLTS9KclZCRjJhejV5Wlcwb0ZoN0dCNnhkYW8KWjh4cnk2MXBob0FmM3gxbmxJUkhtK08vaDdCbVdpNXBCciswV1FOUEJNV3pXT3FCa1VDcWVrZHJEd3VqM3VpZQoxVzJ0d2tUUDhmb1NZK1ZQY2xPWkJIR0NrNzZad0N0SFlTb05mci9PcHQyb2grNFptVUdlcFJjNndrYzNXTkxXClB6djh0NUFTZGJTbnYxUXZJaVg5Z1kySWpjRlU0YUdudW9PQ29Rdzd5OUdIOWJOMHMwM2hMN0kraXhoTm16TlIKajVoOEU4SGhPVzhSZXVwUzBDSlVVazZwSzZRUFcwd0hRME9pajVIV1JZRmd1aTFDaE9vcTN0emVlVTBvRytRegpPN1M1bFB0NExYdFpGN1NvSWFMb1A5bG9valpMWFhlY21QcnBTS3NOY2p2K3FnNk93d3BhZXNDaG5RSURBUUFCCm95Y3dKVEFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUhBd0l3RFFZSktvWkkKaHZjTkFRRUxCUUFEZ2dFQkFEcHJJMGRtZTMrK0RRWmVTNjRuSHBySHBwNGxFU2t5UkNsNVdjd3gvR00yc2s5bQp5Z0Jmcjlkd2dJQmFpSU5XQld3YWFlWVdBaS91dXJTRTZ2cUxkeUNlVkRNeGlQWnhPS3hLd3ZtWFpHL2lsRkxjCk50TEg5R3pGY0RqdUM4QndpRDAxbnlaTHZsRVV3TW9DVEpQNi96VGRpV3JqU1VHVXVIN1FkTHhNN29ROU4za0YKNm5qUzlZV2JYU1hVckNXc2pna1lIMmphTXEyZzFuNU9mN3JQOXptZjJBZ1VVVUlmYzhIaS9RQWx6eWRIdlFqUQpHNlFGUjF4aGg0ZzFtcUw5aWQyek1sZXQvZXNqSWlwemZJMzF4L1lvd2lnNlZPeDhkQWNQMFZBZXpOS3Y3cmJaCkdYSFNwcEJrOS9GdFFyMytWTitsTWVtS2dqTG40Tk1EZjkzOTcxcz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBc0tNL0pyVkJGMmF6NXlaVzBvRmg3R0I2eGRhb1o4eHJ5NjFwaG9BZjN4MW5sSVJICm0rTy9oN0JtV2k1cEJyKzBXUU5QQk1XeldPcUJrVUNxZWtkckR3dWozdWllMVcydHdrVFA4Zm9TWStWUGNsT1oKQkhHQ2s3Nlp3Q3RIWVNvTmZyL09wdDJvaCs0Wm1VR2VwUmM2d2tjM1dOTFdQenY4dDVBU2RiU252MVF2SWlYOQpnWTJJamNGVTRhR251b09Db1F3N3k5R0g5Yk4wczAzaEw3SStpeGhObXpOUmo1aDhFOEhoT1c4UmV1cFMwQ0pVClVrNnBLNlFQVzB3SFEwT2lqNUhXUllGZ3VpMUNoT29xM3R6ZWVVMG9HK1F6TzdTNWxQdDRMWHRaRjdTb0lhTG8KUDlsb29qWkxYWGVjbVBycFNLc05janYrcWc2T3d3cGFlc0NoblFJREFRQUJBb0lCQUM1QzB1dEVWVVBYdGc0MwowRTFaYlZnRy9LQ0wwNWM3eG8rVlh5bkdySkkybFVZa1RzelpIUFJna3EzVHNkWCtwekVZMkwwYk9obHpjWE9sClNBQzJhNmVKR09Yc2JvemZLTDdVWHRHMCtOUUkzb0hHdXpDYXVlUVA2eHlWT1NDTmJ2TmZNTFFySVZSWVc0UHoKMTZUTkxLcHRGR1hDOGpHbGVFNXJBU3Fxb2JSTjNHeG01R08xL0ppOHlvcG5sbVdnV0VKUjUyWXI2SVFBNk1xMQpYQXNGYzZ6UlRhVHRsN000Z3ZRU3VONVNKT1BZdkpscGJYejZ1WDRGcTRSUFc5dEFLekN5cFVDam05WGdaZ2FHCktpaHEwWVY1ZWMybFYveVZlTjBTMUs1NS9ZL3ZsOHNTNC9XbmZlZk1na2FBbytEc3FJOS9lSzduOUNQZkNUc3EKQ2VTUkJJRUNnWUVBNEtvbzJNcTkxemlJSE9BRXpTNjNKaVlzY2VqTCs5bCtCM1FUV1RteE1jc2MrUnptUW5OMQp3dllzaTdnSkVsR3hnVHJ3ai9KT3NhM1hCUnJPL0NjOXZQYzhNNnR0UEliUjVNZ29lSzFNalBvMGdhTmlsV1F5CnlScUh5RzlOMWMrMEhOZnFyUFAydzVhMysvQmZ5VS9mVEI5a0RjMU1waDZWaHNzQ2VuakhoOWtDZ1lFQXlVWSsKS1NaVzc5RFJYS1k5N0U1OG9MRGt4ajhXUllpMVlwTFc2djJPLy9McXBmU08ycmR0USs5aHR0cklrUC9hZlc0MAowMzRmOTVsKzNPR0c0b0I5VytNdUhIOVdtR1ZKNHljUlJhSk9YWXNhVk42Smh1ZGE5Y0FGRFJkRkJLZVBVRjB3Ck9NaFlBSU9OYnRKcFdENXJ0djNZTlM3ckg4K2QweU1kc2RvVHNXVUNnWUFiTFhwemYxTW56ZmJwUjFCTllmRlYKOUJnOFQyVWR1bG04blJZYUhSaUtaWC9Ed3ZNMzVxL0FQZmQxajNYSmVZaDNrYUc0U0Irczd0S3NFMm9tcHJpWgpPMjlVOE0vdUdvRVpvLzBCWERWK2VHWVJxS29zV0Vxc2VVRWp4aE1zWWt2dmtVOGFUUWowOEM2aGs1cUN4OTdEClhxakQ0cW43RG9nWUhrYldlZlhwUVFLQmdDbTdHcUJGaHJqcVByNUs2WVBaTWhYUEYxL1RMTGIyQlVXTzFHaWMKY2MyM2U5YzB3WG12bGtRRG1lcmpxYm9Ha2pKM2F4UitqZm8wSlExKzVReUpQM1NSd2JtKzNTRnp2c0lPRTVLdwplRGNFNUV5OFp4OUZVS0tyVVdESmRsSGt1OTRadENuUndBMDdPVlBFNUhxYlZwSDJSNkdmUExpM3Z5MUxscGlOCmNvL1JBb0dCQUl4OHloK1lLOHpHUlR2aTFseUdTTG90eFlWdlZMbWc4bG9CRmFzUS9tR0RhTk1rNVZ6cS9mUmgKbHU1dGUzWjhtYmxvTExUdzd1OUhRcGM3UGNqVklFV21DazBhYVA4YUs5VkpGYVQzV0xzWG1nRGIrb0tuNG9DVgpTSzZsOWVlQS9uWDA1Uk5xMEx0ekR3d3JNa2paR1VYZ3FldXJvTTF2cjJ2a2RLTkxhWEtmCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==

View 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=