Skip to content

Commit c86da8e

Browse files
authored
Merge pull request kubernetes#82048 from cheftako/kas-np4
Add support for konnectivity service to the etcd3 client.
2 parents fe770ad + edbb0fa commit c86da8e

File tree

13 files changed

+69
-25
lines changed

13 files changed

+69
-25
lines changed

cmd/kube-apiserver/app/server.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,9 @@ func buildGenericConfig(
443443
if lastErr != nil {
444444
return
445445
}
446+
if genericConfig.EgressSelector != nil {
447+
storageFactory.StorageConfig.Transport.EgressLookup = genericConfig.EgressSelector.Lookup
448+
}
446449
if lastErr = s.Etcd.ApplyWithStorageFactoryTo(storageFactory, genericConfig); lastErr != nil {
447450
return
448451
}

pkg/kubelet/client/BUILD

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ go_library(
1616
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
1717
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
1818
"//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library",
19-
"//staging/src/k8s.io/apiserver/pkg/server:go_default_library",
19+
"//staging/src/k8s.io/apiserver/pkg/server/egressselector:go_default_library",
2020
"//staging/src/k8s.io/client-go/rest:go_default_library",
2121
"//staging/src/k8s.io/client-go/transport:go_default_library",
2222
],

pkg/kubelet/client/kubelet_client.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import (
2727
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2828
"k8s.io/apimachinery/pkg/types"
2929
utilnet "k8s.io/apimachinery/pkg/util/net"
30-
"k8s.io/apiserver/pkg/server"
30+
"k8s.io/apiserver/pkg/server/egressselector"
3131
restclient "k8s.io/client-go/rest"
3232
"k8s.io/client-go/transport"
3333
nodeutil "k8s.io/kubernetes/pkg/util/node"
@@ -60,7 +60,7 @@ type KubeletClientConfig struct {
6060
Dial utilnet.DialFunc
6161

6262
// Lookup will give us a dialer if the egress selector is configured for it
63-
Lookup server.EgressSelectorLookup
63+
Lookup egressselector.Lookup
6464
}
6565

6666
// ConnectionInfo provides the information needed to connect to a kubelet
@@ -88,7 +88,7 @@ func MakeTransport(config *KubeletClientConfig) (http.RoundTripper, error) {
8888
if dialer == nil && config.Lookup != nil {
8989
// Assuming EgressSelector if SSHTunnel is not turned on.
9090
// We will not get a dialer if egress selector is disabled.
91-
networkContext := server.NetworkContext{EgressSelectionName: server.Cluster}
91+
networkContext := egressselector.Cluster.AsNetworkContext()
9292
dialer, err = config.Lookup(networkContext)
9393
if err != nil {
9494
return nil, fmt.Errorf("failed to get context dialer for 'cluster': got %v", err)

staging/src/k8s.io/apiserver/pkg/server/BUILD

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ go_test(
1111
srcs = [
1212
"config_selfclient_test.go",
1313
"config_test.go",
14-
"egress_selector_test.go",
1514
"genericapiserver_test.go",
1615
"healthz_test.go",
1716
],
@@ -23,11 +22,9 @@ go_test(
2322
"//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
2423
"//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library",
2524
"//staging/src/k8s.io/apimachinery/pkg/util/json:go_default_library",
26-
"//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library",
2725
"//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
2826
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
2927
"//staging/src/k8s.io/apimachinery/pkg/version:go_default_library",
30-
"//staging/src/k8s.io/apiserver/pkg/apis/apiserver:go_default_library",
3128
"//staging/src/k8s.io/apiserver/pkg/apis/example:go_default_library",
3229
"//staging/src/k8s.io/apiserver/pkg/apis/example/v1:go_default_library",
3330
"//staging/src/k8s.io/apiserver/pkg/authorization/authorizer:go_default_library",
@@ -53,7 +50,6 @@ go_library(
5350
"config_selfclient.go",
5451
"deprecated_insecure_serving.go",
5552
"doc.go",
56-
"egress_selector.go",
5753
"genericapiserver.go",
5854
"handler.go",
5955
"healthz.go",
@@ -75,7 +71,6 @@ go_library(
7571
"//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
7672
"//staging/src/k8s.io/apimachinery/pkg/util/clock:go_default_library",
7773
"//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library",
78-
"//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library",
7974
"//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
8075
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
8176
"//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library",
@@ -85,7 +80,6 @@ go_library(
8580
"//staging/src/k8s.io/apiserver/pkg/admission/plugin/namespace/lifecycle:go_default_library",
8681
"//staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/mutating:go_default_library",
8782
"//staging/src/k8s.io/apiserver/pkg/admission/plugin/webhook/validating:go_default_library",
88-
"//staging/src/k8s.io/apiserver/pkg/apis/apiserver:go_default_library",
8983
"//staging/src/k8s.io/apiserver/pkg/apis/apiserver/install:go_default_library",
9084
"//staging/src/k8s.io/apiserver/pkg/audit:go_default_library",
9185
"//staging/src/k8s.io/apiserver/pkg/audit/policy:go_default_library",
@@ -104,6 +98,7 @@ go_library(
10498
"//staging/src/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
10599
"//staging/src/k8s.io/apiserver/pkg/registry/generic:go_default_library",
106100
"//staging/src/k8s.io/apiserver/pkg/registry/rest:go_default_library",
101+
"//staging/src/k8s.io/apiserver/pkg/server/egressselector:go_default_library",
107102
"//staging/src/k8s.io/apiserver/pkg/server/filters:go_default_library",
108103
"//staging/src/k8s.io/apiserver/pkg/server/healthz:go_default_library",
109104
"//staging/src/k8s.io/apiserver/pkg/server/mux:go_default_library",

staging/src/k8s.io/apiserver/pkg/server/config.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ import (
5555
apiopenapi "k8s.io/apiserver/pkg/endpoints/openapi"
5656
apirequest "k8s.io/apiserver/pkg/endpoints/request"
5757
genericregistry "k8s.io/apiserver/pkg/registry/generic"
58+
"k8s.io/apiserver/pkg/server/egressselector"
5859
genericfilters "k8s.io/apiserver/pkg/server/filters"
5960
"k8s.io/apiserver/pkg/server/healthz"
6061
"k8s.io/apiserver/pkg/server/routes"
@@ -97,7 +98,7 @@ type Config struct {
9798

9899
// EgressSelector provides a lookup mechanism for dialing outbound connections.
99100
// It does so based on a EgressSelectorConfiguration which was read at startup.
100-
EgressSelector *EgressSelector
101+
EgressSelector *egressselector.EgressSelector
101102

102103
// RuleResolver is required to get the list of rules that apply to a given user
103104
// in a given namespace

staging/src/k8s.io/apiserver/pkg/server/egressselector/BUILD

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,21 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
22

33
go_library(
44
name = "go_default_library",
5-
srcs = ["config.go"],
5+
srcs = [
6+
"config.go",
7+
"egress_selector.go",
8+
],
69
importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/server/egressselector",
710
importpath = "k8s.io/apiserver/pkg/server/egressselector",
811
visibility = ["//visibility:public"],
912
deps = [
1013
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
14+
"//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library",
1115
"//staging/src/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
1216
"//staging/src/k8s.io/apiserver/pkg/apis/apiserver:go_default_library",
1317
"//staging/src/k8s.io/apiserver/pkg/apis/apiserver/install:go_default_library",
1418
"//staging/src/k8s.io/apiserver/pkg/apis/apiserver/v1alpha1:go_default_library",
19+
"//vendor/k8s.io/klog:go_default_library",
1520
"//vendor/k8s.io/utils/path:go_default_library",
1621
"//vendor/sigs.k8s.io/yaml:go_default_library",
1722
],
@@ -33,10 +38,14 @@ filegroup(
3338

3439
go_test(
3540
name = "go_default_test",
36-
srcs = ["config_test.go"],
41+
srcs = [
42+
"config_test.go",
43+
"egress_selector_test.go",
44+
],
3745
embed = [":go_default_library"],
3846
deps = [
3947
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
48+
"//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library",
4049
"//staging/src/k8s.io/apiserver/pkg/apis/apiserver:go_default_library",
4150
],
4251
)

staging/src/k8s.io/apiserver/pkg/server/egress_selector.go renamed to staging/src/k8s.io/apiserver/pkg/server/egressselector/egress_selector.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
package server
17+
package egressselector
1818

1919
import (
2020
"bufio"
@@ -34,6 +34,7 @@ import (
3434

3535
var directDialer utilnet.DialFunc = http.DefaultTransport.(*http.Transport).DialContext
3636

37+
// EgressSelector is the map of network context type to context dialer, for network egress.
3738
type EgressSelector struct {
3839
egressToDialer map[EgressType]utilnet.DialFunc
3940
}
@@ -59,9 +60,10 @@ type NetworkContext struct {
5960
EgressSelectionName EgressType
6061
}
6162

62-
// EgressSelectorLookup is the interface to get the dialer function for the network context.
63-
type EgressSelectorLookup func(networkContext NetworkContext) (utilnet.DialFunc, error)
63+
// Lookup is the interface to get the dialer function for the network context.
64+
type Lookup func(networkContext NetworkContext) (utilnet.DialFunc, error)
6465

66+
// String returns the canonical string representation of the egress type
6567
func (s EgressType) String() string {
6668
switch s {
6769
case Master:
@@ -75,6 +77,11 @@ func (s EgressType) String() string {
7577
}
7678
}
7779

80+
// AsNetworkContext is a helper function to make it easy to get the basic NetworkContext objects.
81+
func (s EgressType) AsNetworkContext() NetworkContext {
82+
return NetworkContext{EgressSelectionName: s}
83+
}
84+
7885
func lookupServiceName(name string) (EgressType, error) {
7986
switch strings.ToLower(name) {
8087
case "master":

staging/src/k8s.io/apiserver/pkg/server/egress_selector_test.go renamed to staging/src/k8s.io/apiserver/pkg/server/egressselector/egress_selector_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
package server
17+
package egressselector
1818

1919
import (
2020
"context"

staging/src/k8s.io/apiserver/pkg/server/options/egress_selector.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func (o *EgressSelectorOptions) ApplyTo(c *server.Config) error {
6868
return fmt.Errorf("failed to validate egress selector configuration: %v", errs.ToAggregate())
6969
}
7070

71-
cs, err := server.NewEgressSelector(npConfig)
71+
cs, err := egressselector.NewEgressSelector(npConfig)
7272
if err != nil {
7373
return fmt.Errorf("failed to setup egress selector with config %#v: %v", npConfig, err)
7474
}

staging/src/k8s.io/apiserver/pkg/storage/storagebackend/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ go_library(
1212
importpath = "k8s.io/apiserver/pkg/storage/storagebackend",
1313
deps = [
1414
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
15+
"//staging/src/k8s.io/apiserver/pkg/server/egressselector:go_default_library",
1516
"//staging/src/k8s.io/apiserver/pkg/storage/value:go_default_library",
1617
],
1718
)

0 commit comments

Comments
 (0)