Skip to content

Commit

Permalink
add gateway public service controller
Browse files Browse the repository at this point in the history
  • Loading branch information
珩轩 committed Aug 31, 2023
1 parent 8b94570 commit 84b04af
Show file tree
Hide file tree
Showing 8 changed files with 1,122 additions and 14 deletions.
2 changes: 2 additions & 0 deletions pkg/yurtmanager/controller/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import (
"github.com/openyurtio/openyurt/pkg/yurtmanager/controller/raven/dns"
"github.com/openyurtio/openyurt/pkg/yurtmanager/controller/raven/gatewayinternalservice"
"github.com/openyurtio/openyurt/pkg/yurtmanager/controller/raven/gatewaypickup"
"github.com/openyurtio/openyurt/pkg/yurtmanager/controller/raven/gatewaypublicservice"
"github.com/openyurtio/openyurt/pkg/yurtmanager/controller/servicetopology"
servicetopologyendpoints "github.com/openyurtio/openyurt/pkg/yurtmanager/controller/servicetopology/endpoints"
servicetopologyendpointslice "github.com/openyurtio/openyurt/pkg/yurtmanager/controller/servicetopology/endpointslice"
Expand Down Expand Up @@ -68,6 +69,7 @@ func init() {
controllerAddFuncs[raven.GatewayPickupControllerName] = []AddControllerFn{gatewaypickup.Add}
controllerAddFuncs[raven.GatewayDNSControllerName] = []AddControllerFn{dns.Add}
controllerAddFuncs[raven.GatewayInternalServiceController] = []AddControllerFn{gatewayinternalservice.Add}
controllerAddFuncs[raven.GatewayPublicServiceController] = []AddControllerFn{gatewaypublicservice.Add}
}

// If you want to add additional RBAC, enter it here !!! @kadisi
Expand Down
1 change: 1 addition & 0 deletions pkg/yurtmanager/controller/raven/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,6 @@ const (
ControllerName = "gateway"
GatewayPickupControllerName = "raven-gateway-pickup"
GatewayInternalServiceController = "raven-gateway-internal-service"
GatewayPublicServiceController = "raven-gateway-public-service"
GatewayDNSControllerName = "raven-dns"
)
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,18 @@ import (

type EnqueueRequestForGatewayEvent struct{}

func logGatewayError() {
klog.Error(Format("fail to assert runtime Object to v1beta1.Gateway"))

Check warning on line 34 in pkg/yurtmanager/controller/raven/gatewayinternalservice/gateway_internal_service_enqueue_handlers.go

View check run for this annotation

Codecov / codecov/patch

pkg/yurtmanager/controller/raven/gatewayinternalservice/gateway_internal_service_enqueue_handlers.go#L33-L34

Added lines #L33 - L34 were not covered by tests
}

func logConfigmapError() {
klog.Error(Format("fail to assert runtime Object to v1.Configmap"))

Check warning on line 38 in pkg/yurtmanager/controller/raven/gatewayinternalservice/gateway_internal_service_enqueue_handlers.go

View check run for this annotation

Codecov / codecov/patch

pkg/yurtmanager/controller/raven/gatewayinternalservice/gateway_internal_service_enqueue_handlers.go#L37-L38

Added lines #L37 - L38 were not covered by tests
}

func (h *EnqueueRequestForGatewayEvent) Create(e event.CreateEvent, q workqueue.RateLimitingInterface) {
gw, ok := e.Object.(*ravenv1beta1.Gateway)
if !ok {
klog.Error(Format("fail to assert runtime Object to v1alpha1.Gateway"))
logGatewayError()

Check warning on line 44 in pkg/yurtmanager/controller/raven/gatewayinternalservice/gateway_internal_service_enqueue_handlers.go

View check run for this annotation

Codecov / codecov/patch

pkg/yurtmanager/controller/raven/gatewayinternalservice/gateway_internal_service_enqueue_handlers.go#L44

Added line #L44 was not covered by tests
return
}
if gw.Spec.ExposeType == "" {
Expand All @@ -46,12 +54,12 @@ func (h *EnqueueRequestForGatewayEvent) Create(e event.CreateEvent, q workqueue.
func (h *EnqueueRequestForGatewayEvent) Update(e event.UpdateEvent, q workqueue.RateLimitingInterface) {
newGw, ok := e.ObjectNew.(*ravenv1beta1.Gateway)
if !ok {
klog.Error(Format("fail to assert runtime Object to v1alpha1.Gateway"))
logGatewayError()

Check warning on line 57 in pkg/yurtmanager/controller/raven/gatewayinternalservice/gateway_internal_service_enqueue_handlers.go

View check run for this annotation

Codecov / codecov/patch

pkg/yurtmanager/controller/raven/gatewayinternalservice/gateway_internal_service_enqueue_handlers.go#L57

Added line #L57 was not covered by tests
return
}
oldGw, ok := e.ObjectOld.(*ravenv1beta1.Gateway)
if !ok {
klog.Error(Format("fail to assert runtime Object to v1alpha1.Gateway"))
logGatewayError()

Check warning on line 62 in pkg/yurtmanager/controller/raven/gatewayinternalservice/gateway_internal_service_enqueue_handlers.go

View check run for this annotation

Codecov / codecov/patch

pkg/yurtmanager/controller/raven/gatewayinternalservice/gateway_internal_service_enqueue_handlers.go#L62

Added line #L62 was not covered by tests
return
}
if oldGw.Spec.ExposeType == "" && newGw.Spec.ExposeType == "" {
Expand All @@ -64,7 +72,7 @@ func (h *EnqueueRequestForGatewayEvent) Update(e event.UpdateEvent, q workqueue.
func (h *EnqueueRequestForGatewayEvent) Delete(e event.DeleteEvent, q workqueue.RateLimitingInterface) {
gw, ok := e.Object.(*ravenv1beta1.Gateway)
if !ok {
klog.Error(Format("fail to assert runtime Object to v1alpha1.Gateway"))
logGatewayError()

Check warning on line 75 in pkg/yurtmanager/controller/raven/gatewayinternalservice/gateway_internal_service_enqueue_handlers.go

View check run for this annotation

Codecov / codecov/patch

pkg/yurtmanager/controller/raven/gatewayinternalservice/gateway_internal_service_enqueue_handlers.go#L75

Added line #L75 was not covered by tests
return
}
if gw.Spec.ExposeType == "" {
Expand All @@ -83,7 +91,7 @@ type EnqueueRequestForConfigEvent struct{}
func (h *EnqueueRequestForConfigEvent) Create(e event.CreateEvent, q workqueue.RateLimitingInterface) {
cm, ok := e.Object.(*corev1.ConfigMap)
if !ok {
klog.Error(Format("fail to assert runtime Object to corev1.Configmap"))
logConfigmapError()

Check warning on line 94 in pkg/yurtmanager/controller/raven/gatewayinternalservice/gateway_internal_service_enqueue_handlers.go

View check run for this annotation

Codecov / codecov/patch

pkg/yurtmanager/controller/raven/gatewayinternalservice/gateway_internal_service_enqueue_handlers.go#L94

Added line #L94 was not covered by tests
return
}
if cm.Data == nil {
Expand All @@ -108,12 +116,12 @@ func (h *EnqueueRequestForConfigEvent) Create(e event.CreateEvent, q workqueue.R
func (h *EnqueueRequestForConfigEvent) Update(e event.UpdateEvent, q workqueue.RateLimitingInterface) {
newCm, ok := e.ObjectNew.(*corev1.ConfigMap)
if !ok {
klog.Error(Format("fail to assert runtime Object to corev1.Configmap"))
logConfigmapError()

Check warning on line 119 in pkg/yurtmanager/controller/raven/gatewayinternalservice/gateway_internal_service_enqueue_handlers.go

View check run for this annotation

Codecov / codecov/patch

pkg/yurtmanager/controller/raven/gatewayinternalservice/gateway_internal_service_enqueue_handlers.go#L119

Added line #L119 was not covered by tests
return
}
oldCm, ok := e.ObjectOld.(*corev1.ConfigMap)
if !ok {
klog.Error(Format("fail to assert runtime Object to corev1.Configmap"))
logConfigmapError()

Check warning on line 124 in pkg/yurtmanager/controller/raven/gatewayinternalservice/gateway_internal_service_enqueue_handlers.go

View check run for this annotation

Codecov / codecov/patch

pkg/yurtmanager/controller/raven/gatewayinternalservice/gateway_internal_service_enqueue_handlers.go#L124

Added line #L124 was not covered by tests
return
}
_, newInsecurePort, newErr := net.SplitHostPort(newCm.Data[utils.ProxyServerInsecurePortKey])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (
"fmt"
"reflect"
"sort"
"strconv"
"strings"
"time"

Expand Down Expand Up @@ -180,6 +181,7 @@ func (r *ReconcileGateway) Reconcile(ctx context.Context, req reconcile.Request)
activeEp := r.electActiveEndpoint(nodeList, &gw)
r.recordEndpointEvent(&gw, gw.Status.ActiveEndpoints, activeEp)
gw.Status.ActiveEndpoints = activeEp
r.configEndpoints(ctx, &gw)

Check warning on line 184 in pkg/yurtmanager/controller/raven/gatewaypickup/gateway_pickup_controller.go

View check run for this annotation

Codecov / codecov/patch

pkg/yurtmanager/controller/raven/gatewaypickup/gateway_pickup_controller.go#L184

Added line #L184 was not covered by tests
// 2. get nodeInfo list of nodes managed by the Gateway
var nodes []ravenv1beta1.NodeInfo
for _, v := range nodeList.Items {
Expand Down Expand Up @@ -363,3 +365,20 @@ func getActiveEndpointsInfo(eps []*ravenv1beta1.Endpoint) (map[string][]string,
}
return infos, len(infos[ActiveEndpointsName])
}

func (r *ReconcileGateway) configEndpoints(ctx context.Context, gw *ravenv1beta1.Gateway) {
enableProxy, enableTunnel := utils.CheckServer(ctx, r.Client)
for idx, val := range gw.Status.ActiveEndpoints {
if gw.Status.ActiveEndpoints[idx].Config == nil {
gw.Status.ActiveEndpoints[idx].Config = make(map[string]string)
}
switch val.Type {
case ravenv1beta1.Proxy:
gw.Status.ActiveEndpoints[idx].Config[utils.RavenEnableProxy] = strconv.FormatBool(enableProxy)
case ravenv1beta1.Tunnel:
gw.Status.ActiveEndpoints[idx].Config[utils.RavenEnableTunnel] = strconv.FormatBool(enableTunnel)
default:

Check warning on line 380 in pkg/yurtmanager/controller/raven/gatewaypickup/gateway_pickup_controller.go

View check run for this annotation

Codecov / codecov/patch

pkg/yurtmanager/controller/raven/gatewaypickup/gateway_pickup_controller.go#L369-L380

Added lines #L369 - L380 were not covered by tests
}
}
return

Check warning on line 383 in pkg/yurtmanager/controller/raven/gatewaypickup/gateway_pickup_controller.go

View check run for this annotation

Codecov / codecov/patch

pkg/yurtmanager/controller/raven/gatewaypickup/gateway_pickup_controller.go#L383

Added line #L383 was not covered by tests
}
Loading

0 comments on commit 84b04af

Please sign in to comment.