mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 20:53:33 +00:00
[Federation] Implement the kubefed
command.
Also: 1. Add it to the client build targets list. 2. Register `kubefed join` and `kubefed unjoin` commands.
This commit is contained in:
parent
90d46c8670
commit
3c692ebd77
18
federation/cmd/kubefed/BUILD
Normal file
18
federation/cmd/kubefed/BUILD
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
package(default_visibility = ["//visibility:public"])
|
||||||
|
|
||||||
|
licenses(["notice"])
|
||||||
|
|
||||||
|
load(
|
||||||
|
"@io_bazel_rules_go//go:def.bzl",
|
||||||
|
"go_binary",
|
||||||
|
"go_library",
|
||||||
|
"go_test",
|
||||||
|
"cgo_library",
|
||||||
|
)
|
||||||
|
|
||||||
|
go_binary(
|
||||||
|
name = "kubefed",
|
||||||
|
srcs = ["kubefed.go"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
deps = ["//federation/cmd/kubefed/app:go_default_library"],
|
||||||
|
)
|
24
federation/cmd/kubefed/app/BUILD
Normal file
24
federation/cmd/kubefed/app/BUILD
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
package(default_visibility = ["//visibility:public"])
|
||||||
|
|
||||||
|
licenses(["notice"])
|
||||||
|
|
||||||
|
load(
|
||||||
|
"@io_bazel_rules_go//go:def.bzl",
|
||||||
|
"go_binary",
|
||||||
|
"go_library",
|
||||||
|
"go_test",
|
||||||
|
"cgo_library",
|
||||||
|
)
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = ["kubefed.go"],
|
||||||
|
tags = ["automanaged"],
|
||||||
|
deps = [
|
||||||
|
"//federation/pkg/kubefed:go_default_library",
|
||||||
|
"//pkg/client/metrics/prometheus:go_default_library",
|
||||||
|
"//pkg/kubectl/cmd/util:go_default_library",
|
||||||
|
"//pkg/util/logs:go_default_library",
|
||||||
|
"//pkg/version/prometheus:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
35
federation/cmd/kubefed/app/kubefed.go
Normal file
35
federation/cmd/kubefed/app/kubefed.go
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2016 The Kubernetes Authors.
|
||||||
|
|
||||||
|
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 app
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"k8s.io/kubernetes/federation/pkg/kubefed"
|
||||||
|
_ "k8s.io/kubernetes/pkg/client/metrics/prometheus" // for client metric registration
|
||||||
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
|
"k8s.io/kubernetes/pkg/util/logs"
|
||||||
|
_ "k8s.io/kubernetes/pkg/version/prometheus" // for version metric registration
|
||||||
|
)
|
||||||
|
|
||||||
|
func Run() error {
|
||||||
|
logs.InitLogs()
|
||||||
|
defer logs.FlushLogs()
|
||||||
|
|
||||||
|
cmd := kubefed.NewKubeFedCommand(cmdutil.NewFactory(nil), os.Stdin, os.Stdout, os.Stderr)
|
||||||
|
return cmd.Execute()
|
||||||
|
}
|
30
federation/cmd/kubefed/kubefed.go
Normal file
30
federation/cmd/kubefed/kubefed.go
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2016 The Kubernetes Authors.
|
||||||
|
|
||||||
|
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 main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"k8s.io/kubernetes/federation/cmd/kubefed/app"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
if err := app.Run(); err != nil {
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
os.Exit(0)
|
||||||
|
}
|
@ -14,6 +14,7 @@ go_library(
|
|||||||
name = "go_default_library",
|
name = "go_default_library",
|
||||||
srcs = [
|
srcs = [
|
||||||
"join.go",
|
"join.go",
|
||||||
|
"kubefed.go",
|
||||||
"unjoin.go",
|
"unjoin.go",
|
||||||
],
|
],
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
@ -30,6 +31,7 @@ go_library(
|
|||||||
"//pkg/kubectl/cmd/util:go_default_library",
|
"//pkg/kubectl/cmd/util:go_default_library",
|
||||||
"//pkg/kubectl/resource:go_default_library",
|
"//pkg/kubectl/resource:go_default_library",
|
||||||
"//pkg/runtime:go_default_library",
|
"//pkg/runtime:go_default_library",
|
||||||
|
"//pkg/util/flag:go_default_library",
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
"//vendor:github.com/spf13/cobra",
|
"//vendor:github.com/spf13/cobra",
|
||||||
],
|
],
|
||||||
|
74
federation/pkg/kubefed/kubefed.go
Normal file
74
federation/pkg/kubefed/kubefed.go
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2016 The Kubernetes Authors.
|
||||||
|
|
||||||
|
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 kubefed
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
|
||||||
|
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
||||||
|
kubectl "k8s.io/kubernetes/pkg/kubectl/cmd"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
|
||||||
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
|
"k8s.io/kubernetes/pkg/util/flag"
|
||||||
|
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
)
|
||||||
|
|
||||||
|
// NewKubeFedCommand creates the `kubefed` command and its nested children.
|
||||||
|
func NewKubeFedCommand(f cmdutil.Factory, in io.Reader, out, err io.Writer) *cobra.Command {
|
||||||
|
// Parent command to which all subcommands are added.
|
||||||
|
cmds := &cobra.Command{
|
||||||
|
Use: "kubefed",
|
||||||
|
Short: "kubefed controls a Kubernetes Cluster Federation",
|
||||||
|
Long: templates.LongDesc(`
|
||||||
|
kubefed controls a Kubernetes Cluster Federation.
|
||||||
|
|
||||||
|
Find more information at https://github.com/kubernetes/kubernetes.`),
|
||||||
|
Run: runHelp,
|
||||||
|
}
|
||||||
|
|
||||||
|
f.BindFlags(cmds.PersistentFlags())
|
||||||
|
f.BindExternalFlags(cmds.PersistentFlags())
|
||||||
|
|
||||||
|
// From this point and forward we get warnings on flags that contain "_" separators
|
||||||
|
cmds.SetGlobalNormalizationFunc(flag.WarnWordSepNormalizeFunc)
|
||||||
|
|
||||||
|
groups := templates.CommandGroups{
|
||||||
|
{
|
||||||
|
Message: "Basic Commands:",
|
||||||
|
Commands: []*cobra.Command{
|
||||||
|
NewCmdJoin(f, out, NewJoinFederationConfig(clientcmd.NewDefaultPathOptions())),
|
||||||
|
NewCmdUnjoin(f, out, err, NewJoinFederationConfig(clientcmd.NewDefaultPathOptions())),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
groups.Add(cmds)
|
||||||
|
|
||||||
|
filters := []string{
|
||||||
|
"options",
|
||||||
|
}
|
||||||
|
templates.ActsAsRootCommand(cmds, filters, groups...)
|
||||||
|
|
||||||
|
cmds.AddCommand(kubectl.NewCmdVersion(f, out))
|
||||||
|
cmds.AddCommand(kubectl.NewCmdOptions(out))
|
||||||
|
|
||||||
|
return cmds
|
||||||
|
}
|
||||||
|
|
||||||
|
func runHelp(cmd *cobra.Command, args []string) {
|
||||||
|
cmd.Help()
|
||||||
|
}
|
@ -52,6 +52,7 @@ federation/apis/federation/install
|
|||||||
federation/cmd/federation-apiserver
|
federation/cmd/federation-apiserver
|
||||||
federation/cmd/federation-controller-manager
|
federation/cmd/federation-controller-manager
|
||||||
federation/cmd/genfeddocs
|
federation/cmd/genfeddocs
|
||||||
|
federation/cmd/kubefed
|
||||||
hack/boilerplate/test
|
hack/boilerplate/test
|
||||||
hack/cmd/teststale
|
hack/cmd/teststale
|
||||||
pkg/api
|
pkg/api
|
||||||
|
@ -95,6 +95,7 @@ fi
|
|||||||
# The set of client targets that we are building for all platforms
|
# The set of client targets that we are building for all platforms
|
||||||
readonly KUBE_CLIENT_TARGETS=(
|
readonly KUBE_CLIENT_TARGETS=(
|
||||||
cmd/kubectl
|
cmd/kubectl
|
||||||
|
federation/cmd/kubefed
|
||||||
)
|
)
|
||||||
readonly KUBE_CLIENT_BINARIES=("${KUBE_CLIENT_TARGETS[@]##*/}")
|
readonly KUBE_CLIENT_BINARIES=("${KUBE_CLIENT_TARGETS[@]##*/}")
|
||||||
readonly KUBE_CLIENT_BINARIES_WIN=("${KUBE_CLIENT_BINARIES[@]/%/.exe}")
|
readonly KUBE_CLIENT_BINARIES_WIN=("${KUBE_CLIENT_BINARIES[@]/%/.exe}")
|
||||||
|
Loading…
Reference in New Issue
Block a user