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
9ab98d9f
Commit
9ab98d9f
authored
Dec 07, 2017
by
Zihong Zheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove ExternalTrafficLocalOnly from kube_feature gate
parent
a505d1bc
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
19 additions
and
68 deletions
+19
-68
kube_features.go
pkg/features/kube_features.go
+0
-5
BUILD
pkg/proxy/iptables/BUILD
+0
-2
proxier.go
pkg/proxy/iptables/proxier.go
+1
-8
BUILD
pkg/proxy/ipvs/BUILD
+0
-2
proxier.go
pkg/proxy/ipvs/proxier.go
+1
-8
BUILD
pkg/proxy/winkernel/BUILD
+0
-2
proxier.go
pkg/proxy/winkernel/proxier.go
+1
-8
BUILD
pkg/registry/core/service/BUILD
+0
-4
rest.go
pkg/registry/core/service/rest.go
+16
-23
rest_test.go
pkg/registry/core/service/rest_test.go
+0
-6
No files found.
pkg/features/kube_features.go
View file @
9ab98d9f
...
...
@@ -33,10 +33,6 @@ const (
// beta: v1.4
AppArmor
utilfeature
.
Feature
=
"AppArmor"
// owner: @girishkalele
// alpha: v1.4
ExternalTrafficLocalOnly
utilfeature
.
Feature
=
"AllowExtTrafficLocalEndpoints"
// owner: @mtaufen
// alpha: v1.4
DynamicKubeletConfig
utilfeature
.
Feature
=
"DynamicKubeletConfig"
...
...
@@ -222,7 +218,6 @@ func init() {
// To add a new feature, define a key for it above and add it here. The features will be
// available throughout Kubernetes binaries.
var
defaultKubernetesFeatureGates
=
map
[
utilfeature
.
Feature
]
utilfeature
.
FeatureSpec
{
ExternalTrafficLocalOnly
:
{
Default
:
true
,
PreRelease
:
utilfeature
.
GA
},
AppArmor
:
{
Default
:
true
,
PreRelease
:
utilfeature
.
Beta
},
DynamicKubeletConfig
:
{
Default
:
false
,
PreRelease
:
utilfeature
.
Alpha
},
KubeletConfigFile
:
{
Default
:
false
,
PreRelease
:
utilfeature
.
Alpha
},
...
...
pkg/proxy/iptables/BUILD
View file @
9ab98d9f
...
...
@@ -16,7 +16,6 @@ go_library(
"//pkg/api/service:go_default_library",
"//pkg/apis/core:go_default_library",
"//pkg/apis/core/helper:go_default_library",
"//pkg/features:go_default_library",
"//pkg/proxy:go_default_library",
"//pkg/proxy/healthcheck:go_default_library",
"//pkg/proxy/metrics:go_default_library",
...
...
@@ -30,7 +29,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library",
"//vendor/k8s.io/client-go/tools/record:go_default_library",
"//vendor/k8s.io/utils/exec:go_default_library",
],
...
...
pkg/proxy/iptables/proxier.go
View file @
9ab98d9f
...
...
@@ -39,12 +39,10 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/wait"
utilfeature
"k8s.io/apiserver/pkg/util/feature"
"k8s.io/client-go/tools/record"
apiservice
"k8s.io/kubernetes/pkg/api/service"
api
"k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/proxy"
"k8s.io/kubernetes/pkg/proxy/healthcheck"
"k8s.io/kubernetes/pkg/proxy/metrics"
...
...
@@ -191,8 +189,7 @@ func (e *endpointsInfo) String() string {
// returns a new serviceInfo struct
func
newServiceInfo
(
svcPortName
proxy
.
ServicePortName
,
port
*
api
.
ServicePort
,
service
*
api
.
Service
)
*
serviceInfo
{
onlyNodeLocalEndpoints
:=
false
if
utilfeature
.
DefaultFeatureGate
.
Enabled
(
features
.
ExternalTrafficLocalOnly
)
&&
apiservice
.
RequestsOnlyLocalTraffic
(
service
)
{
if
apiservice
.
RequestsOnlyLocalTraffic
(
service
)
{
onlyNodeLocalEndpoints
=
true
}
var
stickyMaxAgeSeconds
int
...
...
@@ -773,10 +770,6 @@ func updateEndpointsMap(
changes
.
items
=
make
(
map
[
types
.
NamespacedName
]
*
endpointsChange
)
}()
if
!
utilfeature
.
DefaultFeatureGate
.
Enabled
(
features
.
ExternalTrafficLocalOnly
)
{
return
}
// TODO: If this will appear to be computationally expensive, consider
// computing this incrementally similarly to endpointsMap.
result
.
hcEndpoints
=
make
(
map
[
types
.
NamespacedName
]
int
)
...
...
pkg/proxy/ipvs/BUILD
View file @
9ab98d9f
...
...
@@ -53,7 +53,6 @@ go_library(
"//pkg/api/service:go_default_library",
"//pkg/apis/core:go_default_library",
"//pkg/apis/core/helper:go_default_library",
"//pkg/features:go_default_library",
"//pkg/proxy:go_default_library",
"//pkg/proxy/healthcheck:go_default_library",
"//pkg/proxy/metrics:go_default_library",
...
...
@@ -70,7 +69,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library",
"//vendor/k8s.io/client-go/tools/record:go_default_library",
"//vendor/k8s.io/utils/exec:go_default_library",
] + select({
...
...
pkg/proxy/ipvs/proxier.go
View file @
9ab98d9f
...
...
@@ -38,12 +38,10 @@ import (
utilruntime
"k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/wait"
utilfeature
"k8s.io/apiserver/pkg/util/feature"
"k8s.io/client-go/tools/record"
apiservice
"k8s.io/kubernetes/pkg/api/service"
api
"k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/proxy"
"k8s.io/kubernetes/pkg/proxy/healthcheck"
"k8s.io/kubernetes/pkg/proxy/metrics"
...
...
@@ -367,8 +365,7 @@ func updateServiceMap(
// returns a new serviceInfo struct
func
newServiceInfo
(
svcPortName
proxy
.
ServicePortName
,
port
*
api
.
ServicePort
,
service
*
api
.
Service
)
*
serviceInfo
{
onlyNodeLocalEndpoints
:=
false
if
utilfeature
.
DefaultFeatureGate
.
Enabled
(
features
.
ExternalTrafficLocalOnly
)
&&
apiservice
.
RequestsOnlyLocalTraffic
(
service
)
{
if
apiservice
.
RequestsOnlyLocalTraffic
(
service
)
{
onlyNodeLocalEndpoints
=
true
}
var
stickyMaxAgeSeconds
int
...
...
@@ -589,10 +586,6 @@ func updateEndpointsMap(
changes
.
items
=
make
(
map
[
types
.
NamespacedName
]
*
endpointsChange
)
}()
if
!
utilfeature
.
DefaultFeatureGate
.
Enabled
(
features
.
ExternalTrafficLocalOnly
)
{
return
}
// TODO: If this will appear to be computationally expensive, consider
// computing this incrementally similarly to endpointsMap.
result
.
hcEndpoints
=
make
(
map
[
types
.
NamespacedName
]
int
)
...
...
pkg/proxy/winkernel/BUILD
View file @
9ab98d9f
...
...
@@ -19,7 +19,6 @@ go_library(
"//pkg/api/service:go_default_library",
"//pkg/apis/core:go_default_library",
"//pkg/apis/core/helper:go_default_library",
"//pkg/features:go_default_library",
"//pkg/proxy:go_default_library",
"//pkg/proxy/healthcheck:go_default_library",
"//pkg/util/async:go_default_library",
...
...
@@ -29,7 +28,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library",
"//vendor/k8s.io/client-go/tools/record:go_default_library",
],
"//conditions:default": [],
...
...
pkg/proxy/winkernel/proxier.go
View file @
9ab98d9f
...
...
@@ -35,12 +35,10 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/wait"
utilfeature
"k8s.io/apiserver/pkg/util/feature"
"k8s.io/client-go/tools/record"
apiservice
"k8s.io/kubernetes/pkg/api/service"
api
"k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/proxy"
"k8s.io/kubernetes/pkg/proxy/healthcheck"
"k8s.io/kubernetes/pkg/util/async"
...
...
@@ -160,8 +158,7 @@ func (ep *endpointsInfo) Cleanup() {
// returns a new serviceInfo struct
func
newServiceInfo
(
svcPortName
proxy
.
ServicePortName
,
port
*
api
.
ServicePort
,
service
*
api
.
Service
)
*
serviceInfo
{
onlyNodeLocalEndpoints
:=
false
if
utilfeature
.
DefaultFeatureGate
.
Enabled
(
features
.
ExternalTrafficLocalOnly
)
&&
apiservice
.
RequestsOnlyLocalTraffic
(
service
)
{
if
apiservice
.
RequestsOnlyLocalTraffic
(
service
)
{
onlyNodeLocalEndpoints
=
true
}
...
...
@@ -825,10 +822,6 @@ func (proxier *Proxier) updateEndpointsMap() (result updateEndpointMapResult) {
changes
.
items
=
make
(
map
[
types
.
NamespacedName
]
*
endpointsChange
)
}()
if
!
utilfeature
.
DefaultFeatureGate
.
Enabled
(
features
.
ExternalTrafficLocalOnly
)
{
return
}
// TODO: If this will appear to be computationally expensive, consider
// computing this incrementally similarly to endpointsMap.
result
.
hcEndpoints
=
make
(
map
[
types
.
NamespacedName
]
int
)
...
...
pkg/registry/core/service/BUILD
View file @
9ab98d9f
...
...
@@ -23,7 +23,6 @@ go_library(
"//pkg/apis/core/helper:go_default_library",
"//pkg/apis/core/validation:go_default_library",
"//pkg/capabilities:go_default_library",
"//pkg/features:go_default_library",
"//pkg/registry/core/endpoint:go_default_library",
"//pkg/registry/core/service/ipallocator:go_default_library",
"//pkg/registry/core/service/portallocator:go_default_library",
...
...
@@ -40,7 +39,6 @@ go_library(
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
"//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library",
"//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library",
"//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library",
],
)
...
...
@@ -56,7 +54,6 @@ go_test(
"//pkg/api/service:go_default_library",
"//pkg/apis/core:go_default_library",
"//pkg/apis/core/helper:go_default_library",
"//pkg/features:go_default_library",
"//pkg/registry/core/service/ipallocator:go_default_library",
"//pkg/registry/core/service/portallocator:go_default_library",
"//pkg/registry/registrytest:go_default_library",
...
...
@@ -69,7 +66,6 @@ go_test(
"//vendor/k8s.io/apimachinery/pkg/util/rand:go_default_library",
"//vendor/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
"//vendor/k8s.io/apiserver/pkg/registry/rest:go_default_library",
"//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library",
],
)
...
...
pkg/registry/core/service/rest.go
View file @
9ab98d9f
...
...
@@ -35,12 +35,10 @@ import (
"k8s.io/apimachinery/pkg/watch"
genericapirequest
"k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
utilfeature
"k8s.io/apiserver/pkg/util/feature"
apiservice
"k8s.io/kubernetes/pkg/api/service"
api
"k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/pkg/apis/core/validation"
"k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/registry/core/endpoint"
"k8s.io/kubernetes/pkg/registry/core/service/ipallocator"
"k8s.io/kubernetes/pkg/registry/core/service/portallocator"
...
...
@@ -131,17 +129,15 @@ func (rs *REST) Create(ctx genericapirequest.Context, obj runtime.Object, create
}
}
// Handle ExternalTraiffc related fields during service creation.
if
utilfeature
.
DefaultFeatureGate
.
Enabled
(
features
.
ExternalTrafficLocalOnly
)
{
if
apiservice
.
NeedsHealthCheck
(
service
)
{
if
err
:=
rs
.
allocateHealthCheckNodePort
(
service
,
nodePortOp
);
err
!=
nil
{
return
nil
,
errors
.
NewInternalError
(
err
)
}
}
if
errs
:=
validation
.
ValidateServiceExternalTrafficFieldsCombination
(
service
);
len
(
errs
)
>
0
{
return
nil
,
errors
.
NewInvalid
(
api
.
Kind
(
"Service"
),
service
.
Name
,
errs
)
// Handle ExternalTraffic related fields during service creation.
if
apiservice
.
NeedsHealthCheck
(
service
)
{
if
err
:=
rs
.
allocateHealthCheckNodePort
(
service
,
nodePortOp
);
err
!=
nil
{
return
nil
,
errors
.
NewInternalError
(
err
)
}
}
if
errs
:=
validation
.
ValidateServiceExternalTrafficFieldsCombination
(
service
);
len
(
errs
)
>
0
{
return
nil
,
errors
.
NewInvalid
(
api
.
Kind
(
"Service"
),
service
.
Name
,
errs
)
}
out
,
err
:=
rs
.
registry
.
CreateService
(
ctx
,
service
,
createValidation
)
if
err
!=
nil
{
...
...
@@ -191,8 +187,7 @@ func (rs *REST) Delete(ctx genericapirequest.Context, id string) (runtime.Object
}
}
if
utilfeature
.
DefaultFeatureGate
.
Enabled
(
features
.
ExternalTrafficLocalOnly
)
&&
apiservice
.
NeedsHealthCheck
(
service
)
{
if
apiservice
.
NeedsHealthCheck
(
service
)
{
nodePort
:=
service
.
Spec
.
HealthCheckNodePort
if
nodePort
>
0
{
err
:=
rs
.
serviceNodePorts
.
Release
(
int
(
nodePort
))
...
...
@@ -358,16 +353,14 @@ func (rs *REST) Update(ctx genericapirequest.Context, name string, objInfo rest.
service
.
Status
.
LoadBalancer
=
api
.
LoadBalancerStatus
{}
}
// Handle ExternalTraiffc related updates.
if
utilfeature
.
DefaultFeatureGate
.
Enabled
(
features
.
ExternalTrafficLocalOnly
)
{
success
,
err
:=
rs
.
healthCheckNodePortUpdate
(
oldService
,
service
,
nodePortOp
)
if
!
success
||
err
!=
nil
{
return
nil
,
false
,
err
}
externalTrafficPolicyUpdate
(
oldService
,
service
)
if
errs
:=
validation
.
ValidateServiceExternalTrafficFieldsCombination
(
service
);
len
(
errs
)
>
0
{
return
nil
,
false
,
errors
.
NewInvalid
(
api
.
Kind
(
"Service"
),
service
.
Name
,
errs
)
}
// Handle ExternalTraffic related updates.
success
,
err
:=
rs
.
healthCheckNodePortUpdate
(
oldService
,
service
,
nodePortOp
)
if
!
success
||
err
!=
nil
{
return
nil
,
false
,
err
}
externalTrafficPolicyUpdate
(
oldService
,
service
)
if
errs
:=
validation
.
ValidateServiceExternalTrafficFieldsCombination
(
service
);
len
(
errs
)
>
0
{
return
nil
,
false
,
errors
.
NewInvalid
(
api
.
Kind
(
"Service"
),
service
.
Name
,
errs
)
}
out
,
err
:=
rs
.
registry
.
UpdateService
(
ctx
,
service
,
createValidation
,
updateValidation
)
...
...
pkg/registry/core/service/rest_test.go
View file @
9ab98d9f
...
...
@@ -31,20 +31,14 @@ import (
"k8s.io/apimachinery/pkg/util/rand"
genericapirequest
"k8s.io/apiserver/pkg/endpoints/request"
"k8s.io/apiserver/pkg/registry/rest"
utilfeature
"k8s.io/apiserver/pkg/util/feature"
"k8s.io/kubernetes/pkg/api/service"
api
"k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/core/helper"
"k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/registry/core/service/ipallocator"
"k8s.io/kubernetes/pkg/registry/core/service/portallocator"
"k8s.io/kubernetes/pkg/registry/registrytest"
)
func
init
()
{
utilfeature
.
DefaultFeatureGate
.
Set
(
string
(
features
.
ExternalTrafficLocalOnly
)
+
"=true"
)
}
// TODO(wojtek-t): Cleanup this file.
// It is now testing mostly the same things as other resources but
// in a completely different way. We should unify it.
...
...
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