Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Documented assumed prerequisite knowledge for the project #1759

Closed
markmandel opened this issue Aug 18, 2020 · 10 comments · Fixed by #1821
Closed

Documented assumed prerequisite knowledge for the project #1759

markmandel opened this issue Aug 18, 2020 · 10 comments · Fixed by #1821
Labels
kind/documentation Documentation for Agones kind/feature New features for Agones
Milestone

Comments

@markmandel
Copy link
Member

Is your feature request related to a problem? Please describe.

Be clear and concise on what prerequisite knowledge is required / highly useful when learning Agones

We currently have the This all sounds great, but can you explain Docker and/or Kubernetes to me? section, but it neither says (a) that this is required knowledge, and (b) how deep is required in either areas.

Describe the solution you'd like

A section in the documentation before "Overview" entitled "Prerequisite Knowledge" (or similar), that lists requisite assumed knowledge of the project, with links pointing to resources to learning these aspects.

This should include:

  • Docker
    • Containers as a concept
    • Running Docker containers
    • Building your own container
    • Registries as a concept
    • Pushing and pulling containers from a registry
  • Kubernetes
    • Kubernetes as a concept
    • Pods
    • Deployments
    • Services
    • Deploying a Deployment with a Service

(I think this covers the basic skillset, but would love to hear opinions on if anything else was required, or extremely useful)

Describe alternatives you've considered

Leave things as is - but we're seeing an increase of people coming to the project that do not have prior Kubernetes experience, so having a scalable solution (chat is not a scalable solution unfortunately) that can help onboard people would be ideal.

Additional context
N/A

@markmandel markmandel added kind/feature New features for Agones kind/documentation Documentation for Agones labels Aug 18, 2020
@markmandel
Copy link
Member Author

Also, of people have learning resources that they found super useful, please link in this issue 👍

@thoraxe
Copy link
Contributor

thoraxe commented Aug 18, 2020

This looks like it covers the minimum amount of stuff that you really would be lost without in consideration of using Agones.

In other words, if you understood these things, you are probably equipped enough to get your actual game server (not GameServer) running in a container on k8s.

At that point (my game server runs on k8s) you could come back to Agones to then try an actual GameServer (eg: adding the SDK, etc)....

?

@Bmandk
Copy link
Contributor

Bmandk commented Aug 18, 2020

Chiming in with my experience as a new user to both K8s and Agones, as requested by Mark.

I started with Docker ~4 weeks ago, K8s 2 weeks ago with the intention of learning Agones afterwards, and then Agones ~4 days after starting with K8s. This was very natural progression, as each step builds on the previous. I always spend time experimenting with things so I can truly learn them, which I felt helped a lot for me. Each transition was very smooth, both with the docs and with help on Slack. But I generally did not go back to the docs of the lower layer, as I had a good enough understanding of each.

I had experimented a lot with Docker, learning how to build, push, and run images with ports, envvars, networks. I created Dockerfiles and shell scripts that ran my software. I also used Dockerhub quite extensively.

This made the transition to Kubernetes very easy, where I then first learned to setup a cluster via gcloud, used kubectl to apply yaml, list my resources and debug them with describe and logs. The main resources I learned were pods, deployments, and services. I read through all the documentation for those.

Once I felt I thoroughly understood those, I moved onto Agones, which was quite a breeze to understand. I very quickly got a GameServer up, and then a Fleet (before running into missing features which I'm in the process of adding myself already).

So with this progression, I've had a very easy entrance into Agones within a month without knowing anything about any of the technologies beforehand. To me, this seems to be optimal, although I maybe could have used a bit less time on Docker as I was also experimenting with my app during that time. And I think your list matches my list pretty much one to one, so I support it.

@markmandel
Copy link
Member Author

@Bmandk did you use any specific resources to do that learning? Anything in particular stand out?

@Bmandk
Copy link
Contributor

Bmandk commented Aug 18, 2020

@markmandel Pretty much only the official docs, https://docs.docker.com/get-started/overview/ and https://kubernetes.io/docs/home/. If I had some specific issues, I would first look at the docs, then google, and finally go to the respective Slack if I could not find anything else.

@robinbraemer
Copy link
Contributor

robinbraemer commented Aug 19, 2020

When I was a complete beginner, I liked interactive tutorials! Actually doing and seeing how it works after reading some docs and without own k8s infra was great and quick!

We could reference those Kubernetes courses and maybe even make an interactive Agones course? :)

@domgreen
Copy link
Contributor

When I was a complete beginner, I liked interactive tutorials! Actually doing and seeing how it works after reading some docs and without own k8s infra was great and quick!

