Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
2ba7c8e1
Commit
2ba7c8e1
authored
Mar 09, 2017
by
shashidharatd
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add stubDomains to kube-dns configmap for private nameserver
parent
c1070166
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
147 additions
and
48 deletions
+147
-48
init.go
federation/pkg/kubefed/init/init.go
+27
-6
init_test.go
federation/pkg/kubefed/init/init_test.go
+29
-3
join.go
federation/pkg/kubefed/join.go
+13
-0
join_test.go
federation/pkg/kubefed/join_test.go
+55
-29
unjoin.go
federation/pkg/kubefed/unjoin.go
+16
-8
util.go
federation/pkg/kubefed/util/util.go
+7
-2
No files found.
federation/pkg/kubefed/init/init.go
View file @
2ba7c8e1
...
@@ -42,6 +42,7 @@ import (
...
@@ -42,6 +42,7 @@ import (
triple
"k8s.io/client-go/util/cert/triple"
triple
"k8s.io/client-go/util/cert/triple"
kubeconfigutil
"k8s.io/kubernetes/cmd/kubeadm/app/util/kubeconfig"
kubeconfigutil
"k8s.io/kubernetes/cmd/kubeadm/app/util/kubeconfig"
"k8s.io/kubernetes/federation/apis/federation"
"k8s.io/kubernetes/federation/apis/federation"
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/coredns"
"k8s.io/kubernetes/federation/pkg/kubefed/util"
"k8s.io/kubernetes/federation/pkg/kubefed/util"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/api/v1"
...
@@ -55,6 +56,7 @@ import (
...
@@ -55,6 +56,7 @@ import (
"github.com/golang/glog"
"github.com/golang/glog"
"github.com/spf13/cobra"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
"github.com/spf13/pflag"
"gopkg.in/gcfg.v1"
)
)
const
(
const
(
...
@@ -379,7 +381,7 @@ func (i *initFederation) Run(cmdOut io.Writer, config util.AdminConfig) error {
...
@@ -379,7 +381,7 @@ func (i *initFederation) Run(cmdOut io.Writer, config util.AdminConfig) error {
glog
.
V
(
4
)
.
Info
(
"Creating federation controller manager deployment"
)
glog
.
V
(
4
)
.
Info
(
"Creating federation controller manager deployment"
)
_
,
err
=
createControllerManager
(
hostClientset
,
i
.
commonOptions
.
FederationSystemNamespace
,
i
.
commonOptions
.
Name
,
svc
.
Name
,
cmName
,
i
.
options
.
image
,
cmKubeconfigName
,
i
.
options
.
dnsZoneName
,
i
.
options
.
dnsProvider
,
sa
.
Name
,
dnsProviderSecret
,
i
.
options
.
controllerManagerOverrides
,
i
.
options
.
dryRun
)
_
,
err
=
createControllerManager
(
hostClientset
,
i
.
commonOptions
.
FederationSystemNamespace
,
i
.
commonOptions
.
Name
,
svc
.
Name
,
cmName
,
i
.
options
.
image
,
cmKubeconfigName
,
i
.
options
.
dnsZoneName
,
i
.
options
.
dnsProvider
,
i
.
options
.
dnsProviderConfig
,
sa
.
Name
,
dnsProviderSecret
,
i
.
options
.
controllerManagerOverrides
,
i
.
options
.
dryRun
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
...
@@ -847,7 +849,7 @@ func createRoleBindings(clientset client.Interface, namespace, saName, federatio
...
@@ -847,7 +849,7 @@ func createRoleBindings(clientset client.Interface, namespace, saName, federatio
return
newRole
,
newRolebinding
,
err
return
newRole
,
newRolebinding
,
err
}
}
func
createControllerManager
(
clientset
client
.
Interface
,
namespace
,
name
,
svcName
,
cmName
,
image
,
kubeconfigName
,
dnsZoneName
,
dnsProvider
,
saName
string
,
dnsProviderSecret
*
api
.
Secret
,
argOverrides
map
[
string
]
string
,
dryRun
bool
)
(
*
extensions
.
Deployment
,
error
)
{
func
createControllerManager
(
clientset
client
.
Interface
,
namespace
,
name
,
svcName
,
cmName
,
image
,
kubeconfigName
,
dnsZoneName
,
dnsProvider
,
dnsProviderConfig
,
saName
string
,
dnsProviderSecret
*
api
.
Secret
,
argOverrides
map
[
string
]
string
,
dryRun
bool
)
(
*
extensions
.
Deployment
,
error
)
{
command
:=
[]
string
{
command
:=
[]
string
{
"/hyperkube"
,
"/hyperkube"
,
"federation-controller-manager"
,
"federation-controller-manager"
,
...
@@ -935,12 +937,19 @@ func createControllerManager(clientset client.Interface, namespace, name, svcNam
...
@@ -935,12 +937,19 @@ func createControllerManager(clientset client.Interface, namespace, name, svcNam
dep
.
Spec
.
Template
.
Spec
.
ServiceAccountName
=
saName
dep
.
Spec
.
Template
.
Spec
.
ServiceAccountName
=
saName
}
}
if
dryRun
{
return
dep
,
nil
}
if
dnsProviderSecret
!=
nil
{
if
dnsProviderSecret
!=
nil
{
dep
=
addDNSProviderConfig
(
dep
,
dnsProviderSecret
.
Name
)
dep
=
addDNSProviderConfig
(
dep
,
dnsProviderSecret
.
Name
)
if
dnsProvider
==
util
.
FedDNSProviderCoreDNS
{
var
err
error
dep
,
err
=
addCoreDNSServerAnnotation
(
dep
,
dnsZoneName
,
dnsProviderConfig
)
if
err
!=
nil
{
return
nil
,
err
}
}
}
if
dryRun
{
return
dep
,
nil
}
}
return
clientset
.
Extensions
()
.
Deployments
(
namespace
)
.
Create
(
dep
)
return
clientset
.
Extensions
()
.
Deployments
(
namespace
)
.
Create
(
dep
)
...
@@ -1154,3 +1163,15 @@ func addDNSProviderConfig(dep *extensions.Deployment, secretName string) *extens
...
@@ -1154,3 +1163,15 @@ func addDNSProviderConfig(dep *extensions.Deployment, secretName string) *extens
func
authFileContents
(
username
,
authSecret
string
)
[]
byte
{
func
authFileContents
(
username
,
authSecret
string
)
[]
byte
{
return
[]
byte
(
fmt
.
Sprintf
(
"%s,%s,%s
\n
"
,
authSecret
,
username
,
uuid
.
NewUUID
()))
return
[]
byte
(
fmt
.
Sprintf
(
"%s,%s,%s
\n
"
,
authSecret
,
username
,
uuid
.
NewUUID
()))
}
}
func
addCoreDNSServerAnnotation
(
deployment
*
extensions
.
Deployment
,
dnsZoneName
,
dnsProviderConfig
string
)
(
*
extensions
.
Deployment
,
error
)
{
var
cfg
coredns
.
Config
if
err
:=
gcfg
.
ReadFileInto
(
&
cfg
,
dnsProviderConfig
);
err
!=
nil
{
return
nil
,
err
}
deployment
.
Annotations
[
util
.
FedDNSZoneName
]
=
dnsZoneName
deployment
.
Annotations
[
util
.
FedNameServer
]
=
cfg
.
Global
.
CoreDNSEndpoints
deployment
.
Annotations
[
util
.
FedDNSProvider
]
=
util
.
FedDNSProviderCoreDNS
return
deployment
,
nil
}
federation/pkg/kubefed/init/init_test.go
View file @
2ba7c8e1
...
@@ -44,6 +44,7 @@ import (
...
@@ -44,6 +44,7 @@ import (
"k8s.io/client-go/rest/fake"
"k8s.io/client-go/rest/fake"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/kubernetes/federation/apis/federation"
"k8s.io/kubernetes/federation/apis/federation"
"k8s.io/kubernetes/federation/pkg/dnsprovider/providers/coredns"
kubefedtesting
"k8s.io/kubernetes/federation/pkg/kubefed/testing"
kubefedtesting
"k8s.io/kubernetes/federation/pkg/kubefed/testing"
"k8s.io/kubernetes/federation/pkg/kubefed/util"
"k8s.io/kubernetes/federation/pkg/kubefed/util"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
...
@@ -55,6 +56,8 @@ import (
...
@@ -55,6 +56,8 @@ import (
rbacv1beta1
"k8s.io/kubernetes/pkg/apis/rbac/v1beta1"
rbacv1beta1
"k8s.io/kubernetes/pkg/apis/rbac/v1beta1"
cmdtesting
"k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdtesting
"k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"gopkg.in/gcfg.v1"
)
)
const
(
const
(
...
@@ -74,7 +77,6 @@ const (
...
@@ -74,7 +77,6 @@ const (
func
TestInitFederation
(
t
*
testing
.
T
)
{
func
TestInitFederation
(
t
*
testing
.
T
)
{
cmdErrMsg
:=
""
cmdErrMsg
:=
""
dnsProvider
:=
"google-clouddns"
cmdutil
.
BehaviorOnFatal
(
func
(
str
string
,
code
int
)
{
cmdutil
.
BehaviorOnFatal
(
func
(
str
string
,
code
int
)
{
cmdErrMsg
=
str
cmdErrMsg
=
str
})
})
...
@@ -97,6 +99,7 @@ func TestInitFederation(t *testing.T) {
...
@@ -97,6 +99,7 @@ func TestInitFederation(t *testing.T) {
etcdPVCapacity
string
etcdPVCapacity
string
etcdPersistence
string
etcdPersistence
string
expectedErr
string
expectedErr
string
dnsProvider
string
dnsProviderConfig
string
dnsProviderConfig
string
dryRun
string
dryRun
string
apiserverArgOverrides
string
apiserverArgOverrides
string
...
@@ -116,6 +119,7 @@ func TestInitFederation(t *testing.T) {
...
@@ -116,6 +119,7 @@ func TestInitFederation(t *testing.T) {
etcdPVCapacity
:
"5Gi"
,
etcdPVCapacity
:
"5Gi"
,
etcdPersistence
:
"true"
,
etcdPersistence
:
"true"
,
expectedErr
:
""
,
expectedErr
:
""
,
dnsProvider
:
util
.
FedDNSProviderCoreDNS
,
dnsProviderConfig
:
"dns-provider.conf"
,
dnsProviderConfig
:
"dns-provider.conf"
,
dryRun
:
""
,
dryRun
:
""
,
apiserverArgOverrides
:
"--client-ca-file=override,--log-dir=override"
,
apiserverArgOverrides
:
"--client-ca-file=override,--log-dir=override"
,
...
@@ -210,6 +214,9 @@ func TestInitFederation(t *testing.T) {
...
@@ -210,6 +214,9 @@ func TestInitFederation(t *testing.T) {
tmpDirPath
:=
""
tmpDirPath
:=
""
buf
:=
bytes
.
NewBuffer
([]
byte
{})
buf
:=
bytes
.
NewBuffer
([]
byte
{})
if
tc
.
dnsProvider
==
""
{
tc
.
dnsProvider
=
"google-clouddns"
}
if
tc
.
dnsProviderConfig
!=
""
{
if
tc
.
dnsProviderConfig
!=
""
{
tmpfile
,
err
:=
ioutil
.
TempFile
(
""
,
tc
.
dnsProviderConfig
)
tmpfile
,
err
:=
ioutil
.
TempFile
(
""
,
tc
.
dnsProviderConfig
)
if
err
!=
nil
{
if
err
!=
nil
{
...
@@ -227,7 +234,7 @@ func TestInitFederation(t *testing.T) {
...
@@ -227,7 +234,7 @@ func TestInitFederation(t *testing.T) {
}
}
defer
os
.
Remove
(
tmpDirPath
)
defer
os
.
Remove
(
tmpDirPath
)
hostFactory
,
err
:=
fakeInitHostFactory
(
tc
.
apiserverServiceType
,
tc
.
federation
,
util
.
DefaultFederationSystemNamespace
,
tc
.
advertiseAddress
,
tc
.
lbIP
,
tc
.
dnsZoneName
,
tc
.
image
,
dnsProvider
,
tc
.
dnsProviderConfig
,
tc
.
etcdPersistence
,
tc
.
etcdPVCapacity
,
tc
.
apiserverArgOverrides
,
tc
.
cmArgOverrides
,
tmpDirPath
,
tc
.
apiserverEnableHTTPBasicAuth
,
tc
.
apiserverEnableTokenAuth
,
tc
.
isRBACAPIAvailable
)
hostFactory
,
err
:=
fakeInitHostFactory
(
tc
.
apiserverServiceType
,
tc
.
federation
,
util
.
DefaultFederationSystemNamespace
,
tc
.
advertiseAddress
,
tc
.
lbIP
,
tc
.
dnsZoneName
,
tc
.
image
,
tc
.
dnsProvider
,
tc
.
dnsProviderConfig
,
tc
.
etcdPersistence
,
tc
.
etcdPVCapacity
,
tc
.
apiserverArgOverrides
,
tc
.
cmArgOverrides
,
tmpDirPath
,
tc
.
apiserverEnableHTTPBasicAuth
,
tc
.
apiserverEnableTokenAuth
,
tc
.
isRBACAPIAvailable
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatalf
(
"[%d] unexpected error: %v"
,
i
,
err
)
t
.
Fatalf
(
"[%d] unexpected error: %v"
,
i
,
err
)
}
}
...
@@ -243,7 +250,7 @@ func TestInitFederation(t *testing.T) {
...
@@ -243,7 +250,7 @@ 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
)
cmd
.
Flags
()
.
Set
(
"dns-provider"
,
dnsProvider
)
cmd
.
Flags
()
.
Set
(
"dns-provider"
,
tc
.
dnsProvider
)
cmd
.
Flags
()
.
Set
(
"apiserver-arg-overrides"
,
tc
.
apiserverArgOverrides
)
cmd
.
Flags
()
.
Set
(
"apiserver-arg-overrides"
,
tc
.
apiserverArgOverrides
)
cmd
.
Flags
()
.
Set
(
"controllermanager-arg-overrides"
,
tc
.
cmArgOverrides
)
cmd
.
Flags
()
.
Set
(
"controllermanager-arg-overrides"
,
tc
.
cmArgOverrides
)
...
@@ -1043,6 +1050,12 @@ func fakeInitHostFactory(apiserverServiceType v1.ServiceType, federationName, na
...
@@ -1043,6 +1050,12 @@ func fakeInitHostFactory(apiserverServiceType v1.ServiceType, federationName, na
}
}
if
dnsProviderConfig
!=
""
{
if
dnsProviderConfig
!=
""
{
cm
=
addDNSProviderConfigTest
(
cm
,
cmDNSProviderSecret
.
Name
)
cm
=
addDNSProviderConfigTest
(
cm
,
cmDNSProviderSecret
.
Name
)
if
dnsProvider
==
util
.
FedDNSProviderCoreDNS
{
cm
,
err
=
addCoreDNSServerAnnotationTest
(
cm
,
dnsZoneName
,
dnsProviderConfig
)
if
err
!=
nil
{
return
nil
,
err
}
}
}
}
podList
:=
v1
.
PodList
{}
podList
:=
v1
.
PodList
{}
...
@@ -1540,3 +1553,16 @@ func addDNSProviderConfigTest(dep *v1beta1.Deployment, secretName string) *v1bet
...
@@ -1540,3 +1553,16 @@ func addDNSProviderConfigTest(dep *v1beta1.Deployment, secretName string) *v1bet
return
dep
return
dep
}
}
// TODO: Reuse the function addCoreDNSServerAnnotation once that function is converted to use versioned objects.
func
addCoreDNSServerAnnotationTest
(
deployment
*
v1beta1
.
Deployment
,
dnsZoneName
,
dnsProviderConfig
string
)
(
*
v1beta1
.
Deployment
,
error
)
{
var
cfg
coredns
.
Config
if
err
:=
gcfg
.
ReadFileInto
(
&
cfg
,
dnsProviderConfig
);
err
!=
nil
{
return
nil
,
err
}
deployment
.
Annotations
[
util
.
FedDNSZoneName
]
=
dnsZoneName
deployment
.
Annotations
[
util
.
FedNameServer
]
=
cfg
.
Global
.
CoreDNSEndpoints
deployment
.
Annotations
[
util
.
FedDNSProvider
]
=
util
.
FedDNSProviderCoreDNS
return
deployment
,
nil
}
federation/pkg/kubefed/join.go
View file @
2ba7c8e1
...
@@ -278,6 +278,7 @@ func createConfigMap(hostClientSet internalclientset.Interface, config util.Admi
...
@@ -278,6 +278,7 @@ func createConfigMap(hostClientSet internalclientset.Interface, config util.Admi
util
.
FedDomainMapKey
:
domainMap
,
util
.
FedDomainMapKey
:
domainMap
,
},
},
}
}
newConfigMap
=
populateStubDomainsIfRequired
(
newConfigMap
,
cmDep
.
Annotations
)
if
dryRun
{
if
dryRun
{
return
newConfigMap
,
nil
return
newConfigMap
,
nil
...
@@ -397,3 +398,15 @@ func getFederationName(hostClientSet internalclientset.Interface, fedNamespace s
...
@@ -397,3 +398,15 @@ func getFederationName(hostClientSet internalclientset.Interface, fedNamespace s
return
name
,
nil
return
name
,
nil
}
}
func
populateStubDomainsIfRequired
(
configMap
*
api
.
ConfigMap
,
annotations
map
[
string
]
string
)
*
api
.
ConfigMap
{
dnsProvider
:=
annotations
[
util
.
FedDNSProvider
]
dnsZoneName
:=
annotations
[
util
.
FedDNSZoneName
]
nameServer
:=
annotations
[
util
.
FedNameServer
]
if
dnsProvider
!=
util
.
FedDNSProviderCoreDNS
||
dnsZoneName
==
""
||
nameServer
==
""
{
return
configMap
}
configMap
.
Data
[
util
.
KubeDnsStubDomains
]
=
fmt
.
Sprintf
(
`{"%s":["%s"]}`
,
dnsZoneName
,
nameServer
)
return
configMap
}
federation/pkg/kubefed/join_test.go
View file @
2ba7c8e1
...
@@ -42,10 +42,15 @@ import (
...
@@ -42,10 +42,15 @@ import (
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
)
)
// testFederationName is a name to use for the federation in tests. Since the federation
const
(
// name is recovered from the federation itself, this constant is an appropriate
// testFederationName is a name to use for the federation in tests. Since the federation
// functional replica.
// name is recovered from the federation itself, this constant is an appropriate
const
testFederationName
=
"test-federation"
// functional replica.
testFederationName
=
"test-federation"
zoneName
=
"test-dns-zone"
coreDNSServer
=
"11.22.33.44:53"
)
func
TestJoinFederation
(
t
*
testing
.
T
)
{
func
TestJoinFederation
(
t
*
testing
.
T
)
{
cmdErrMsg
:=
""
cmdErrMsg
:=
""
...
@@ -69,6 +74,7 @@ func TestJoinFederation(t *testing.T) {
...
@@ -69,6 +74,7 @@ func TestJoinFederation(t *testing.T) {
kubeconfigExplicit
string
kubeconfigExplicit
string
expectedServer
string
expectedServer
string
expectedErr
string
expectedErr
string
dnsProvider
string
}{
}{
{
{
cluster
:
"syndicate"
,
cluster
:
"syndicate"
,
...
@@ -79,6 +85,7 @@ func TestJoinFederation(t *testing.T) {
...
@@ -79,6 +85,7 @@ func TestJoinFederation(t *testing.T) {
kubeconfigExplicit
:
""
,
kubeconfigExplicit
:
""
,
expectedServer
:
"https://10.20.30.40"
,
expectedServer
:
"https://10.20.30.40"
,
expectedErr
:
""
,
expectedErr
:
""
,
dnsProvider
:
util
.
FedDNSProviderCoreDNS
,
},
},
{
{
cluster
:
"ally"
,
cluster
:
"ally"
,
...
@@ -138,12 +145,12 @@ func TestJoinFederation(t *testing.T) {
...
@@ -138,12 +145,12 @@ func TestJoinFederation(t *testing.T) {
f
:=
testJoinFederationFactory
(
tc
.
cluster
,
tc
.
secret
,
tc
.
expectedServer
)
f
:=
testJoinFederationFactory
(
tc
.
cluster
,
tc
.
secret
,
tc
.
expectedServer
)
buf
:=
bytes
.
NewBuffer
([]
byte
{})
buf
:=
bytes
.
NewBuffer
([]
byte
{})
hostFactory
,
err
:=
fakeJoinHostFactory
(
tc
.
cluster
,
tc
.
clusterCtx
,
tc
.
secret
,
tc
.
server
,
tc
.
token
)
hostFactory
,
err
:=
fakeJoinHostFactory
(
tc
.
cluster
,
tc
.
clusterCtx
,
tc
.
secret
,
tc
.
server
,
tc
.
token
,
tc
.
dnsProvider
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatalf
(
"[%d] unexpected error: %v"
,
i
,
err
)
t
.
Fatalf
(
"[%d] unexpected error: %v"
,
i
,
err
)
}
}
targetClusterFactory
,
err
:=
fakeJoinTargetClusterFactory
(
tc
.
cluster
,
tc
.
clusterCtx
)
targetClusterFactory
,
err
:=
fakeJoinTargetClusterFactory
(
tc
.
cluster
,
tc
.
clusterCtx
,
tc
.
dnsProvider
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatalf
(
"[%d] unexpected error: %v"
,
i
,
err
)
t
.
Fatalf
(
"[%d] unexpected error: %v"
,
i
,
err
)
}
}
...
@@ -229,7 +236,7 @@ func testJoinFederationFactory(clusterName, secretName, server string) cmdutil.F
...
@@ -229,7 +236,7 @@ func testJoinFederationFactory(clusterName, secretName, server string) cmdutil.F
return
f
return
f
}
}
func
fakeJoinHostFactory
(
clusterName
,
clusterCtx
,
secretName
,
server
,
token
string
)
(
cmdutil
.
Factory
,
error
)
{
func
fakeJoinHostFactory
(
clusterName
,
clusterCtx
,
secretName
,
server
,
token
,
dnsProvider
string
)
(
cmdutil
.
Factory
,
error
)
{
if
clusterCtx
==
""
{
if
clusterCtx
==
""
{
clusterCtx
=
clusterName
clusterCtx
=
clusterName
}
}
...
@@ -281,28 +288,26 @@ func fakeJoinHostFactory(clusterName, clusterCtx, secretName, server, token stri
...
@@ -281,28 +288,26 @@ func fakeJoinHostFactory(clusterName, clusterCtx, secretName, server, token stri
}
}
cmName
:=
"controller-manager"
cmName
:=
"controller-manager"
deployment
List
:=
v1beta1
.
DeploymentLis
t
{
deployment
:=
v1beta1
.
Deploymen
t
{
TypeMeta
:
metav1
.
TypeMeta
{
TypeMeta
:
metav1
.
TypeMeta
{
Kind
:
"Deployment
List
"
,
Kind
:
"Deployment"
,
APIVersion
:
testapi
.
Extensions
.
GroupVersion
()
.
String
(),
APIVersion
:
testapi
.
Extensions
.
GroupVersion
()
.
String
(),
},
},
Items
:
[]
v1beta1
.
Deployment
{
ObjectMeta
:
metav1
.
ObjectMeta
{
{
Name
:
cmName
,
TypeMeta
:
metav1
.
TypeMeta
{
Namespace
:
util
.
DefaultFederationSystemNamespace
,
Kind
:
"Deployment"
,
Annotations
:
map
[
string
]
string
{
APIVersion
:
testapi
.
Extensions
.
GroupVersion
()
.
String
(),
util
.
FedDomainMapKey
:
fmt
.
Sprintf
(
"%s=%s"
,
clusterCtx
,
zoneName
),
},
federation
.
FederationNameAnnotation
:
testFederationName
,
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
cmName
,
Namespace
:
util
.
DefaultFederationSystemNamespace
,
Annotations
:
map
[
string
]
string
{
util
.
FedDomainMapKey
:
fmt
.
Sprintf
(
"%s=%s"
,
clusterCtx
,
"test-dns-zone"
),
federation
.
FederationNameAnnotation
:
testFederationName
,
},
},
},
},
},
},
}
}
if
dnsProvider
==
util
.
FedDNSProviderCoreDNS
{
deployment
.
Annotations
[
util
.
FedDNSZoneName
]
=
zoneName
deployment
.
Annotations
[
util
.
FedNameServer
]
=
coreDNSServer
deployment
.
Annotations
[
util
.
FedDNSProvider
]
=
util
.
FedDNSProviderCoreDNS
}
deploymentList
:=
v1beta1
.
DeploymentList
{
Items
:
[]
v1beta1
.
Deployment
{
deployment
}}
f
,
tf
,
codec
,
_
:=
cmdtesting
.
NewAPIFactory
()
f
,
tf
,
codec
,
_
:=
cmdtesting
.
NewAPIFactory
()
extensionCodec
:=
testapi
.
Extensions
.
Codec
()
extensionCodec
:=
testapi
.
Extensions
.
Codec
()
...
@@ -346,12 +351,12 @@ func fakeJoinHostFactory(clusterName, clusterCtx, secretName, server, token stri
...
@@ -346,12 +351,12 @@ func fakeJoinHostFactory(clusterName, clusterCtx, secretName, server, token stri
return
f
,
nil
return
f
,
nil
}
}
func
fakeJoinTargetClusterFactory
(
clusterName
,
clusterCtx
string
)
(
cmdutil
.
Factory
,
error
)
{
func
fakeJoinTargetClusterFactory
(
clusterName
,
clusterCtx
,
dnsProvider
string
)
(
cmdutil
.
Factory
,
error
)
{
if
clusterCtx
==
""
{
if
clusterCtx
==
""
{
clusterCtx
=
clusterName
clusterCtx
=
clusterName
}
}
configmapObject
:=
v1
.
ConfigMap
{
configmapObject
:=
&
v1
.
ConfigMap
{
ObjectMeta
:
metav1
.
ObjectMeta
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
util
.
KubeDnsConfigmapName
,
Name
:
util
.
KubeDnsConfigmapName
,
Namespace
:
metav1
.
NamespaceSystem
,
Namespace
:
metav1
.
NamespaceSystem
,
...
@@ -361,9 +366,17 @@ func fakeJoinTargetClusterFactory(clusterName, clusterCtx string) (cmdutil.Facto
...
@@ -361,9 +366,17 @@ func fakeJoinTargetClusterFactory(clusterName, clusterCtx string) (cmdutil.Facto
},
},
},
},
Data
:
map
[
string
]
string
{
Data
:
map
[
string
]
string
{
util
.
FedDomainMapKey
:
fmt
.
Sprintf
(
"%s=%s"
,
clusterCtx
,
"test-dns-zone"
),
util
.
FedDomainMapKey
:
fmt
.
Sprintf
(
"%s=%s"
,
clusterCtx
,
zoneName
),
},
},
}
}
if
dnsProvider
==
util
.
FedDNSProviderCoreDNS
{
annotations
:=
map
[
string
]
string
{
util
.
FedDNSProvider
:
util
.
FedDNSProviderCoreDNS
,
util
.
FedDNSZoneName
:
zoneName
,
util
.
FedNameServer
:
coreDNSServer
,
}
configmapObject
=
populateStubDomainsIfRequiredTest
(
configmapObject
,
annotations
)
}
f
,
tf
,
codec
,
_
:=
cmdtesting
.
NewAPIFactory
()
f
,
tf
,
codec
,
_
:=
cmdtesting
.
NewAPIFactory
()
ns
:=
dynamic
.
ContentConfig
()
.
NegotiatedSerializer
ns
:=
dynamic
.
ContentConfig
()
.
NegotiatedSerializer
...
@@ -383,10 +396,10 @@ func fakeJoinTargetClusterFactory(clusterName, clusterCtx string) (cmdutil.Facto
...
@@ -383,10 +396,10 @@ func fakeJoinTargetClusterFactory(clusterName, clusterCtx string) (cmdutil.Facto
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
if
!
apiequality
.
Semantic
.
DeepEqual
(
got
,
configmapObject
)
{
if
!
apiequality
.
Semantic
.
DeepEqual
(
&
got
,
configmapObject
)
{
return
nil
,
fmt
.
Errorf
(
"Unexpected configmap object
\n\t
Diff: %s"
,
diff
.
ObjectGoPrintDiff
(
got
,
configmapObject
))
return
nil
,
fmt
.
Errorf
(
"Unexpected configmap object
\n\t
Diff: %s"
,
diff
.
ObjectGoPrintDiff
(
&
got
,
configmapObject
))
}
}
return
&
http
.
Response
{
StatusCode
:
http
.
StatusCreated
,
Header
:
kubefedtesting
.
DefaultHeader
(),
Body
:
kubefedtesting
.
ObjBody
(
codec
,
&
configmapObject
)},
nil
return
&
http
.
Response
{
StatusCode
:
http
.
StatusCreated
,
Header
:
kubefedtesting
.
DefaultHeader
(),
Body
:
kubefedtesting
.
ObjBody
(
codec
,
configmapObject
)},
nil
default
:
default
:
return
nil
,
fmt
.
Errorf
(
"unexpected request: %#v
\n
%#v"
,
req
.
URL
,
req
)
return
nil
,
fmt
.
Errorf
(
"unexpected request: %#v
\n
%#v"
,
req
.
URL
,
req
)
}
}
...
@@ -413,3 +426,16 @@ func fakeCluster(clusterName, secretName, server string) federationapi.Cluster {
...
@@ -413,3 +426,16 @@ func fakeCluster(clusterName, secretName, server string) federationapi.Cluster {
},
},
}
}
}
}
// TODO: Reuse the function populateStubDomainsIfRequired once that function is converted to use versioned objects.
func
populateStubDomainsIfRequiredTest
(
configMap
*
v1
.
ConfigMap
,
annotations
map
[
string
]
string
)
*
v1
.
ConfigMap
{
dnsProvider
:=
annotations
[
util
.
FedDNSProvider
]
dnsZoneName
:=
annotations
[
util
.
FedDNSZoneName
]
nameServer
:=
annotations
[
util
.
FedNameServer
]
if
dnsProvider
!=
util
.
FedDNSProviderCoreDNS
||
dnsZoneName
==
""
||
nameServer
==
""
{
return
configMap
}
configMap
.
Data
[
util
.
KubeDnsStubDomains
]
=
fmt
.
Sprintf
(
`{"%s":["%s"]}`
,
dnsZoneName
,
nameServer
)
return
configMap
}
federation/pkg/kubefed/unjoin.go
View file @
2ba7c8e1
...
@@ -111,10 +111,10 @@ func (u *unjoinFederation) Run(f cmdutil.Factory, cmdOut, cmdErr io.Writer, conf
...
@@ -111,10 +111,10 @@ func (u *unjoinFederation) Run(f cmdutil.Factory, cmdOut, cmdErr io.Writer, conf
// We anyways continue to try and delete the config map but with above warning
// We anyways continue to try and delete the config map but with above warning
}
}
// We need to ensure
dele
ting the config map created in the deregistered cluster
// We need to ensure
upda
ting the config map created in the deregistered cluster
// This configmap was created when the cluster joined this federation to aid
// This configmap was created
/updated
when the cluster joined this federation to aid
// the kube-dns of that cluster to aid service discovery.
// the kube-dns of that cluster to aid service discovery.
err
=
dele
teConfigMapFromCluster
(
hostClientset
,
secret
,
cluster
,
u
.
commonOptions
.
FederationSystemNamespace
)
err
=
upda
teConfigMapFromCluster
(
hostClientset
,
secret
,
cluster
,
u
.
commonOptions
.
FederationSystemNamespace
)
if
err
!=
nil
{
if
err
!=
nil
{
fmt
.
Fprintf
(
cmdErr
,
"WARNING: Encountered error in deleting kube-dns configmap, %v"
,
err
)
fmt
.
Fprintf
(
cmdErr
,
"WARNING: Encountered error in deleting kube-dns configmap, %v"
,
err
)
// We anyways continue to print success message but with above warning
// We anyways continue to print success message but with above warning
...
@@ -162,7 +162,7 @@ func popCluster(f cmdutil.Factory, name string) (*federationapi.Cluster, error)
...
@@ -162,7 +162,7 @@ func popCluster(f cmdutil.Factory, name string) (*federationapi.Cluster, error)
return
cluster
,
rh
.
Delete
(
""
,
name
)
return
cluster
,
rh
.
Delete
(
""
,
name
)
}
}
func
dele
teConfigMapFromCluster
(
hostClientset
internalclientset
.
Interface
,
secret
*
api
.
Secret
,
cluster
*
federationapi
.
Cluster
,
fedSystemNamespace
string
)
error
{
func
upda
teConfigMapFromCluster
(
hostClientset
internalclientset
.
Interface
,
secret
*
api
.
Secret
,
cluster
*
federationapi
.
Cluster
,
fedSystemNamespace
string
)
error
{
clientset
,
err
:=
getClientsetFromCluster
(
secret
,
cluster
)
clientset
,
err
:=
getClientsetFromCluster
(
secret
,
cluster
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
...
@@ -182,12 +182,20 @@ func deleteConfigMapFromCluster(hostClientset internalclientset.Interface, secre
...
@@ -182,12 +182,20 @@ func deleteConfigMapFromCluster(hostClientset internalclientset.Interface, secre
return
err
return
err
}
}
if
_
,
ok
:=
configMap
.
Data
[
util
.
FedDomainMapKey
];
!
ok
{
needUpdate
:=
false
return
nil
if
_
,
ok
:=
configMap
.
Data
[
util
.
FedDomainMapKey
];
ok
{
configMap
.
Data
[
util
.
FedDomainMapKey
]
=
removeConfigMapString
(
configMap
.
Data
[
util
.
FedDomainMapKey
],
domainMap
)
needUpdate
=
true
}
if
_
,
ok
:=
configMap
.
Data
[
util
.
KubeDnsStubDomains
];
ok
{
delete
(
configMap
.
Data
,
util
.
KubeDnsStubDomains
)
needUpdate
=
true
}
}
configMap
.
Data
[
util
.
FedDomainMapKey
]
=
removeConfigMapString
(
configMap
.
Data
[
util
.
FedDomainMapKey
],
domainMap
)
_
,
err
=
clientset
.
Core
()
.
ConfigMaps
(
metav1
.
NamespaceSystem
)
.
Update
(
configMap
)
if
needUpdate
{
_
,
err
=
clientset
.
Core
()
.
ConfigMaps
(
metav1
.
NamespaceSystem
)
.
Update
(
configMap
)
}
return
err
return
err
}
}
...
...
federation/pkg/kubefed/util/util.go
View file @
2ba7c8e1
...
@@ -44,8 +44,13 @@ const (
...
@@ -44,8 +44,13 @@ const (
KubeconfigSecretDataKey
=
"kubeconfig"
KubeconfigSecretDataKey
=
"kubeconfig"
// Used in and to create the kube-dns configmap storing the zone info
// Used in and to create the kube-dns configmap storing the zone info
FedDomainMapKey
=
"federations"
FedDomainMapKey
=
"federations"
KubeDnsConfigmapName
=
"kube-dns"
KubeDnsConfigmapName
=
"kube-dns"
FedDNSZoneName
=
"dns-zone-name"
FedNameServer
=
"nameserver"
FedDNSProvider
=
"dns-provider"
FedDNSProviderCoreDNS
=
"coredns"
KubeDnsStubDomains
=
"stubDomains"
// DefaultFederationSystemNamespace is the namespace in which
// DefaultFederationSystemNamespace is the namespace in which
// federation system components are hosted.
// federation system components are hosted.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment