Comments (7)
It will be part of the release 0.1.5
from gameserver-ingress-controller.
That is a very good question. We have to break down the answers:
- Scalability:
The controller has already a high QPS that will allow way more requests to the K8S API than usual. I am following the same approach as applications like Prometheus while communicating with K8S API. Though, I didn't have the chance to test the ingress controller with a huge Fleet of GS. Unfortunately, I don't have the cloud resources available. What I can say is that I would not expect issues in terms of scalability due to the nature of this application. The reconcile process is pretty simple and it is only creating a couple of resources. Not much business logic involved or external calls to DBs, APIs or external services. That said, I have a few tricks under my sleeve to improve a bit the Reconcile process. That means, splitting the OnAdd and OnUpdate into 2 different queues/channels and having 2 types of workers dealing with messages. Additionally, as an example of another application following similar pattern is Agones itself. There is only one single controller available and expecting that K8S will guarantee that this replica is always up and running.
Changing the Deployment manifest of the gameserver ingress controller and increasing the Replicas > 1 will not make much difference. Instead, it will put extra load on the API. That is because each controller has its own internal cache/watcher subscription.
- Redundancy:
It is on my roadmap to implement lead election which will allow more than one controller running at the same time but only one will be handling events OnAdd OnUpdate. However, I would need to justify this effort with something that shows me that the time to elect a new leader is lower than a controller pod being scheduled again in case of a crash.
I hope that all makes sense and let me know if you need any other information.
Feel free to close the issue if that answer your question.
from gameserver-ingress-controller.
It makes perfect sense. I've been hacking on this code base for a while. I am quite familiar with it as a result.
Appreciate the thoughts. Happy Turkey Day!
from gameserver-ingress-controller.
If we want to rely on the service being online and have k8s replace it if its down, should we consider a very effective health check?
from gameserver-ingress-controller.
Great suggestion. I can add the health checks.
from gameserver-ingress-controller.
I have implemented LeaderElection. I'll test it next week in my cloud environment next week. Minikube is working nicely. Pretty straight forward really. My complications were getting RBAC just right for my rather complicated CICD pipeline.
from gameserver-ingress-controller.
Cool, I can also give it a try this weekend using the built in support from Controller Runtime.
from gameserver-ingress-controller.
Related Issues (18)
- Support for specific secretName HOT 1
- Add Prometheus instrumentation to Reconcile
- "Path" routing mode changes the relative path of requests HOT 2
- Octops causes ingress controller to constantly reload which causes dropped websocket connections HOT 7
- Unit Tests? HOT 1
- Contour Ingress does not rewrite path in Path mode HOT 2
- Template access to service objects
- Dont require octops.io/issuer-tls-name annotation if octops.io/secret-name is present HOT 7
- Getting some error logs about event permissions HOT 7
- Support multiple hosts HOT 8
- Support option to terminate TLS at the gameserver (complete TLS passthrough) HOT 1
- arm64 support? HOT 3
- websocket-routes annotation template not evaluated when generating Ingress HOT 2
- Ingress created by the controller is unreachable HOT 10
- tls-secret-name requires terminate-tls=true, which makes the cert-issuer override that certificate in kubernetes HOT 7
- Path based ingress->gameserver rules HOT 3
- Pass custom labels and/or annotations upon creation to gameserver-ingress-controller managed ingresses HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gameserver-ingress-controller.