We could reference those Kubernetes courses and maybe even make an interactive Agones course? :)

KataCoda + 💯 it was really useful on the Thanos project to be able to run through a scenario with people, explaining the concepts etc.

I would add to the list that people need to know the engine they are running also eg. if you dont know unity or unreal yet you are going to have a fair bit of trouble containerising and running it in kubernetes.

Only other thing that I think often trips people up is firewall setting for the port range exposing host ports is something that I only started doing when looking at Agones (after running k8s for a number of years).

@markmandel
Copy link
Member Author

I would add to the list that people need to know the engine they are running also eg. if you dont know unity or unreal yet you are going to have a fair bit of trouble containerising and running it in kubernetes.

Oh that is a really good point. People should know about Dedicated Game Servers, and probably some kind of Engine as well (likely point at some option there as well, Unreal, Unity, Godot?)

Explaining DGS as a concept - I've never found the perfect resource, so I did a short video on it, there is also a wikipedia article that is not bad. Would love to hear if people have other resources in this area.

@eddie-knight
Copy link

eddie-knight commented Aug 19, 2020

+1 to katacoda for learning k8s-- I use this as a teaching aid in my DevSecOps class for the k8s portion and it makes my life way easier
+1 to info about containerizing unreal or unity servers-- I still have this research on my to-do list because I've never deployed a game server

Also UDP vs TCP for multiplayer was something I took a minute to wrap my head around recently. This article helped me close the knowledge gap as it touches on when to use each.

Another resource that was really helpful for me was this video where he goes through a variety of components to help portray the design of a robust system for multiplayer games.

@markmandel
Copy link
Member Author

I would add to the list that people need to know the engine they are running also eg. if you dont know unity or unreal yet you are going to have a fair bit of trouble containerising and running it in kubernetes.

From @domgreen We should add resources to the SDK sections for this.

A section in the documentation before "Overview" entitled "Prerequisite Knowledge" (or similar), that lists requisite assumed knowledge of the project, with links pointing to resources to learning these aspects.

From @roberthbailey - instead make this after Overview (ideally as a next step), so that users can go from Overview > Prerequisite Knowledge > Install, so that users can pass through as they need to (@markmandel says this makes sense)

markmandel added a commit to markmandel/agones that referenced this issue Sep 16, 2020
Guide for learning the foundational knowledge of Agones, in case our
users have some knowledge gaps they want/need to fill before digging
into Agones itself.

I expect this will be a living doc that will evolve over time.

Closes googleforgames#1759
markmandel added a commit to markmandel/agones that referenced this issue Sep 16, 2020
Guide for learning the foundational knowledge of Agones, in case our
users have some knowledge gaps they want/need to fill before digging
into Agones itself.

I expect this will be a living doc that will evolve over time.

Closes googleforgames#1759
markmandel added a commit to markmandel/agones that referenced this issue Sep 16, 2020
Guide for learning the foundational knowledge of Agones, in case our
users have some knowledge gaps they want/need to fill before digging
into Agones itself.

I expect this will be a living doc that will evolve over time.

Closes googleforgames#1759
markmandel added a commit to markmandel/agones that referenced this issue Sep 16, 2020
Guide for learning the foundational knowledge of Agones, in case our
users have some knowledge gaps they want/need to fill before digging
into Agones itself.

I expect this will be a living doc that will evolve over time.

Closes googleforgames#1759
markmandel added a commit to markmandel/agones that referenced this issue Oct 13, 2020
Guide for learning the foundational knowledge of Agones, in case our
users have some knowledge gaps they want/need to fill before digging
into Agones itself.

I expect this will be a living doc that will evolve over time.

Closes googleforgames#1759
roberthbailey pushed a commit that referenced this issue Oct 14, 2020
* Docs: Prerequisite Knowledge section

Guide for learning the foundational knowledge of Agones, in case our
users have some knowledge gaps they want/need to fill before digging
into Agones itself.

I expect this will be a living doc that will evolve over time.

Closes #1759
@markmandel markmandel added this to the 1.10.0 milestone Oct 14, 2020
ilkercelikyilmaz pushed a commit to ilkercelikyilmaz/agones that referenced this issue Oct 23, 2020
* Docs: Prerequisite Knowledge section

Guide for learning the foundational knowledge of Agones, in case our
users have some knowledge gaps they want/need to fill before digging
into Agones itself.

I expect this will be a living doc that will evolve over time.

Closes googleforgames#1759
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/documentation Documentation for Agones kind/feature New features for Agones
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants