mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-10-29 17:58:36 +08:00
Merge pull request #3321 from zexi/feature/k8s-import
climc: k8s import cluster support
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
FROM frolvlad/alpine-glibc:glibc-2.28
|
||||
FROM yunion/kubectl:1.14.3
|
||||
|
||||
MAINTAINER "Zexi Li <lizexi@yunionyun.com>"
|
||||
|
||||
|
||||
+119
-144
@@ -16,9 +16,6 @@ package k8s
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"os/exec"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
|
||||
@@ -27,63 +24,21 @@ import (
|
||||
o "yunion.io/x/onecloud/pkg/mcclient/options/k8s"
|
||||
)
|
||||
|
||||
func initCluster() {
|
||||
cmdN := func(suffix string) string {
|
||||
return kubeResourceCmdN("cluster", suffix)
|
||||
func initKubeCluster() {
|
||||
cmdN := func(action string) string {
|
||||
return fmt.Sprintf("kubecluster-%s", action)
|
||||
}
|
||||
|
||||
R(&o.ClusterListOptions{}, cmdN("list"), "List k8s infra clusters", func(s *mcclient.ClientSession, args *o.ClusterListOptions) error {
|
||||
result, err := k8s.Clusters.List(s, args.Params())
|
||||
R(&o.ClusterListOptions{}, cmdN("list"), "List k8s clusters", func(s *mcclient.ClientSession, args *o.ClusterListOptions) error {
|
||||
result, err := k8s.KubeClusters.List(s, args.Params())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printList(result, k8s.Clusters.GetColumns(s))
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.ClusterCreateOptions{}, cmdN("create"), "Create k8s cluster", func(s *mcclient.ClientSession, args *o.ClusterCreateOptions) error {
|
||||
cluster, err := k8s.Clusters.Create(s, args.Params())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(cluster)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.ClusterImportOptions{}, cmdN("import"), "Import exists YKE deployed kubernetes cluster", func(s *mcclient.ClientSession, args *o.ClusterImportOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
cluster, err := k8s.Clusters.PerformAction(s, args.NAME, "import", params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(cluster)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.ClusterUpdateOptions{}, cmdN("update"), "Update k8s cluster", func(s *mcclient.ClientSession, args *o.ClusterUpdateOptions) error {
|
||||
cluster, err := k8s.Clusters.Update(s, args.NAME, args.Params())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(cluster)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.ClusterDeployOptions{}, cmdN("deploy"), "Start deploy a cluster", func(s *mcclient.ClientSession, args *o.ClusterDeployOptions) error {
|
||||
ret, err := k8s.Clusters.PerformAction(s, args.ID, "deploy", args.Params())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
printList(result, k8s.KubeClusters.GetColumns(s))
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("show"), "Show details of a cluster", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
result, err := k8s.Clusters.Get(s, args.ID, nil)
|
||||
result, err := k8s.KubeClusters.Get(s, args.ID, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -91,14 +46,75 @@ func initCluster() {
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.ClusterDeleteOptions{}, cmdN("delete"), "Delete cluster", func(s *mcclient.ClientSession, args *o.ClusterDeleteOptions) error {
|
||||
ret := k8s.Clusters.BatchDeleteWithParam(s, args.ID, nil, nil)
|
||||
printBatchResults(ret, k8s.Clusters.GetColumns(s))
|
||||
R(&o.KubeClusterCreateOptions{}, cmdN("create"), "Create k8s cluster", func(s *mcclient.ClientSession, args *o.KubeClusterCreateOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
cluster, err := k8s.KubeClusters.Create(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(cluster)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.ClusterKubeconfigOptions{}, cmdN("kubeconfig"), "Generate kubeconfig of a cluster", func(s *mcclient.ClientSession, args *o.ClusterKubeconfigOptions) error {
|
||||
ret, err := k8s.Clusters.PerformAction(s, args.ID, "generate-kubeconfig", args.Params())
|
||||
R(&o.KubeClusterImportOptions{}, cmdN("import"), "Import k8s cluster", func(s *mcclient.ClientSession, args *o.KubeClusterImportOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
cluster, err := k8s.KubeClusters.Create(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(cluster)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.ClusterDeleteOptions{}, cmdN("delete"), "Delete cluster", func(s *mcclient.ClientSession, args *o.ClusterDeleteOptions) error {
|
||||
ret := k8s.KubeClusters.BatchDeleteWithParam(s, args.ID, nil, nil)
|
||||
printBatchResults(ret, k8s.KubeClusters.GetColumns(s))
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.KubeClusterAddMachinesOptions{}, cmdN("add-machines"), "Add machines to cluster", func(s *mcclient.ClientSession, args *o.KubeClusterAddMachinesOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.KubeClusters.PerformAction(s, args.ID, "add-machines", params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.KubeClusterDeleteMachinesOptions{}, cmdN("delete-machines"), "Delete machines in cluster", func(s *mcclient.ClientSession, args *o.KubeClusterDeleteMachinesOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.KubeClusters.PerformAction(s, args.ID, "delete-machines", params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("terminate"), "Terminate cluster", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.KubeClusters.PerformAction(s, args.ID, "terminate", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("kubeconfig"), "Generate kubeconfig of a cluster", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.KubeClusters.GetSpecific(s, args.ID, "kubeconfig", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -110,12 +126,12 @@ func initCluster() {
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("engineconfig"), "Get kubernetes engine config of a cluster", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.Clusters.GetSpecific(s, args.ID, "engine-config", nil)
|
||||
R(&o.IdentOptions{}, cmdN("addons"), "Get addon manifest of a cluster", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.KubeClusters.GetSpecific(s, args.ID, "addons", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
conf, err := ret.GetString("config")
|
||||
conf, err := ret.GetString("addons")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -123,94 +139,39 @@ func initCluster() {
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("webhookauthurl"), "Get cluster kubernetes api server webhook auth url", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.Clusters.GetSpecific(s, args.ID, "webhook-auth-url", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
url, err := ret.GetString("url")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Println(url)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.ClusterAddNodesOptions{}, cmdN("addnodes"), "Add nodes to cluster", func(s *mcclient.ClientSession, args *o.ClusterAddNodesOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.Clusters.PerformAction(s, args.ID, "add-nodes", params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.ClusterDeleteNodesOptions{}, cmdN("delete-nodes"), "Delete nodes in cluster", func(s *mcclient.ClientSession, args *o.ClusterDeleteNodesOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.Clusters.PerformAction(s, args.ID, "delete-nodes", params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("engineconfig-edit"), "Edit and update kubernetes engine config of a cluster", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.Clusters.GetSpecific(s, args.ID, "engine-config", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
conf, err := ret.GetString("config")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
tempfile, err := ioutil.TempFile("", fmt.Sprintf("%s-engineconfig", args.ID))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer os.Remove(tempfile.Name())
|
||||
|
||||
if _, err := tempfile.Write([]byte(conf)); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := tempfile.Close(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
cmd := exec.Command("vim", tempfile.Name())
|
||||
cmd.Stdin = os.Stdin
|
||||
cmd.Stdout = os.Stdout
|
||||
if err := cmd.Run(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
R(&o.ClusterK8sVersions{}, cmdN("k8s-versions"), "Get kubernetes deployable versions", func(s *mcclient.ClientSession, args *o.ClusterK8sVersions) error {
|
||||
params := jsonutils.NewDict()
|
||||
configBytes, err := ioutil.ReadFile(tempfile.Name())
|
||||
params.Add(jsonutils.NewString(args.PROVIDER), "provider")
|
||||
ret, err := k8s.KubeClusters.Get(s, "k8s-versions", params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
params.Add(jsonutils.NewString(string(configBytes)), "config")
|
||||
result, err := k8s.Clusters.PerformAction(s, args.ID, "update-engine-config", params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
conf, err = result.GetString("config")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Println(conf)
|
||||
fmt.Println(ret.String())
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("sync-config"), "Sync kubernetes cluster by engineconfig", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.Clusters.PerformAction(s, args.ID, "sync-config", nil)
|
||||
R(&o.ClusterK8sVersions{}, cmdN("usable-instances"), "Get deploy usable instance", func(s *mcclient.ClientSession, args *o.ClusterK8sVersions) error {
|
||||
params := jsonutils.NewDict()
|
||||
params.Add(jsonutils.NewString(args.PROVIDER), "provider")
|
||||
ret, err := k8s.KubeClusters.Get(s, "usable-instances", params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Println(ret.String())
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.ClusterCheckOptions{}, cmdN("check-system-ready"), "Check system cluster status", func(s *mcclient.ClientSession, args *o.ClusterCheckOptions) error {
|
||||
ret, err := k8s.KubeClusters.PerformClassAction(s, "check-system-ready", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Println(ret.String())
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("apply-addons"), "Apply base requirements addons", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.KubeClusters.PerformAction(s, args.ID, "apply-addons", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -218,12 +179,26 @@ func initCluster() {
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.ClusterRestartAgentsOptions{}, cmdN("restart-agent"), "Restart node agents in cluster", func(s *mcclient.ClientSession, args *o.ClusterRestartAgentsOptions) error {
|
||||
params, err := args.Params()
|
||||
R(&o.IdentOptions{}, cmdN("syncstatus"), "Sync cluster status", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.KubeClusters.PerformAction(s, args.ID, "syncstatus", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.Clusters.PerformAction(s, args.ID, "restart-agent", params)
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("public"), "Make cluster public", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.KubeClusters.PerformAction(s, args.ID, "public", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("private"), "Make cluster private", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.KubeClusters.PerformAction(s, args.ID, "private", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -29,10 +29,8 @@ import (
|
||||
|
||||
func init() {
|
||||
// cluster resources
|
||||
initCluster()
|
||||
initKubeCluster()
|
||||
initKubeMachine()
|
||||
initNode()
|
||||
initKubeCerts()
|
||||
|
||||
// helm resources
|
||||
@@ -79,7 +77,7 @@ func kubeResourceCmdN(prefix, suffix string) string {
|
||||
|
||||
func clusterContext(clusterId string) modulebase.ManagerContext {
|
||||
return modulebase.ManagerContext{
|
||||
InstanceManager: k8s.Clusters,
|
||||
InstanceManager: k8s.KubeClusters,
|
||||
InstanceId: clusterId,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
// Copyright 2019 Yunion
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package k8s
|
||||
|
||||
import (
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules/k8s"
|
||||
)
|
||||
|
||||
func initK8sNode() {
|
||||
initK8sClusterResource("node", k8s.K8sNodes)
|
||||
}
|
||||
@@ -1,195 +0,0 @@
|
||||
// Copyright 2019 Yunion
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package k8s
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules/k8s"
|
||||
o "yunion.io/x/onecloud/pkg/mcclient/options/k8s"
|
||||
)
|
||||
|
||||
func initKubeCluster() {
|
||||
cmdN := func(action string) string {
|
||||
return fmt.Sprintf("kubecluster-%s", action)
|
||||
}
|
||||
R(&o.ClusterListOptions{}, cmdN("list"), "List k8s clusters", func(s *mcclient.ClientSession, args *o.ClusterListOptions) error {
|
||||
result, err := k8s.KubeClusters.List(s, args.Params())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printList(result, k8s.KubeClusters.GetColumns(s))
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("show"), "Show details of a cluster", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
result, err := k8s.KubeClusters.Get(s, args.ID, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(result)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.KubeClusterCreateOptions{}, cmdN("create"), "Create k8s cluster", func(s *mcclient.ClientSession, args *o.KubeClusterCreateOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
cluster, err := k8s.KubeClusters.Create(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(cluster)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.ClusterDeleteOptions{}, cmdN("delete"), "Delete cluster", func(s *mcclient.ClientSession, args *o.ClusterDeleteOptions) error {
|
||||
ret := k8s.KubeClusters.BatchDeleteWithParam(s, args.ID, nil, nil)
|
||||
printBatchResults(ret, k8s.Clusters.GetColumns(s))
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.KubeClusterAddMachinesOptions{}, cmdN("add-machines"), "Add machines to cluster", func(s *mcclient.ClientSession, args *o.KubeClusterAddMachinesOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.KubeClusters.PerformAction(s, args.ID, "add-machines", params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.KubeClusterDeleteMachinesOptions{}, cmdN("delete-machines"), "Delete machines in cluster", func(s *mcclient.ClientSession, args *o.KubeClusterDeleteMachinesOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ret, err := k8s.KubeClusters.PerformAction(s, args.ID, "delete-machines", params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("terminate"), "Terminate cluster", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.KubeClusters.PerformAction(s, args.ID, "terminate", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("kubeconfig"), "Generate kubeconfig of a cluster", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.KubeClusters.GetSpecific(s, args.ID, "kubeconfig", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
conf, err := ret.GetString("kubeconfig")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Println(conf)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("addons"), "Get addon manifest of a cluster", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.KubeClusters.GetSpecific(s, args.ID, "addons", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
conf, err := ret.GetString("addons")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Println(conf)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.ClusterK8sVersions{}, cmdN("k8s-versions"), "Get kubernetes deployable versions", func(s *mcclient.ClientSession, args *o.ClusterK8sVersions) error {
|
||||
params := jsonutils.NewDict()
|
||||
params.Add(jsonutils.NewString(args.PROVIDER), "provider")
|
||||
ret, err := k8s.KubeClusters.Get(s, "k8s-versions", params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Println(ret.String())
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.ClusterK8sVersions{}, cmdN("usable-instances"), "Get deploy usable instance", func(s *mcclient.ClientSession, args *o.ClusterK8sVersions) error {
|
||||
params := jsonutils.NewDict()
|
||||
params.Add(jsonutils.NewString(args.PROVIDER), "provider")
|
||||
ret, err := k8s.KubeClusters.Get(s, "usable-instances", params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Println(ret.String())
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.ClusterCheckOptions{}, cmdN("check-system-ready"), "Check system cluster status", func(s *mcclient.ClientSession, args *o.ClusterCheckOptions) error {
|
||||
ret, err := k8s.KubeClusters.PerformClassAction(s, "check-system-ready", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Println(ret.String())
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("apply-addons"), "Apply base requirements addons", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.KubeClusters.PerformAction(s, args.ID, "apply-addons", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("syncstatus"), "Sync cluster status", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.KubeClusters.PerformAction(s, args.ID, "syncstatus", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("public"), "Make cluster public", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.KubeClusters.PerformAction(s, args.ID, "public", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("private"), "Make cluster private", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.KubeClusters.PerformAction(s, args.ID, "private", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
}
|
||||
@@ -26,7 +26,7 @@ func initKubeMachine() {
|
||||
cmdN := func(action string) string {
|
||||
return fmt.Sprintf("kubemachine-%s", action)
|
||||
}
|
||||
R(&o.NodeListOptions{}, cmdN("list"), "List k8s node machines", func(s *mcclient.ClientSession, args *o.NodeListOptions) error {
|
||||
R(&o.MachineListOptions{}, cmdN("list"), "List k8s node machines", func(s *mcclient.ClientSession, args *o.MachineListOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -15,78 +15,9 @@
|
||||
package k8s
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules/k8s"
|
||||
o "yunion.io/x/onecloud/pkg/mcclient/options/k8s"
|
||||
)
|
||||
|
||||
func initNode() {
|
||||
cmdN := func(suffix string) string {
|
||||
return kubeResourceCmdN("node", suffix)
|
||||
}
|
||||
R(&o.NodeListOptions{}, cmdN("list"), "List k8s infra nodes", func(s *mcclient.ClientSession, args *o.NodeListOptions) error {
|
||||
params, err := args.Params()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
result, err := k8s.Nodes.List(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printList(result, k8s.Nodes.GetColumns(s))
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.NodeCreateOptions{}, cmdN("create"), "Create k8s cluster node", func(s *mcclient.ClientSession, args *o.NodeCreateOptions) error {
|
||||
params := args.Params()
|
||||
node, err := k8s.Nodes.Create(s, params)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(node)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("delete"), "Delete node", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.Nodes.Delete(s, args.ID, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("show"), "Show node details", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
obj, err := k8s.Nodes.Get(s, args.ID, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
printObject(obj)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentsOptions{}, cmdN("purge"), "Purge a node record in database, not actually do deletion", func(s *mcclient.ClientSession, args *o.IdentsOptions) error {
|
||||
ret := k8s.Nodes.BatchPerformAction(s, args.ID, "purge", nil)
|
||||
printBatchResults(ret, k8s.Nodes.GetColumns(s))
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.IdentOptions{}, cmdN("dockerconfig"), "Get docker daemon config", func(s *mcclient.ClientSession, args *o.IdentOptions) error {
|
||||
ret, err := k8s.Nodes.GetSpecific(s, args.ID, "docker-config", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Println(ret)
|
||||
return nil
|
||||
})
|
||||
|
||||
R(&o.NodeConfigDockerRegistryOptions{}, cmdN("config-docker-registry"), "Config node docker daemon registry",
|
||||
func(s *mcclient.ClientSession, args *o.NodeConfigDockerRegistryOptions) error {
|
||||
params := args.Params()
|
||||
ret := k8s.Nodes.BatchPerformAction(s, args.ID, "config-docker-registry", params)
|
||||
printBatchResults(ret, k8s.Nodes.GetColumns(s))
|
||||
return nil
|
||||
})
|
||||
func initK8sNode() {
|
||||
initK8sClusterResource("node", k8s.K8sNodes)
|
||||
}
|
||||
|
||||
@@ -64,10 +64,7 @@ var (
|
||||
meterDomainResources = []string{}
|
||||
meterUserResources = []string{}
|
||||
|
||||
k8sSystemResources = []string{
|
||||
"kube_clusters",
|
||||
"kube_nodes",
|
||||
}
|
||||
k8sSystemResources = []string{}
|
||||
k8sDomainResources = []string{}
|
||||
k8sUserResources = []string{}
|
||||
|
||||
|
||||
@@ -19,17 +19,12 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
Clusters *ResourceManager
|
||||
KubeClusters *ResourceManager
|
||||
)
|
||||
|
||||
func init() {
|
||||
Clusters = NewResourceManager("kube_cluster", "kube_clusters",
|
||||
NewResourceCols("mode", "k8s_version", "status", "api_endpoint"),
|
||||
NewColumns("is_public"))
|
||||
KubeClusters = NewResourceManager("kubecluster", "kubeclusters",
|
||||
NewResourceCols("cluster_type", "resource_type", "cloud_type", "version", "status", "mode", "provider", "machines"),
|
||||
NewColumns())
|
||||
modules.Register(Clusters)
|
||||
modules.Register(KubeClusters)
|
||||
}
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
// Copyright 2019 Yunion
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package k8s
|
||||
|
||||
import (
|
||||
"yunion.io/x/onecloud/pkg/mcclient/modules"
|
||||
)
|
||||
|
||||
var (
|
||||
Nodes *ResourceManager
|
||||
)
|
||||
|
||||
func init() {
|
||||
Nodes = NewResourceManager("kube_node", "kube_nodes", NewResourceCols("cluster", "roles", "address", "status"), NewColumns())
|
||||
modules.Register(Nodes)
|
||||
}
|
||||
@@ -20,7 +20,6 @@ import (
|
||||
"strings"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
"yunion.io/x/pkg/util/sets"
|
||||
|
||||
"yunion.io/x/onecloud/pkg/mcclient/options"
|
||||
)
|
||||
@@ -38,40 +37,6 @@ func (o ClusterListOptions) Params() *jsonutils.JSONDict {
|
||||
return params
|
||||
}
|
||||
|
||||
type K8sSupportVersion struct {
|
||||
K8sVersion string `help:"Cluster kubernetes components version" choices:"v1.10.5|v1.11.3|v1.12.3"`
|
||||
}
|
||||
|
||||
type ClusterCreateOptions struct {
|
||||
K8sSupportVersion
|
||||
NAME string `help:"Name of cluster"`
|
||||
Mode string `help:"Cluster mode" choices:"internal"`
|
||||
InfraImage string `help:"Cluster kubelet infra container image"`
|
||||
Cidr string `help:"Cluster service CIDR, e.g. 10.43.0.0/16"`
|
||||
Domain string `help:"Cluster pod domain, e.g. cluster.local"`
|
||||
}
|
||||
|
||||
func (o ClusterCreateOptions) Params() *jsonutils.JSONDict {
|
||||
params := jsonutils.NewDict()
|
||||
params.Add(jsonutils.NewString(o.NAME), "name")
|
||||
if o.Mode != "" {
|
||||
params.Add(jsonutils.NewString(o.Mode), "mode")
|
||||
}
|
||||
if o.K8sVersion != "" {
|
||||
params.Add(jsonutils.NewString(o.K8sVersion), "k8s_version")
|
||||
}
|
||||
if o.InfraImage != "" {
|
||||
params.Add(jsonutils.NewString(o.InfraImage), "infra_container_image")
|
||||
}
|
||||
if o.Cidr != "" {
|
||||
params.Add(jsonutils.NewString(o.Cidr), "cluster_cidr")
|
||||
}
|
||||
if o.Domain != "" {
|
||||
params.Add(jsonutils.NewString(o.Domain), "cluster_domain")
|
||||
}
|
||||
return params
|
||||
}
|
||||
|
||||
type AddMachineOptions struct {
|
||||
Machine []string `help:"Machine create desc, e.g. host01:baremetal:controlplane"`
|
||||
MachineNet string `help:"Machine net config"`
|
||||
@@ -96,6 +61,12 @@ type KubeClusterCreateOptions struct {
|
||||
AddMachineOptions
|
||||
}
|
||||
|
||||
type KubeClusterImportOptions struct {
|
||||
NAME string `help:"Name of cluster"`
|
||||
APISERVER string `help:"API server of this cluster"`
|
||||
KUBECONFIG string `help:"Cluster kubeconfig file path"`
|
||||
}
|
||||
|
||||
func parseMachineDesc(desc string, disk string, netConf string, ncpu int, memorySize string, hypervisor string) (*MachineCreateOptions, error) {
|
||||
matchType := func(p string) bool {
|
||||
switch p {
|
||||
@@ -173,34 +144,21 @@ func (o KubeClusterCreateOptions) Params() (*jsonutils.JSONDict, error) {
|
||||
return params, nil
|
||||
}
|
||||
|
||||
type ClusterImportOptions struct {
|
||||
NAME string `help:"Name of cluster to import"`
|
||||
KUBECONFIG string `help:"Kubernetes auth config"`
|
||||
}
|
||||
|
||||
func (o ClusterImportOptions) Params() (*jsonutils.JSONDict, error) {
|
||||
func (o KubeClusterImportOptions) Params() (*jsonutils.JSONDict, error) {
|
||||
kubeconfig, err := ioutil.ReadFile(o.KUBECONFIG)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Read kube config %q error: %v", o.KUBECONFIG, err)
|
||||
}
|
||||
params := jsonutils.NewDict()
|
||||
params.Add(jsonutils.NewString(string(kubeconfig)), "kube_config")
|
||||
params.Add(jsonutils.NewString(o.NAME), "name")
|
||||
params.Add(jsonutils.NewString("import"), "mode")
|
||||
params.Add(jsonutils.NewString(o.APISERVER), "api_server")
|
||||
params.Add(jsonutils.NewString(string(kubeconfig)), "kubeconfig")
|
||||
params.Add(jsonutils.NewString("external"), "provider")
|
||||
params.Add(jsonutils.NewString("unknown"), "resource_type")
|
||||
return params, nil
|
||||
}
|
||||
|
||||
type ClusterUpdateOptions struct {
|
||||
NAME string `help:"Name of cluster"`
|
||||
K8sSupportVersion
|
||||
}
|
||||
|
||||
func (o ClusterUpdateOptions) Params() *jsonutils.JSONDict {
|
||||
params := jsonutils.NewDict()
|
||||
if o.K8sVersion != "" {
|
||||
params.Add(jsonutils.NewString(o.K8sVersion), "k8s_version")
|
||||
}
|
||||
return params
|
||||
}
|
||||
|
||||
type IdentOptions struct {
|
||||
ID string `help:"ID or name of the model"`
|
||||
}
|
||||
@@ -215,36 +173,10 @@ type IdentsOptions struct {
|
||||
ID []string `help:"ID of models to operate"`
|
||||
}
|
||||
|
||||
type ClusterDeployOptions struct {
|
||||
IdentOptions
|
||||
Force bool `help:"Force deploy"`
|
||||
}
|
||||
|
||||
func (o ClusterDeployOptions) Params() *jsonutils.JSONDict {
|
||||
params := jsonutils.NewDict()
|
||||
if o.Force {
|
||||
params.Add(jsonutils.JSONTrue, "force")
|
||||
}
|
||||
return params
|
||||
}
|
||||
|
||||
type ClusterDeleteOptions struct {
|
||||
IdentsOptions
|
||||
}
|
||||
|
||||
type ClusterKubeconfigOptions struct {
|
||||
IdentOptions
|
||||
Directly bool `help:"Get directly connect kubeconfig"`
|
||||
}
|
||||
|
||||
func (o ClusterKubeconfigOptions) Params() *jsonutils.JSONDict {
|
||||
params := jsonutils.NewDict()
|
||||
if o.Directly {
|
||||
params.Add(jsonutils.JSONTrue, "directly")
|
||||
}
|
||||
return params
|
||||
}
|
||||
|
||||
type KubeClusterAddMachinesOptions struct {
|
||||
IdentOptions
|
||||
AddMachineOptions
|
||||
@@ -279,77 +211,6 @@ func (o KubeClusterAddMachinesOptions) Params() (*jsonutils.JSONDict, error) {
|
||||
return params, nil
|
||||
}
|
||||
|
||||
type ClusterAddNodesOptions struct {
|
||||
IdentOptions
|
||||
NodeConfig []string `help:"Node spec, 'host:[roles]' e.g: --node-config host01:controlplane,etcd,worker --node-config host02:worker"`
|
||||
AutoDeploy bool `help:"Auto deploy"`
|
||||
}
|
||||
|
||||
func (o ClusterAddNodesOptions) Params() (*jsonutils.JSONDict, error) {
|
||||
params := jsonutils.NewDict()
|
||||
if o.AutoDeploy {
|
||||
params.Add(jsonutils.JSONTrue, "auto_deploy")
|
||||
}
|
||||
nodesArray := jsonutils.NewArray()
|
||||
for _, config := range o.NodeConfig {
|
||||
opt, err := parseNodeAddConfigStr(config)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
nodesArray.Add(jsonutils.Marshal(opt))
|
||||
}
|
||||
params.Add(nodesArray, "nodes")
|
||||
return params, nil
|
||||
}
|
||||
|
||||
type dockerConfig struct {
|
||||
RegistryMirrors []string `json:"registry-mirrors"`
|
||||
InsecureRegistries []string `json:"insecure-registries"`
|
||||
}
|
||||
|
||||
type nodeAddConfig struct {
|
||||
Host string `json:"host"`
|
||||
Roles []string `json:"roles"`
|
||||
Name string `json:"name"`
|
||||
HostnameOverride string `json:"hostname_override"`
|
||||
DockerdConfig dockerConfig `json:"dockerd_config"`
|
||||
}
|
||||
|
||||
func parseNodeAddConfigStr(config string) (nodeAddConfig, error) {
|
||||
ret := nodeAddConfig{}
|
||||
parts := strings.Split(config, ":")
|
||||
if len(parts) != 2 {
|
||||
return ret, fmt.Errorf("Invalid config: %q", config)
|
||||
}
|
||||
host := parts[0]
|
||||
roleStr := parts[1]
|
||||
ret.Host = host
|
||||
roles := []string{}
|
||||
for _, role := range strings.Split(roleStr, ",") {
|
||||
if !sets.NewString("etcd", "controlplane", "worker").Has(role) {
|
||||
return ret, fmt.Errorf("Invalid role: %q", role)
|
||||
}
|
||||
roles = append(roles, role)
|
||||
}
|
||||
ret.Roles = roles
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
type ClusterDeleteNodesOptions struct {
|
||||
IdentOptions
|
||||
Node []string `help:"Node id or name"`
|
||||
}
|
||||
|
||||
func (o ClusterDeleteNodesOptions) Params() (*jsonutils.JSONDict, error) {
|
||||
params := jsonutils.NewDict()
|
||||
nodesArray := jsonutils.NewArray()
|
||||
for _, node := range o.Node {
|
||||
nodesArray.Add(jsonutils.NewString(node))
|
||||
}
|
||||
params.Add(nodesArray, "nodes")
|
||||
return params, nil
|
||||
}
|
||||
|
||||
type KubeClusterDeleteMachinesOptions struct {
|
||||
IdentOptions
|
||||
Machines []string `help:"Machine id or name"`
|
||||
@@ -364,21 +225,3 @@ func (o KubeClusterDeleteMachinesOptions) Params() (*jsonutils.JSONDict, error)
|
||||
params.Add(machinesArray, "machines")
|
||||
return params, nil
|
||||
}
|
||||
|
||||
type ClusterRestartAgentsOptions struct {
|
||||
ClusterDeleteNodesOptions
|
||||
All bool `help:"Restart all nodes agent"`
|
||||
}
|
||||
|
||||
func (o ClusterRestartAgentsOptions) Params() (*jsonutils.JSONDict, error) {
|
||||
params, err := o.ClusterDeleteNodesOptions.Params()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
all := jsonutils.JSONFalse
|
||||
if o.All {
|
||||
all = jsonutils.JSONTrue
|
||||
}
|
||||
params.Add(all, "all")
|
||||
return params, nil
|
||||
}
|
||||
|
||||
@@ -21,8 +21,18 @@ import (
|
||||
"yunion.io/x/pkg/util/fileutils"
|
||||
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/cmdline"
|
||||
"yunion.io/x/onecloud/pkg/mcclient/options"
|
||||
)
|
||||
|
||||
type MachineListOptions struct {
|
||||
options.BaseListOptions
|
||||
Cluster string `help:"Filter by cluster"`
|
||||
}
|
||||
|
||||
func (o MachineListOptions) Params() (*jsonutils.JSONDict, error) {
|
||||
return options.ListStructToParams(&o)
|
||||
}
|
||||
|
||||
type MachineCreateOptions struct {
|
||||
CLUSTER string `help:"Cluster id"`
|
||||
ROLE string `help:"Machine role" choices:"node|controlplane"`
|
||||
|
||||
@@ -1,100 +0,0 @@
|
||||
// Copyright 2019 Yunion
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package k8s
|
||||
|
||||
import (
|
||||
"yunion.io/x/jsonutils"
|
||||
|
||||
"yunion.io/x/onecloud/pkg/mcclient/options"
|
||||
)
|
||||
|
||||
type NodeListOptions struct {
|
||||
options.BaseListOptions
|
||||
Cluster string `help:"Filter by cluster"`
|
||||
}
|
||||
|
||||
func (o NodeListOptions) Params() (*jsonutils.JSONDict, error) {
|
||||
return options.ListStructToParams(&o)
|
||||
}
|
||||
|
||||
type NodeCreateOptions struct {
|
||||
CLUSTER string `help:"Cluster id"`
|
||||
Etcd bool `help:"Etcd role"`
|
||||
Controlplane bool `help:"Controlplane role"`
|
||||
Worker bool `help:"Worker role"`
|
||||
AllRole bool `help:"All roles"`
|
||||
HostnameOverride string `help:"Worker node overrided hostname"`
|
||||
Host string `help:"Yunion host server name or id"`
|
||||
Name string `help:"Name of node"`
|
||||
RegistryMirror []string `help:"Docker registry mirrors, e.g. 'https://registry.docker-cn.com'"`
|
||||
InsecureRegistry []string `help:"Docker insecure registry"`
|
||||
}
|
||||
|
||||
func (o NodeCreateOptions) Params() *jsonutils.JSONDict {
|
||||
params := jsonutils.NewDict()
|
||||
if o.Name != "" {
|
||||
params.Add(jsonutils.NewString(o.Name), "name")
|
||||
}
|
||||
params.Add(jsonutils.NewString(o.CLUSTER), "cluster")
|
||||
dockerConf := dockerConfig{}
|
||||
for _, rm := range o.RegistryMirror {
|
||||
dockerConf.RegistryMirrors = append(dockerConf.RegistryMirrors, rm)
|
||||
}
|
||||
for _, im := range o.InsecureRegistry {
|
||||
dockerConf.InsecureRegistries = append(dockerConf.InsecureRegistries, im)
|
||||
}
|
||||
confObj := jsonutils.Marshal(dockerConf)
|
||||
params.Add(confObj, "dockerd_config")
|
||||
|
||||
roles := jsonutils.NewArray()
|
||||
if o.AllRole {
|
||||
roles.Add(jsonutils.NewString("etcd"), jsonutils.NewString("controlplane"), jsonutils.NewString("worker"))
|
||||
} else {
|
||||
if o.Etcd {
|
||||
roles.Add(jsonutils.NewString("etcd"))
|
||||
}
|
||||
if o.Controlplane {
|
||||
roles.Add(jsonutils.NewString("controlplane"))
|
||||
}
|
||||
if o.Worker {
|
||||
roles.Add(jsonutils.NewString("worker"))
|
||||
}
|
||||
}
|
||||
params.Add(roles, "roles")
|
||||
if o.HostnameOverride != "" {
|
||||
params.Add(jsonutils.NewString(o.HostnameOverride), "hostname_override")
|
||||
}
|
||||
if o.Host != "" {
|
||||
params.Add(jsonutils.NewString(o.Host), "host")
|
||||
}
|
||||
return params
|
||||
}
|
||||
|
||||
type NodeConfigDockerRegistryOptions struct {
|
||||
IdentsOptions
|
||||
RegistryMirror []string `help:"Docker registry mirrors, e.g. 'https://registry.docker-cn.com'"`
|
||||
InsecureRegistry []string `help:"Docker insecure registry"`
|
||||
}
|
||||
|
||||
func (o NodeConfigDockerRegistryOptions) Params() jsonutils.JSONObject {
|
||||
dockerConf := dockerConfig{}
|
||||
for _, rm := range o.RegistryMirror {
|
||||
dockerConf.RegistryMirrors = append(dockerConf.RegistryMirrors, rm)
|
||||
}
|
||||
for _, im := range o.InsecureRegistry {
|
||||
dockerConf.InsecureRegistries = append(dockerConf.InsecureRegistries, im)
|
||||
}
|
||||
return jsonutils.Marshal(dockerConf)
|
||||
}
|
||||
@@ -110,7 +110,7 @@ func (man *SKubeClusterManager) getKubeClusterConfig() (string, error) {
|
||||
session := auth.GetAdminSession(context.Background(), man.region, "v1")
|
||||
params := jsonutils.NewDict()
|
||||
params.Add(jsonutils.JSONTrue, "directly")
|
||||
ret, err := kubeserver.Clusters.PerformAction(session, "default", "generate-kubeconfig", params)
|
||||
ret, err := kubeserver.KubeClusters.PerformAction(session, "default", "generate-kubeconfig", params)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user