mirror of https://github.com/k3s-io/k3s
Merge pull request #36492 from irfanurrehman/federation-kubefed-todo-3
Automatic merge from submit-queue [Federation][Bugfix] Make the dns provider configurable in kubefed init Fixes: Issue #36690 The design doc PR relating the whole feature for kubefed is at #34484. cc @kubernetes/sig-cluster-federation @madhusudancs @nikhiljindalpull/6/head
commit
30c830b217
|
@ -118,6 +118,7 @@ func NewCmdInit(cmdOut io.Writer, config util.AdminConfig) *cobra.Command {
|
|||
util.AddSubcommandFlags(cmd)
|
||||
cmd.Flags().String("dns-zone-name", "", "DNS suffix for this federation. Federated Service DNS names are published with this suffix.")
|
||||
cmd.Flags().String("image", defaultImage, "Image to use for federation API server and controller manager binaries.")
|
||||
cmd.Flags().String("dns-provider", "google-clouddns", "Dns provider to be used for this deployment.")
|
||||
return cmd
|
||||
}
|
||||
|
||||
|
@ -138,6 +139,7 @@ func initFederation(cmdOut io.Writer, config util.AdminConfig, cmd *cobra.Comman
|
|||
}
|
||||
dnsZoneName := cmdutil.GetFlagString(cmd, "dns-zone-name")
|
||||
image := cmdutil.GetFlagString(cmd, "image")
|
||||
dnsProvider := cmdutil.GetFlagString(cmd, "dns-provider")
|
||||
|
||||
hostFactory := config.HostFactory(initFlags.Host, initFlags.Kubeconfig)
|
||||
hostClientset, err := hostFactory.ClientSet()
|
||||
|
@ -210,7 +212,7 @@ func initFederation(cmdOut io.Writer, config util.AdminConfig, cmd *cobra.Comman
|
|||
}
|
||||
|
||||
// 7. Create federation controller manager
|
||||
_, err = createControllerManager(hostClientset, initFlags.FederationSystemNamespace, initFlags.Name, cmName, image, cmKubeconfigName, dnsZoneName)
|
||||
_, err = createControllerManager(hostClientset, initFlags.FederationSystemNamespace, initFlags.Name, cmName, image, cmKubeconfigName, dnsZoneName, dnsProvider)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -479,7 +481,7 @@ func createAPIServer(clientset *client.Clientset, namespace, name, image, creden
|
|||
return clientset.Extensions().Deployments(namespace).Create(dep)
|
||||
}
|
||||
|
||||
func createControllerManager(clientset *client.Clientset, namespace, name, cmName, image, kubeconfigName, dnsZoneName string) (*extensions.Deployment, error) {
|
||||
func createControllerManager(clientset *client.Clientset, namespace, name, cmName, image, kubeconfigName, dnsZoneName, dnsProvider string) (*extensions.Deployment, error) {
|
||||
dep := &extensions.Deployment{
|
||||
ObjectMeta: api.ObjectMeta{
|
||||
Name: cmName,
|
||||
|
@ -503,7 +505,7 @@ func createControllerManager(clientset *client.Clientset, namespace, name, cmNam
|
|||
"federation-controller-manager",
|
||||
"--master=https://federation-apiserver",
|
||||
"--kubeconfig=/etc/federation/controller-manager/kubeconfig",
|
||||
"--dns-provider=gce",
|
||||
fmt.Sprintf("--dns-provider=%s", dnsProvider),
|
||||
"--dns-provider-config=",
|
||||
fmt.Sprintf("--federation-name=%s", name),
|
||||
fmt.Sprintf("--zone-name=%s", dnsZoneName),
|
||||
|
|
|
@ -58,6 +58,7 @@ const (
|
|||
|
||||
func TestInitFederation(t *testing.T) {
|
||||
cmdErrMsg := ""
|
||||
dnsProvider := ""
|
||||
cmdutil.BehaviorOnFatal(func(str string, code int) {
|
||||
cmdErrMsg = str
|
||||
})
|
||||
|
@ -76,6 +77,7 @@ func TestInitFederation(t *testing.T) {
|
|||
lbIP string
|
||||
image string
|
||||
expectedErr string
|
||||
dnsProvider string
|
||||
}{
|
||||
{
|
||||
federation: "union",
|
||||
|
@ -85,14 +87,31 @@ func TestInitFederation(t *testing.T) {
|
|||
lbIP: "10.20.30.40",
|
||||
image: "example.test/foo:bar",
|
||||
expectedErr: "",
|
||||
dnsProvider: "test-dns-provider",
|
||||
},
|
||||
{
|
||||
federation: "union",
|
||||
kubeconfigGlobal: fakeKubeFiles[0],
|
||||
kubeconfigExplicit: "",
|
||||
dnsZoneName: "example.test.",
|
||||
lbIP: "10.20.30.40",
|
||||
image: "example.test/foo:bar",
|
||||
expectedErr: "",
|
||||
dnsProvider: "", //test for default value of dns provider
|
||||
},
|
||||
}
|
||||
|
||||
for i, tc := range testCases {
|
||||
cmdErrMsg = ""
|
||||
dnsProvider = ""
|
||||
buf := bytes.NewBuffer([]byte{})
|
||||
|
||||
hostFactory, err := fakeInitHostFactory(tc.federation, util.DefaultFederationSystemNamespace, tc.lbIP, tc.dnsZoneName, tc.image)
|
||||
if "" != tc.dnsProvider {
|
||||
dnsProvider = tc.dnsProvider
|
||||
} else {
|
||||
dnsProvider = "google-clouddns" //default value of dns-provider
|
||||
}
|
||||
hostFactory, err := fakeInitHostFactory(tc.federation, util.DefaultFederationSystemNamespace, tc.lbIP, tc.dnsZoneName, tc.image, dnsProvider)
|
||||
if err != nil {
|
||||
t.Fatalf("[%d] unexpected error: %v", i, err)
|
||||
}
|
||||
|
@ -108,6 +127,9 @@ func TestInitFederation(t *testing.T) {
|
|||
cmd.Flags().Set("host-cluster-context", "substrate")
|
||||
cmd.Flags().Set("dns-zone-name", tc.dnsZoneName)
|
||||
cmd.Flags().Set("image", tc.image)
|
||||
if "" != tc.dnsProvider {
|
||||
cmd.Flags().Set("dns-provider", tc.dnsProvider)
|
||||
}
|
||||
cmd.Run(cmd, []string{tc.federation})
|
||||
|
||||
if tc.expectedErr == "" {
|
||||
|
@ -370,7 +392,7 @@ func TestCertsHTTPS(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func fakeInitHostFactory(federationName, namespaceName, ip, dnsZoneName, image string) (cmdutil.Factory, error) {
|
||||
func fakeInitHostFactory(federationName, namespaceName, ip, dnsZoneName, image, dnsProvider string) (cmdutil.Factory, error) {
|
||||
svcName := federationName + "-apiserver"
|
||||
svcUrlPrefix := "/api/v1/namespaces/federation-system/services"
|
||||
credSecretName := svcName + "-credentials"
|
||||
|
@ -597,7 +619,7 @@ func fakeInitHostFactory(federationName, namespaceName, ip, dnsZoneName, image s
|
|||
"federation-controller-manager",
|
||||
"--master=https://federation-apiserver",
|
||||
"--kubeconfig=/etc/federation/controller-manager/kubeconfig",
|
||||
"--dns-provider=gce",
|
||||
fmt.Sprintf("--dns-provider=%s", dnsProvider),
|
||||
"--dns-provider-config=",
|
||||
fmt.Sprintf("--federation-name=%s", federationName),
|
||||
fmt.Sprintf("--zone-name=%s", dnsZoneName),
|
||||
|
|
Loading…
Reference in New Issue