Closed XiShanYongYe-Chang closed 10 months ago
/assign @kevin-wangzefeng
I think it is better to keep the repo name as kubernetes and not change it to fleet-apiserver. The forked repo should only contain the necessary inline changes to make the kube-apiserver programmable for the fleet-apiserver development. The rest of the fleet-apiserver code should be stored in a separate place, maybe a staging repo in karmada-io/karmada or a stand-alone repo.
I think it is better to keep the repo name as kubernetes and not change it to fleet-apiserver.
Thanks, I get it. I will update the issue description.
The forked repo should only contain the necessary inline changes to make the kube-apiserver programmable for the fleet-apiserver development. The rest of the fleet-apiserver code should be stored in a separate place, maybe a staging repo in karmada-io/karmada or a stand-alone repo.
Yes, we will strive to develop and iterate according to this strategy. The plan is to first write code for the fleet-apiserver component and deploy it in the karmada-io/karmada repository.
Revised the description of the issue.
The plan is to first write code for the fleet-apiserver component and deploy it in the karmada-io/karmada repository.
I'm not quite clear on this, could you rephrase it?
I'm sorry, I didn't explain it clearly. Let me try to describe it more clearly.
We plan to first store the rest of fleet-apiserver code in the karmada-io/karmada repo and compile and deploy fleet-apiserver. If this cannot be achieved, we will consider handling this matter in a new repository.
Thanks for the clarification, the fork repo has been created at: https://github.com/karmada-io/kubernetes
Just created v1.28.4-karmada branch based on Kubernetes v1.28.4.
Thanks~ @kevin-wangzefeng @RainbowMango /close
@XiShanYongYe-Chang: Closing this issue.
Backgroud
Karmada uses
kube-apiserver
as the API access entry point, which can provide users with a smooth transition from single-cluster to multi-cluster experience. However, there are still some confusion and inconvenience for users in the actual usage process.When users use Karmada for resource operations, operation and maintenance, or secondary development, they need to switch kubeconfig context. Different contexts correspond to different targets, such as:
For some users, switching the above context requires awareness of cluster information. For existing businesses, certain modification are needed. For developers and operation personal, learning new knowledge is required.
In order to accommodate these users with historical burdens, Karmada needs to take compatibility with Kubernetes single-cluster operation experience as a starting point and further provide smooth migration best practices from single-cluster architecture to multi-cluster architecture.
The related proposal of FleetAPIServer can refer to https://github.com/karmada-io/karmada/pull/4317
What does FleetAPIServer do?
FleetAPIServer provides two types of APIs, namely the API that is compatible with the single-cluster experience of Kubernetes and the API centered around a multi-cluster architecture. In the implementation o this solution, the goal is achieved by accessing
karmada-apiserver
and APIServer of different member clusters to build API capabilities.Repository Name
keep the repo name as kubernetes
How to create
Fork from kubernetes.
Why?
The functionality of
fleet-apiserver
is similar to that ofkube-apiserver
, providing users with REST API interfaces for access. To improve code reuse, we can directly fork the code of kube-apiserver. At this point, there are two options: the kubernetes repository and the apiserver repository.After Demo verification, we need to modify the code content in the
pkg/registry
andstaging/src/k8s.io/apiserver
folders in the kubernetes repository. Therefore, forking the apiserver repository does not meet our goal.What content will the kubernetes repo include?
The forked kubernetes repo should only contain the necessary inline changes to make the kube-apiserver programmable for the fleet-apiserver development.