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
1aba19a2
Unverified
Commit
1aba19a2
authored
Oct 05, 2018
by
k8s-ci-robot
Committed by
GitHub
Oct 05, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #69426 from rosti/allow-init-join-mix
kubeadm: Allow mixing Init and Join Configurations
parents
6764bc49
f0d82fb5
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
37 additions
and
17 deletions
+37
-17
common.go
cmd/kubeadm/app/util/config/common.go
+8
-8
common_test.go
cmd/kubeadm/app/util/config/common_test.go
+10
-8
nodeconfig.go
cmd/kubeadm/app/util/config/nodeconfig.go
+19
-1
No files found.
cmd/kubeadm/app/util/config/common.go
View file @
1aba19a2
...
...
@@ -93,19 +93,19 @@ func DetectUnsupportedVersion(b []byte) error {
}
knownKinds
[
gvk
.
Kind
]
=
true
}
// InitConfiguration, MasterConfiguration and NodeConfiguration are mutually exclusive, error if more than one are specified
// InitConfiguration and JoinConfiguration may not apply together, warn if more than one is specified
mutuallyExclusive
:=
[]
string
{
constants
.
InitConfigurationKind
,
constants
.
JoinConfigurationKind
}
foundOne
:=
false
mutuallyExclusiveCount
:=
0
for
_
,
kind
:=
range
mutuallyExclusive
{
if
knownKinds
[
kind
]
{
if
!
foundOne
{
foundOne
=
true
continue
}
return
fmt
.
Errorf
(
"invalid configuration: kinds %v are mutually exclusive"
,
mutuallyExclusive
)
mutuallyExclusiveCount
++
}
}
if
mutuallyExclusiveCount
>
1
{
glog
.
Warningf
(
"WARNING: Detected resource kinds that may not apply: %v"
,
mutuallyExclusive
)
}
return
nil
}
...
...
cmd/kubeadm/app/util/config/common_test.go
View file @
1aba19a2
...
...
@@ -163,25 +163,27 @@ func TestDetectUnsupportedVersion(t *testing.T) {
name
:
"Ignore other Kind"
,
fileContents
:
bytes
.
Join
([][]
byte
{
files
[
"Foo"
],
files
[
"Master_v1beta1"
]},
[]
byte
(
constants
.
YAMLDocumentSeparator
)),
},
// CanMixInitJoin cases used to be MustNotMixInitJoin, however due to UX issues DetectUnsupportedVersion had to tolerate that.
// So the following tests actually verify, that Init and Join can be mixed together with no error.
{
name
:
"
MustNot
MixInitJoin v1alpha3"
,
name
:
"
Can
MixInitJoin v1alpha3"
,
fileContents
:
bytes
.
Join
([][]
byte
{
files
[
"Init_v1alpha3"
],
files
[
"Join_v1alpha3"
]},
[]
byte
(
constants
.
YAMLDocumentSeparator
)),
expectedErr
:
tru
e
,
expectedErr
:
fals
e
,
},
{
name
:
"
MustNot
MixInitJoin v1alpha3 - v1beta1"
,
name
:
"
Can
MixInitJoin v1alpha3 - v1beta1"
,
fileContents
:
bytes
.
Join
([][]
byte
{
files
[
"Init_v1alpha3"
],
files
[
"Join_v1beta1"
]},
[]
byte
(
constants
.
YAMLDocumentSeparator
)),
expectedErr
:
tru
e
,
expectedErr
:
fals
e
,
},
{
name
:
"
MustNot
MixInitJoin v1beta1 - v1alpha3"
,
name
:
"
Can
MixInitJoin v1beta1 - v1alpha3"
,
fileContents
:
bytes
.
Join
([][]
byte
{
files
[
"Init_v1beta1"
],
files
[
"Join_v1alpha3"
]},
[]
byte
(
constants
.
YAMLDocumentSeparator
)),
expectedErr
:
tru
e
,
expectedErr
:
fals
e
,
},
{
name
:
"
MustNot
MixInitJoin v1beta1"
,
name
:
"
Can
MixInitJoin v1beta1"
,
fileContents
:
bytes
.
Join
([][]
byte
{
files
[
"Init_v1beta1"
],
files
[
"Join_v1beta1"
]},
[]
byte
(
constants
.
YAMLDocumentSeparator
)),
expectedErr
:
tru
e
,
expectedErr
:
fals
e
,
},
}
...
...
cmd/kubeadm/app/util/config/nodeconfig.go
View file @
1aba19a2
...
...
@@ -19,6 +19,7 @@ package config
import
(
"fmt"
"io/ioutil"
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
"github.com/golang/glog"
...
...
@@ -27,6 +28,7 @@ import (
kubeadmscheme
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/scheme"
kubeadmapiv1beta1
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1"
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/validation"
kubeadmutil
"k8s.io/kubernetes/cmd/kubeadm/app/util"
)
// SetJoinDynamicDefaults checks and sets configuration values for the JoinConfiguration object
...
...
@@ -61,7 +63,23 @@ func NodeConfigFileAndDefaultsToInternalConfig(cfgPath string, defaultversionedc
return
nil
,
err
}
if
err
:=
runtime
.
DecodeInto
(
kubeadmscheme
.
Codecs
.
UniversalDecoder
(),
b
,
internalcfg
);
err
!=
nil
{
gvkmap
,
err
:=
kubeadmutil
.
SplitYAMLDocuments
(
b
)
if
err
!=
nil
{
return
nil
,
err
}
joinBytes
:=
[]
byte
{}
for
gvk
,
bytes
:=
range
gvkmap
{
if
gvk
.
Kind
==
constants
.
JoinConfigurationKind
{
joinBytes
=
bytes
}
}
if
len
(
joinBytes
)
==
0
{
return
nil
,
fmt
.
Errorf
(
"no %s found in config file %q"
,
constants
.
JoinConfigurationKind
,
cfgPath
)
}
if
err
:=
runtime
.
DecodeInto
(
kubeadmscheme
.
Codecs
.
UniversalDecoder
(),
joinBytes
,
internalcfg
);
err
!=
nil
{
return
nil
,
err
}
}
else
{
...
...
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