Commit 30c830b2 authored by Kubernetes Submit Queue's avatar Kubernetes Submit Queue Committed by GitHub

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 @nikhiljindal
parents 454f60c7 a7a56caa
...@@ -118,6 +118,7 @@ func NewCmdInit(cmdOut io.Writer, config util.AdminConfig) *cobra.Command { ...@@ -118,6 +118,7 @@ func NewCmdInit(cmdOut io.Writer, config util.AdminConfig) *cobra.Command {
util.AddSubcommandFlags(cmd) 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("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("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 return cmd
} }
...@@ -138,6 +139,7 @@ func initFederation(cmdOut io.Writer, config util.AdminConfig, cmd *cobra.Comman ...@@ -138,6 +139,7 @@ func initFederation(cmdOut io.Writer, config util.AdminConfig, cmd *cobra.Comman
} }
dnsZoneName := cmdutil.GetFlagString(cmd, "dns-zone-name") dnsZoneName := cmdutil.GetFlagString(cmd, "dns-zone-name")
image := cmdutil.GetFlagString(cmd, "image") image := cmdutil.GetFlagString(cmd, "image")
dnsProvider := cmdutil.GetFlagString(cmd, "dns-provider")
hostFactory := config.HostFactory(initFlags.Host, initFlags.Kubeconfig) hostFactory := config.HostFactory(initFlags.Host, initFlags.Kubeconfig)
hostClientset, err := hostFactory.ClientSet() hostClientset, err := hostFactory.ClientSet()
...@@ -210,7 +212,7 @@ func initFederation(cmdOut io.Writer, config util.AdminConfig, cmd *cobra.Comman ...@@ -210,7 +212,7 @@ func initFederation(cmdOut io.Writer, config util.AdminConfig, cmd *cobra.Comman
} }
// 7. Create federation controller manager // 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 { if err != nil {
return err return err
} }
...@@ -479,7 +481,7 @@ func createAPIServer(clientset *client.Clientset, namespace, name, image, creden ...@@ -479,7 +481,7 @@ func createAPIServer(clientset *client.Clientset, namespace, name, image, creden
return clientset.Extensions().Deployments(namespace).Create(dep) 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{ dep := &extensions.Deployment{
ObjectMeta: api.ObjectMeta{ ObjectMeta: api.ObjectMeta{
Name: cmName, Name: cmName,
...@@ -503,7 +505,7 @@ func createControllerManager(clientset *client.Clientset, namespace, name, cmNam ...@@ -503,7 +505,7 @@ func createControllerManager(clientset *client.Clientset, namespace, name, cmNam
"federation-controller-manager", "federation-controller-manager",
"--master=https://federation-apiserver", "--master=https://federation-apiserver",
"--kubeconfig=/etc/federation/controller-manager/kubeconfig", "--kubeconfig=/etc/federation/controller-manager/kubeconfig",
"--dns-provider=gce", fmt.Sprintf("--dns-provider=%s", dnsProvider),
"--dns-provider-config=", "--dns-provider-config=",
fmt.Sprintf("--federation-name=%s", name), fmt.Sprintf("--federation-name=%s", name),
fmt.Sprintf("--zone-name=%s", dnsZoneName), fmt.Sprintf("--zone-name=%s", dnsZoneName),
......
...@@ -58,6 +58,7 @@ const ( ...@@ -58,6 +58,7 @@ const (
func TestInitFederation(t *testing.T) { func TestInitFederation(t *testing.T) {
cmdErrMsg := "" cmdErrMsg := ""
dnsProvider := ""
cmdutil.BehaviorOnFatal(func(str string, code int) { cmdutil.BehaviorOnFatal(func(str string, code int) {
cmdErrMsg = str cmdErrMsg = str
}) })
...@@ -76,6 +77,7 @@ func TestInitFederation(t *testing.T) { ...@@ -76,6 +77,7 @@ func TestInitFederation(t *testing.T) {
lbIP string lbIP string
image string image string
expectedErr string expectedErr string
dnsProvider string
}{ }{
{ {
federation: "union", federation: "union",
...@@ -85,14 +87,31 @@ func TestInitFederation(t *testing.T) { ...@@ -85,14 +87,31 @@ func TestInitFederation(t *testing.T) {
lbIP: "10.20.30.40", lbIP: "10.20.30.40",
image: "example.test/foo:bar", image: "example.test/foo:bar",
expectedErr: "", 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 { for i, tc := range testCases {
cmdErrMsg = "" cmdErrMsg = ""
dnsProvider = ""
buf := bytes.NewBuffer([]byte{}) 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 { if err != nil {
t.Fatalf("[%d] unexpected error: %v", i, err) t.Fatalf("[%d] unexpected error: %v", i, err)
} }
...@@ -108,6 +127,9 @@ func TestInitFederation(t *testing.T) { ...@@ -108,6 +127,9 @@ func TestInitFederation(t *testing.T) {
cmd.Flags().Set("host-cluster-context", "substrate") cmd.Flags().Set("host-cluster-context", "substrate")
cmd.Flags().Set("dns-zone-name", tc.dnsZoneName) cmd.Flags().Set("dns-zone-name", tc.dnsZoneName)
cmd.Flags().Set("image", tc.image) cmd.Flags().Set("image", tc.image)
if "" != tc.dnsProvider {
cmd.Flags().Set("dns-provider", tc.dnsProvider)
}
cmd.Run(cmd, []string{tc.federation}) cmd.Run(cmd, []string{tc.federation})
if tc.expectedErr == "" { if tc.expectedErr == "" {
...@@ -370,7 +392,7 @@ func TestCertsHTTPS(t *testing.T) { ...@@ -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" svcName := federationName + "-apiserver"
svcUrlPrefix := "/api/v1/namespaces/federation-system/services" svcUrlPrefix := "/api/v1/namespaces/federation-system/services"
credSecretName := svcName + "-credentials" credSecretName := svcName + "-credentials"
...@@ -597,7 +619,7 @@ func fakeInitHostFactory(federationName, namespaceName, ip, dnsZoneName, image s ...@@ -597,7 +619,7 @@ func fakeInitHostFactory(federationName, namespaceName, ip, dnsZoneName, image s
"federation-controller-manager", "federation-controller-manager",
"--master=https://federation-apiserver", "--master=https://federation-apiserver",
"--kubeconfig=/etc/federation/controller-manager/kubeconfig", "--kubeconfig=/etc/federation/controller-manager/kubeconfig",
"--dns-provider=gce", fmt.Sprintf("--dns-provider=%s", dnsProvider),
"--dns-provider-config=", "--dns-provider-config=",
fmt.Sprintf("--federation-name=%s", federationName), fmt.Sprintf("--federation-name=%s", federationName),
fmt.Sprintf("--zone-name=%s", dnsZoneName), fmt.Sprintf("--zone-name=%s", dnsZoneName),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment