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
d647c26e
Commit
d647c26e
authored
Nov 06, 2018
by
zuoxiu.jm
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
prune internal client from ca registration hook
parent
f40a5d11
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
27 additions
and
50 deletions
+27
-50
BUILD
pkg/master/BUILD
+0
-2
client_ca_hook.go
pkg/master/client_ca_hook.go
+7
-7
client_ca_hook_test.go
pkg/master/client_ca_hook_test.go
+20
-20
client_util.go
pkg/master/client_util.go
+0
-21
No files found.
pkg/master/BUILD
View file @
d647c26e
...
...
@@ -35,7 +35,6 @@ go_library(
"//pkg/apis/scheduling/install:go_default_library",
"//pkg/apis/settings/install:go_default_library",
"//pkg/apis/storage/install:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/core/internalversion:go_default_library",
"//pkg/features:go_default_library",
"//pkg/kubeapiserver/options:go_default_library",
"//pkg/kubelet/client:go_default_library",
...
...
@@ -144,7 +143,6 @@ go_test(
"//pkg/apis/extensions:go_default_library",
"//pkg/apis/rbac:go_default_library",
"//pkg/apis/storage:go_default_library",
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
"//pkg/generated/openapi:go_default_library",
"//pkg/kubelet/client:go_default_library",
"//pkg/master/reconcilers:go_default_library",
...
...
pkg/master/client_ca_hook.go
View file @
d647c26e
...
...
@@ -22,13 +22,13 @@ import (
"reflect"
"time"
corev1
"k8s.io/api/core/v1"
apierrors
"k8s.io/apimachinery/pkg/api/errors"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
utilruntime
"k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apimachinery/pkg/util/wait"
genericapiserver
"k8s.io/apiserver/pkg/server"
api
"k8s.io/kubernetes/pkg/apis/core"
coreclient
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
corev1client
"k8s.io/client-go/kubernetes/typed/core/v1"
)
type
ClientCARegistrationHook
struct
{
...
...
@@ -49,7 +49,7 @@ func (h ClientCARegistrationHook) PostStartHook(hookContext genericapiserver.Pos
// retry building the config since sometimes the server can be in an in-between state which caused
// some kind of auto detection failure as I recall from other post start hooks.
// TODO see if this is still true and fix the RBAC one too if it isn't.
client
,
err
:=
coreclient
.
NewForConfig
(
hookContext
.
LoopbackClientConfig
)
client
,
err
:=
core
v1
client
.
NewForConfig
(
hookContext
.
LoopbackClientConfig
)
if
err
!=
nil
{
utilruntime
.
HandleError
(
err
)
return
false
,
nil
...
...
@@ -68,8 +68,8 @@ func (h ClientCARegistrationHook) PostStartHook(hookContext genericapiserver.Pos
// tryToWriteClientCAs is here for unit testing with a fake client. This is a wait.ConditionFunc so the bool
// indicates if the condition was met. True when its finished, false when it should retry.
func
(
h
ClientCARegistrationHook
)
tryToWriteClientCAs
(
client
core
client
.
Core
Interface
)
(
bool
,
error
)
{
if
err
:=
createNamespaceIfNeeded
WithInternalClient
(
client
,
metav1
.
NamespaceSystem
);
err
!=
nil
{
func
(
h
ClientCARegistrationHook
)
tryToWriteClientCAs
(
client
core
v1client
.
CoreV1
Interface
)
(
bool
,
error
)
{
if
err
:=
createNamespaceIfNeeded
(
client
,
metav1
.
NamespaceSystem
);
err
!=
nil
{
utilruntime
.
HandleError
(
err
)
return
false
,
nil
}
...
...
@@ -119,10 +119,10 @@ func jsonSerializeStringSlice(in []string) (string, error) {
return
string
(
out
),
err
}
func
writeConfigMap
(
client
coreclient
.
ConfigMapsGetter
,
name
string
,
data
map
[
string
]
string
)
error
{
func
writeConfigMap
(
client
core
v1
client
.
ConfigMapsGetter
,
name
string
,
data
map
[
string
]
string
)
error
{
existing
,
err
:=
client
.
ConfigMaps
(
metav1
.
NamespaceSystem
)
.
Get
(
name
,
metav1
.
GetOptions
{})
if
apierrors
.
IsNotFound
(
err
)
{
_
,
err
:=
client
.
ConfigMaps
(
metav1
.
NamespaceSystem
)
.
Create
(
&
api
.
ConfigMap
{
_
,
err
:=
client
.
ConfigMaps
(
metav1
.
NamespaceSystem
)
.
Create
(
&
corev1
.
ConfigMap
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Namespace
:
metav1
.
NamespaceSystem
,
Name
:
name
},
Data
:
data
,
})
...
...
pkg/master/client_ca_hook_test.go
View file @
d647c26e
...
...
@@ -20,12 +20,12 @@ import (
"reflect"
"testing"
corev1
"k8s.io/api/core/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/diff"
"k8s.io/client-go/kubernetes/fake"
clienttesting
"k8s.io/client-go/testing"
api
"k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
)
func
TestWriteClientCAs
(
t
*
testing
.
T
)
{
...
...
@@ -33,7 +33,7 @@ func TestWriteClientCAs(t *testing.T) {
name
string
hook
ClientCARegistrationHook
preexistingObjs
[]
runtime
.
Object
expectedConfigMaps
map
[
string
]
*
api
.
ConfigMap
expectedConfigMaps
map
[
string
]
*
corev1
.
ConfigMap
expectUpdate
bool
}{
{
...
...
@@ -46,7 +46,7 @@ func TestWriteClientCAs(t *testing.T) {
RequestHeaderCA
:
[]
byte
(
"bar"
),
RequestHeaderAllowedNames
:
[]
string
{
"first"
,
"second"
},
},
expectedConfigMaps
:
map
[
string
]
*
api
.
ConfigMap
{
expectedConfigMaps
:
map
[
string
]
*
corev1
.
ConfigMap
{
"extension-apiserver-authentication"
:
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Namespace
:
metav1
.
NamespaceSystem
,
Name
:
"extension-apiserver-authentication"
},
Data
:
map
[
string
]
string
{
...
...
@@ -66,7 +66,7 @@ func TestWriteClientCAs(t *testing.T) {
RequestHeaderCA
:
[]
byte
(
"bar"
),
RequestHeaderAllowedNames
:
[]
string
{
"first"
,
"second"
},
},
expectedConfigMaps
:
map
[
string
]
*
api
.
ConfigMap
{
expectedConfigMaps
:
map
[
string
]
*
corev1
.
ConfigMap
{
"extension-apiserver-authentication"
:
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Namespace
:
metav1
.
NamespaceSystem
,
Name
:
"extension-apiserver-authentication"
},
Data
:
map
[
string
]
string
{
...
...
@@ -84,7 +84,7 @@ func TestWriteClientCAs(t *testing.T) {
hook
:
ClientCARegistrationHook
{
ClientCA
:
[]
byte
(
"foo"
),
},
expectedConfigMaps
:
map
[
string
]
*
api
.
ConfigMap
{
expectedConfigMaps
:
map
[
string
]
*
corev1
.
ConfigMap
{
"extension-apiserver-authentication"
:
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Namespace
:
metav1
.
NamespaceSystem
,
Name
:
"extension-apiserver-authentication"
},
Data
:
map
[
string
]
string
{
...
...
@@ -98,7 +98,7 @@ func TestWriteClientCAs(t *testing.T) {
hook
:
ClientCARegistrationHook
{
RequestHeaderCA
:
[]
byte
(
"bar"
),
},
expectedConfigMaps
:
map
[
string
]
*
api
.
ConfigMap
{
expectedConfigMaps
:
map
[
string
]
*
corev1
.
ConfigMap
{
"extension-apiserver-authentication"
:
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Namespace
:
metav1
.
NamespaceSystem
,
Name
:
"extension-apiserver-authentication"
},
Data
:
map
[
string
]
string
{
...
...
@@ -117,14 +117,14 @@ func TestWriteClientCAs(t *testing.T) {
ClientCA
:
[]
byte
(
"foo"
),
},
preexistingObjs
:
[]
runtime
.
Object
{
&
api
.
ConfigMap
{
&
corev1
.
ConfigMap
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Namespace
:
metav1
.
NamespaceSystem
,
Name
:
"extension-apiserver-authentication"
},
Data
:
map
[
string
]
string
{
"client-ca-file"
:
"other"
,
},
},
},
expectedConfigMaps
:
map
[
string
]
*
api
.
ConfigMap
{
expectedConfigMaps
:
map
[
string
]
*
corev1
.
ConfigMap
{
"extension-apiserver-authentication"
:
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Namespace
:
metav1
.
NamespaceSystem
,
Name
:
"extension-apiserver-authentication"
},
Data
:
map
[
string
]
string
{
...
...
@@ -144,7 +144,7 @@ func TestWriteClientCAs(t *testing.T) {
RequestHeaderAllowedNames
:
[]
string
{},
},
preexistingObjs
:
[]
runtime
.
Object
{
&
api
.
ConfigMap
{
&
corev1
.
ConfigMap
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Namespace
:
metav1
.
NamespaceSystem
,
Name
:
"extension-apiserver-authentication"
},
Data
:
map
[
string
]
string
{
"requestheader-username-headers"
:
`null`
,
...
...
@@ -155,7 +155,7 @@ func TestWriteClientCAs(t *testing.T) {
},
},
},
expectedConfigMaps
:
map
[
string
]
*
api
.
ConfigMap
{
expectedConfigMaps
:
map
[
string
]
*
corev1
.
ConfigMap
{
"extension-apiserver-authentication"
:
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Namespace
:
metav1
.
NamespaceSystem
,
Name
:
"extension-apiserver-authentication"
},
Data
:
map
[
string
]
string
{
...
...
@@ -175,9 +175,9 @@ func TestWriteClientCAs(t *testing.T) {
ClientCA
:
[]
byte
(
"foo"
),
},
preexistingObjs
:
[]
runtime
.
Object
{
&
api
.
Namespace
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
metav1
.
NamespaceSystem
}},
&
corev1
.
Namespace
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
metav1
.
NamespaceSystem
}},
},
expectedConfigMaps
:
map
[
string
]
*
api
.
ConfigMap
{
expectedConfigMaps
:
map
[
string
]
*
corev1
.
ConfigMap
{
"extension-apiserver-authentication"
:
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Namespace
:
metav1
.
NamespaceSystem
,
Name
:
"extension-apiserver-authentication"
},
Data
:
map
[
string
]
string
{
...
...
@@ -196,7 +196,7 @@ func TestWriteClientCAs(t *testing.T) {
RequestHeaderAllowedNames
:
[]
string
{},
},
preexistingObjs
:
[]
runtime
.
Object
{
&
api
.
ConfigMap
{
&
corev1
.
ConfigMap
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Namespace
:
metav1
.
NamespaceSystem
,
Name
:
"extension-apiserver-authentication"
},
Data
:
map
[
string
]
string
{
"requestheader-username-headers"
:
`[]`
,
...
...
@@ -207,7 +207,7 @@ func TestWriteClientCAs(t *testing.T) {
},
},
},
expectedConfigMaps
:
map
[
string
]
*
api
.
ConfigMap
{},
expectedConfigMaps
:
map
[
string
]
*
corev1
.
ConfigMap
{},
expectUpdate
:
false
,
},
}
...
...
@@ -217,7 +217,7 @@ func TestWriteClientCAs(t *testing.T) {
client
:=
fake
.
NewSimpleClientset
(
test
.
preexistingObjs
...
)
test
.
hook
.
tryToWriteClientCAs
(
client
.
Core
())
actualConfigMaps
,
updated
:=
getFinalConfiMaps
(
client
)
actualConfigMaps
,
updated
:=
getFinalConfi
g
Maps
(
client
)
if
!
reflect
.
DeepEqual
(
test
.
expectedConfigMaps
,
actualConfigMaps
)
{
t
.
Fatalf
(
"%s: %v"
,
test
.
name
,
diff
.
ObjectReflectDiff
(
test
.
expectedConfigMaps
,
actualConfigMaps
))
}
...
...
@@ -228,18 +228,18 @@ func TestWriteClientCAs(t *testing.T) {
}
}
func
getFinalConfi
Maps
(
client
*
fake
.
Clientset
)
(
map
[
string
]
*
api
.
ConfigMap
,
bool
)
{
ret
:=
map
[
string
]
*
api
.
ConfigMap
{}
func
getFinalConfi
gMaps
(
client
*
fake
.
Clientset
)
(
map
[
string
]
*
corev1
.
ConfigMap
,
bool
)
{
ret
:=
map
[
string
]
*
corev1
.
ConfigMap
{}
updated
:=
false
for
_
,
action
:=
range
client
.
Actions
()
{
if
action
.
Matches
(
"create"
,
"configmaps"
)
{
obj
:=
action
.
(
clienttesting
.
CreateAction
)
.
GetObject
()
.
(
*
api
.
ConfigMap
)
obj
:=
action
.
(
clienttesting
.
CreateAction
)
.
GetObject
()
.
(
*
corev1
.
ConfigMap
)
ret
[
obj
.
Name
]
=
obj
}
if
action
.
Matches
(
"update"
,
"configmaps"
)
{
updated
=
true
obj
:=
action
.
(
clienttesting
.
UpdateAction
)
.
GetObject
()
.
(
*
api
.
ConfigMap
)
obj
:=
action
.
(
clienttesting
.
UpdateAction
)
.
GetObject
()
.
(
*
corev1
.
ConfigMap
)
ret
[
obj
.
Name
]
=
obj
}
}
...
...
pkg/master/client_util.go
View file @
d647c26e
...
...
@@ -21,8 +21,6 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
corev1client
"k8s.io/client-go/kubernetes/typed/core/v1"
api
"k8s.io/kubernetes/pkg/apis/core"
coreclient
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
)
func
createNamespaceIfNeeded
(
c
corev1client
.
NamespacesGetter
,
ns
string
)
error
{
...
...
@@ -42,22 +40,3 @@ func createNamespaceIfNeeded(c corev1client.NamespacesGetter, ns string) error {
}
return
err
}
// TODO(yue9944882): Remove it once we switch ClientCARegistrationHook to external types
func
createNamespaceIfNeededWithInternalClient
(
c
coreclient
.
NamespacesGetter
,
ns
string
)
error
{
if
_
,
err
:=
c
.
Namespaces
()
.
Get
(
ns
,
metav1
.
GetOptions
{});
err
==
nil
{
// the namespace already exists
return
nil
}
newNs
:=
&
api
.
Namespace
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
ns
,
Namespace
:
""
,
},
}
_
,
err
:=
c
.
Namespaces
()
.
Create
(
newNs
)
if
err
!=
nil
&&
errors
.
IsAlreadyExists
(
err
)
{
err
=
nil
}
return
err
}
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