A questions we often get asked is "who is responsible for what inside Kubernetes?" Whilst the answer really depends on your organizational structure and how segmented your teams are, I will describe the most common structure we see.
In general, there are four roles that span the operational responsibilities of managing Kubernetes: the Infrastructure Team (for on-premises deployments), the Cloud/Platform Team, the DevOps Team, and Developers.
The infrastructure team only exists if you are using on-premises hardware, as someone needs to manage the physical server/storage/networking equipment.
The Cloud/Platform team is responsible for the creation, upgrading, and scaling of Kubernetes / Docker Clusters. It is also responsible for triaging any performance or availability issues that arise with the platform (but not the applications). Fundamentally, it holds the internal OLA to ensure the system delivers acceptable SLAs.
The Cloud Platform team is responsible for:
Combined, the Infrastructure Team and the Cloud Platform team are commonly known as the "Ops" Team.
The DevOps team is responsible for
The Dev team is responsible for
Combined, the Devs and DevOps teams are often known as the "Development" team.
For larger organisations, there is also likely an SRE team, whose sole focus is to improve the system reliability through continuous improvements, either by recommending adjustments to deployment configurations, implementing more reliable rolling update policies, monitoring load distribution and multi-geo deployments etc. When an SRE team is in play, they are the team ultimately responsible for application performance and availability.
For smaller organisations, it's common for the Infrastructure Team, the Cloud/Platform Team, and the DevOps team to be one and the same group of people.
So, this is the most common structure we see most often in organizations today... but is it a panacea? Only time will tell. One thing is for certain though, where your organization obtains differentiated value from your digital assets (customer facing software), you must have your Devs focussed on improving software, not running the platform that the apps run on.
Thoughts?
Neil