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
7bcdd8b5
Unverified
Commit
7bcdd8b5
authored
Oct 02, 2018
by
k8s-ci-robot
Committed by
GitHub
Oct 02, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #62673 from jennybuckley/no-limitrange-on-pod-updates
Do not run limitrange admission plugin on pod update requests
parents
a7da82fb
3f1b0cc5
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
21 additions
and
6 deletions
+21
-6
admission.go
plugin/pkg/admission/limitranger/admission.go
+7
-0
admission_test.go
plugin/pkg/admission/limitranger/admission_test.go
+14
-6
No files found.
plugin/pkg/admission/limitranger/admission.go
View file @
7bcdd8b5
...
...
@@ -454,6 +454,13 @@ func (d *DefaultLimitRangerActions) SupportsAttributes(a admission.Attributes) b
return
false
}
// Since containers and initContainers cannot currently be added, removed, or updated, it is unnecessary
// to mutate and validate limitrange on pod updates. Trying to mutate containers or initContainers on a pod
// update request will always fail pod validation because those fields are immutable once the object is created.
if
a
.
GetKind
()
.
GroupKind
()
==
api
.
Kind
(
"Pod"
)
&&
a
.
GetOperation
()
==
admission
.
Update
{
return
false
}
return
a
.
GetKind
()
.
GroupKind
()
==
api
.
Kind
(
"Pod"
)
||
a
.
GetKind
()
.
GroupKind
()
==
api
.
Kind
(
"PersistentVolumeClaim"
)
}
...
...
plugin/pkg/admission/limitranger/admission_test.go
View file @
7bcdd8b5
...
...
@@ -705,13 +705,17 @@ func TestLimitRangerIgnoresSubresource(t *testing.T) {
informerFactory
.
Start
(
wait
.
NeverStop
)
testPod
:=
validPod
(
"testPod"
,
1
,
api
.
ResourceRequirements
{})
err
=
handler
.
Admit
(
admission
.
NewAttributesRecord
(
&
testPod
,
nil
,
api
.
Kind
(
"Pod"
)
.
WithVersion
(
"version"
),
limitRange
.
Namespace
,
"testPod"
,
api
.
Resource
(
"pods"
)
.
WithVersion
(
"version"
),
""
,
admission
.
Upd
ate
,
false
,
nil
))
err
=
handler
.
Admit
(
admission
.
NewAttributesRecord
(
&
testPod
,
nil
,
api
.
Kind
(
"Pod"
)
.
WithVersion
(
"version"
),
limitRange
.
Namespace
,
"testPod"
,
api
.
Resource
(
"pods"
)
.
WithVersion
(
"version"
),
""
,
admission
.
Cre
ate
,
false
,
nil
))
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
err
=
handler
.
Validate
(
admission
.
NewAttributesRecord
(
&
testPod
,
nil
,
api
.
Kind
(
"Pod"
)
.
WithVersion
(
"version"
),
limitRange
.
Namespace
,
"testPod"
,
api
.
Resource
(
"pods"
)
.
WithVersion
(
"version"
),
""
,
admission
.
Upd
ate
,
false
,
nil
))
err
=
handler
.
Validate
(
admission
.
NewAttributesRecord
(
&
testPod
,
nil
,
api
.
Kind
(
"Pod"
)
.
WithVersion
(
"version"
),
limitRange
.
Namespace
,
"testPod"
,
api
.
Resource
(
"pods"
)
.
WithVersion
(
"version"
),
""
,
admission
.
Cre
ate
,
false
,
nil
))
if
err
==
nil
{
t
.
Errorf
(
"Expected an error since the pod did not specify resource limits in its update call"
)
t
.
Errorf
(
"Expected an error since the pod did not specify resource limits in its create call"
)
}
err
=
handler
.
Validate
(
admission
.
NewAttributesRecord
(
&
testPod
,
nil
,
api
.
Kind
(
"Pod"
)
.
WithVersion
(
"version"
),
limitRange
.
Namespace
,
"testPod"
,
api
.
Resource
(
"pods"
)
.
WithVersion
(
"version"
),
""
,
admission
.
Update
,
false
,
nil
))
if
err
!=
nil
{
t
.
Errorf
(
"Expected not to call limitranger actions on pod updates"
)
}
err
=
handler
.
Validate
(
admission
.
NewAttributesRecord
(
&
testPod
,
nil
,
api
.
Kind
(
"Pod"
)
.
WithVersion
(
"version"
),
limitRange
.
Namespace
,
"testPod"
,
api
.
Resource
(
"pods"
)
.
WithVersion
(
"version"
),
"status"
,
admission
.
Update
,
false
,
nil
))
...
...
@@ -731,13 +735,17 @@ func TestLimitRangerAdmitPod(t *testing.T) {
informerFactory
.
Start
(
wait
.
NeverStop
)
testPod
:=
validPod
(
"testPod"
,
1
,
api
.
ResourceRequirements
{})
err
=
handler
.
Admit
(
admission
.
NewAttributesRecord
(
&
testPod
,
nil
,
api
.
Kind
(
"Pod"
)
.
WithVersion
(
"version"
),
limitRange
.
Namespace
,
"testPod"
,
api
.
Resource
(
"pods"
)
.
WithVersion
(
"version"
),
""
,
admission
.
Upd
ate
,
false
,
nil
))
err
=
handler
.
Admit
(
admission
.
NewAttributesRecord
(
&
testPod
,
nil
,
api
.
Kind
(
"Pod"
)
.
WithVersion
(
"version"
),
limitRange
.
Namespace
,
"testPod"
,
api
.
Resource
(
"pods"
)
.
WithVersion
(
"version"
),
""
,
admission
.
Cre
ate
,
false
,
nil
))
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
err
=
handler
.
Validate
(
admission
.
NewAttributesRecord
(
&
testPod
,
nil
,
api
.
Kind
(
"Pod"
)
.
WithVersion
(
"version"
),
limitRange
.
Namespace
,
"testPod"
,
api
.
Resource
(
"pods"
)
.
WithVersion
(
"version"
),
""
,
admission
.
Upd
ate
,
false
,
nil
))
err
=
handler
.
Validate
(
admission
.
NewAttributesRecord
(
&
testPod
,
nil
,
api
.
Kind
(
"Pod"
)
.
WithVersion
(
"version"
),
limitRange
.
Namespace
,
"testPod"
,
api
.
Resource
(
"pods"
)
.
WithVersion
(
"version"
),
""
,
admission
.
Cre
ate
,
false
,
nil
))
if
err
==
nil
{
t
.
Errorf
(
"Expected an error since the pod did not specify resource limits in its update call"
)
t
.
Errorf
(
"Expected an error since the pod did not specify resource limits in its create call"
)
}
err
=
handler
.
Validate
(
admission
.
NewAttributesRecord
(
&
testPod
,
nil
,
api
.
Kind
(
"Pod"
)
.
WithVersion
(
"version"
),
limitRange
.
Namespace
,
"testPod"
,
api
.
Resource
(
"pods"
)
.
WithVersion
(
"version"
),
""
,
admission
.
Update
,
false
,
nil
))
if
err
!=
nil
{
t
.
Errorf
(
"Expected not to call limitranger actions on pod updates"
)
}
err
=
handler
.
Validate
(
admission
.
NewAttributesRecord
(
&
testPod
,
nil
,
api
.
Kind
(
"Pod"
)
.
WithVersion
(
"version"
),
limitRange
.
Namespace
,
"testPod"
,
api
.
Resource
(
"pods"
)
.
WithVersion
(
"version"
),
"status"
,
admission
.
Update
,
false
,
nil
))
...
...
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