From 675dc82bcfc28f0a8b8c8c0484e798f490a9fb22 Mon Sep 17 00:00:00 2001 From: changzhen Date: Thu, 1 Jun 2023 10:14:42 +0800 Subject: [PATCH] add proposal for multiclusterservice Signed-off-by: changzhen --- .../networking/multiclusterservice.md | 251 ++++++++++++++++++ .../networking/statics/service-discovery.png | Bin 0 -> 30375 bytes .../networking/statics/service-exposure.png | Bin 0 -> 37202 bytes 3 files changed, 251 insertions(+) create mode 100644 docs/proposals/networking/multiclusterservice.md create mode 100644 docs/proposals/networking/statics/service-discovery.png create mode 100644 docs/proposals/networking/statics/service-exposure.png diff --git a/docs/proposals/networking/multiclusterservice.md b/docs/proposals/networking/multiclusterservice.md new file mode 100644 index 000000000..00129f72d --- /dev/null +++ b/docs/proposals/networking/multiclusterservice.md @@ -0,0 +1,251 @@ +--- +title: Propose the MultiClusterService API to expose and discover multi-cluster services +authors: +- "@XiShanYongYe-Chang" +- "@GitHubxsy" +reviewers: +- "@kevin-wangzefeng" +- "@RainbowMango" +- "@chaunceyjiang" +approvers: +- "@kevin-wangzefeng" +- "@RainbowMango" + +creation-date: 2023-06-01 + +--- + +# Propose the MultiClusterService API to expose and discover multi-cluster services + +## Summary + +We have implemented the [MCS](https://karmada.io/docs/next/userguide/service/multi-cluster-service/) feature based on the [mcs-api](https://github.com/kubernetes-sigs/mcs-api) proposed by the Kubernetes community [sig-multicluster](https://github.com/kubernetes/community/tree/master/sig-multicluster) to solve the problem of service discovery between multiple clusters. However, MCS does not solve the problem of multi-cluster service exposure. The current proposal proposes a new `MultiClusterService` API for exposing multi-cluster services on OSI Layer 4. The MultiClusterService forwards external traffic to the backend of the member cluster service managed by Karmada, breaking through the boundary restriction of a single service and implementing a unified ingress of traffic from multiple clusters. + +## Motivation + +MultiClusterService allows users to easily manage services and applications in multiple Kubernetes clusters, helping users quickly and simply implement load balancing and Layer 4 network traffic routing among multi Kubernetes clusters. + +In addition, users need to create multiple resources when using the MCS feature, which is not user-friendly. It is hoped that the creation of MultiClusterService resources can unify user behavior. + +### Goals + +- Define the MultiClusterService API to support the exposure of multi-cluster services. +- Integrates the multi-cluster service discovery atomic capability implemented based on mcs-api and provides users with more abstract ant simple resource definitions through MultiClusterService API. +- Propose the shared interfaces for different cloud providers to implement the provider-specific functionality, so multi-cluster services can be integrated with the cloud provider's LB service. + +### Non-Goals + +- Implementation of the interconnection with the LoadBalancer service by a specific cloud provider. +- Provide measures for handling when the karmada control-plane goes down. + +## Proposal + +### User Stories (Optional) + +#### Story 1 + +As end users, to ensure HA and improve cluster fault tolerance, users need to deploy the same service in different clusters in multiple regions and expose the service to the LB service of the cloud provider. In this way, during access, requests can be evenly distributed to backend instances in different clusters. + +#### Story 2 + +As end users, when using the MCS feature to discovery service between clusters, they need to create multiple resources: ServiceExport, ServiceImport, PropagationPolicy, which is complex. If unified API is provided, the usage threshold is lowered. + +### Notes/Constraints/Caveats (Optional) + +When exposing multi-cluster services to cloud provider LB services, users can route request loads to the backend of multi-cluster services by accessing the LB service. The prerequisite is that the LB service and the backend network of multi-cluster services are connected. + +### Risks and Mitigations + +## Design Details + +### General Idea + +1. Provides MultiClusterService API, users can define MultiClusterService resource to expose service on the Karmada control-plane. +2. The type field in the MultiClusterService API to provide the corresponding type value so that the current atomic capabilities can be integrated and an overall **inter-clusters service discovery** solution can be provided through the MultiClusterService API. + +### MultiClusterService API + +```go +// MultiClusterService is a named abstraction of multi-cluster software service. +// The name field of MultiClusterService is the same as that of Service name. +// Services with the same name in different clusters are regarded as the same +// service and are associated with the same MultiClusterService. +// MultiClusterService can control the exposure of services to outside multiple +// clusters, and also enable service discovery between clusters. +type MultiClusterService struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + // Spec is the desired state of the MultiClusterService. + Spec MultiClusterServiceSpec `json:"spec"` + + // Status is the current state of the MultiClusterService. + // +optional + Status corev1.ServiceStatus `json:"status,omitempty"` +} + +// MultiClusterServiceSpec is the desired state of the MultiClusterService. +type MultiClusterServiceSpec struct { + // Types specifies how to expose the service referencing by this + // MultiClusterService. + // +required + Types []ExposureType `json:"types"` + + // Ports is the list of ports that are exposed by this MultiClusterService. + // No specified port will be filtered out during the service + // exposure and discovery process. + // All ports in the referencing service will be exposed by default. + // +optional + Ports []ExposurePort `json:"ports,omitempty"` + + // Range specifies the ranges where the referencing service should + // be exposed. + // Only valid and optional in case of Types contains CrossCluster. + // If not set and Types contains CrossCluster, all clusters will + // be selected, that means the referencing service will be exposed + // across all registered clusters. + // +optional + Range ExposureRange `json:"range,omitempty"` +} + +// ExposureType describes how to expose the service. +type ExposureType string + +const ( + // ExposureTypeCrossCluster means a service will be accessible across clusters. + ExposureTypeCrossCluster ExposureType = "CrossCluster" + + // ExposureTypeLoadBalancer means a service will be exposed via an external + // load balancer. + ExposureTypeLoadBalancer ExposureType = "LoadBalancer" +) + +// ExposurePort describes which port will be exposed. +type ExposurePort struct { + // Name is the name of the port that needs to be exposed within the service. + // The port name must be the same as that defined in the service. + // +optional + Name string `json:"name,omitempty"` + + // Port specifies the exposed service port. + // +optional + Port int32 `json:"port,omitempty"` +} + +// ExposureRange describes a list of clusters where the service is exposed. +// Now supports selecting cluster by name, leave the room for extend more methods +// such as using label selector. +type ExposureRange struct { + // ClusterNames is the list of clusters to be selected. + // +optional + ClusterNames []string `json:"clusterNames,omitempty"` +} +``` + +### Shared interfaces for MultiClusterService + +```go +// MCSLoadBalancer is an abstract, pluggable interface for MultiClusterService load balancers. +type MCSLoadBalancer interface { + // GetMCSLoadBalancer return whether the specified load balancer exists, and if so, what its status is. + GetMCSLoadBalancer(ctx context.Context, mcs *providernetworkingv1alpha1.MultiClusterService) (status *corev1.LoadBalancerStatus, exist bool, err error) + // EnsureMCSLoadBalancer creates a new load balancer. + EnsureMCSLoadBalancer(ctx context.Context, mcs *providernetworkingv1alpha1.MultiClusterService) (status *corev1.LoadBalancerStatus, err error) + // UpdateMCSLoadBalancer updates the specified load balancer. + UpdateMCSLoadBalancer(ctx context.Context, mcs *providernetworkingv1alpha1.MultiClusterService) (status *corev1.LoadBalancerStatus, err error) + // EnsureMCSLoadBalancerDeleted deletes the specified load balancer if it exists. + EnsureMCSLoadBalancerDeleted(ctx context.Context, mcs *providernetworkingv1alpha1.MultiClusterService) error +} +``` + +### Service exposure + +1. Create Deployments and Services and propagate them to member clusters. +2. Create the multiClusterService resource. +3. Register the pod IP address with the LB instance using multicluster-cloud-provider-xxx. +4. The user accesses the LB instance through Layer 4. + +```yaml +apiVersion: networking.karmada.io/v1alpha1 +kind: MultiClusterService +metadata: + name: foo +spec: + ports: + - port: 80 + types: + - LoadBalance +``` + +![image](statics/service-exposure.png) + +### Cross-clusters service discovery + +1. Create Deployments and Services and propagate them to member clusters. +2. Create the multiClusterService resource. +3. The controller list/watch to the multiClusterService resource, generates ServiceExport and propagate it to the source clusters, and generates ServiceImport and propagate it to the destination clusters. Then the current `MCS` function will start work. +4. Services in the destination clusters access multi-cluster services. + +```yaml +apiVersion: networking.karmada.io/v1alpha1 +kind: MultiClusterService +metadata: + name: foo +spec: + types: + - CrossCluster + range: + clusterNames: + - member2 +``` + +![image](statics/service-discovery.png) + +### More details design for MultiClusterService resource + +#### What's the behavior when updating the MultiClusterService? + +It will determine the changes of `.spec.types` value and process them based on the latest value, while cleaning up any reduced types (if there are any). + +#### What's the behavior when deleting the MultiClusterService? + +It will clean up the previous impacts. + +#### What's the behavior when the referencing service does not exist? + +MultiClusterService resource fails to be created. + +#### What's the behavior when some import cluster does not exist? + +It will generate an warning event and ignore non-exist cluster. + +#### What's the behavior when some import cluster disappears(like unregistered from Karmada)? + +Clean up the impact caused by this cluster. + +### Restriction Statement + +1. The LB instance should be able to directly access the POD network in the Karmada member clusters. + +### Implementation + +- `karmada` repo: + - Add MultiClusterService API. + - The MultiClusterService controller of the CrossCluster type is placed in karmada-controller-manager. +- `multicluster-cloud-provider` repo: + - Add shared interface for MultiClusterService and add/update related controller. + +### MultiClusterService resource validation + +- `.name`: It need to be equal with the service name. +- `.spec.ports.name`: It must be the same as that defined in the service. +- `.spec.ports.port`: It should be a reasonable port value +- `.spec.types`: It can not be empty. +- `.spec.range.clusterNames`: The cluster name must be a qualified string. + +### Test Plan + +- Added the UT to overwrite the new code. +- Add E2E coverage for the scenario where the MCS type is CrossCluster. + +## Alternatives diff --git a/docs/proposals/networking/statics/service-discovery.png b/docs/proposals/networking/statics/service-discovery.png new file mode 100644 index 0000000000000000000000000000000000000000..b059692ea8d755e6dc3ec66aa885c53e91022387 GIT binary patch literal 30375 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 B>4N|O literal 0 HcmV?d00001 diff --git a/docs/proposals/networking/statics/service-exposure.png b/docs/proposals/networking/statics/service-exposure.png new file mode 100644 index 0000000000000000000000000000000000000000..a61aa623f7f71fd011e95bb0c638cb97a9f611b6 GIT binary patch literal 37202 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 literal 0 HcmV?d00001