feat(*): add tencent cloud provider and clb plugin #179
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
About me
Thanks a lot for this awesome project! I'm roc, an engineer from the Tencent Kubernetes Engine(TKE) team.
Background
TKE has tke-extend-network-controller, which supports network access for room-based games and exposes game rooms by binding game server pod to CLB(Cloud Load Balancer) listener exclusively(1 CLB listener, 1 POD ip:port).
tke-extend-network-controller
does not rely on OpenKruiseGame(OKG) or Agones, But OKG users prefer to define the game room network in the OKG way, this PR add the tencentcloud provider to OKG and add the clb plugin, which based ontke-extend-network-controller
'sDedicatedCLBListener
(Atomic capability to bind a pod ip:port to a clb's port).Why not based on LoadBalaner service ?
Others OKG lb plugins (e.g. AlibabaCloud-SLB, Volcengine-CLB) are based on LoadBalancer service, which use annotation to reuse existing LoadBalaner, and define lb port on the LoadBalancer service.
But for TKE, a lot of LoadBalancer service reuse the same LoadBalancer is not recommended and disabled by default, this is mainly because of the service-controller's reconciliation performance issues for this scenario, which may cause a long delay in the binding or unbinding operation, and it is difficult to optimize due to historical and architectural reasons. This is also why
tke-extend-network-controller
introduceDedicatedCLBListener
rather than based on LoadBalancer service to reuse clb to bind pods.How to use
This plugin is for TKE Users, User need install tke-extend-network-controller first (can be installed through TKE application marketplace), then make sure
tencentcloud
provider is enabled:And define
TencentCloud-CLB
network forGameServerSet
:You could found auto created dedicatedclblisteners:
And you can also found clb's ip:port(externalAddresses) for gameserver pod on GameServer's networkStatus:
Check more info in
user_manuals/network.md
.What's Next
networking.cloud.tencent.com
apiGroup in kruise-game chart's rbac_role.yaml after this PR is merged.