Feature: Kubernetes: Adjust service - cockpit-project/cockpit GitHub Wiki
Adjust services running on a Kubernetes cluster.
Notes
- In Kubernetes 'Replication Controllers' actually scale pods. In the mind of the user, they are scaling the service. This feature is written from the user's point of view.
- Adjusting the name label for the service is provided as a way to 'rename' a service so it shows up with a useful name on the dashboard.
- A full label editor is out of scope.
Stories
Phillip J. Fry leads a small IT at a moderately sized firm. His company has a modest data center.
Phillip wants to run application 'Poppler.io'. In order to meet regulatory requirements he needs to run the application 'in house'. Phillip has deployed 'Poppler.io' to a a Kubernetes cluster running with spare capacity. The frontend of the application has been laggy. Instead of just one frontend, he wants three to process requests.
Hermes Conrad is the VP of engineering at a large corporation.
Hermes is exploring Kubernetes as a way to orchestrate containers. He has just setup a Kubernetes master, and wants to add further machines. Hermes has no deep knowledge of Kubernetes, but Docker was seemed easy to discover hands-on, and wants to do the same here. Hermes has deployed services to a Kubernetes cluster, and now wants to try scaling one of them up to 50 instances.
Workflows
Phillip:
- Opens the Kubernetes dashboard in Cockpit
- Sees list of Kubernetes services running on cluster
- Clicks the 'Adjust' icon button on the service
- A dialog pops up.
- In the dialog Phillip sees the various replication controller names associated with that service, and a replicas number, than can be adjusted.
- Philip types '3' in the field, and completes the dialog.
- Back in the services view, he sees the containers column reflecting the the new number of replicas and that containers are starting.
Hermes:
- Hermes has deployed 3 instances of the same application to various namespaces.
- The dashboard screen is now repetitive.
- Hermes clicks the 'Adjust' icon button on a service
- A dialog pops up.
- Hermes gives the service a new name.
- Back on the dashboard, the service is displayed with a distinct name.
Implementation Notes and Technical Limitations
- For a given service we list the replication controllers that match the service's label.
- It is expected that if a replication controller matches to services, it will show up in the dialog for both services.
- The dialog lists their current
spec.replicas
not thestatus.replicas
- The dialog provides a way to adjust the
metadata.label.name
, which should also be used for display on the dashboard. - This makes use of the common check-to-edit pattern in Cockpit. See the machines "Dashboard"
Wireframes
- The button to show the above dialog is here: https://raw.githubusercontent.com/cockpit-project/cockpit-design/master/kubernetes/dashboard.png
- https://github.com/cockpit-project/cockpit-design/tree/master/kubernetes
Prior art
...
Feedback
Please give feedback on the above! This is the place where those not working on the feature can provide insight, questions, limitations, notes etc.
- What is the a realistic maximum number of replicas we should limit users to. Obviously millions is broken ... so there is an upper limit. What should it be? We can be simple and arbitrary for now. (Stef)
- Andreas pointed out that the 'Adjust Service' dialog should feel complete. Adding the editable Name label provides that. (Andreas, Stef)
- We don't need a full label editor for service yet (later feature), just providing a field to edit the service 'name' label puts the dialog in the correct context. (Stef)
- ... (sign name)