Feature: Kubernetes: Deploy application - cockpit-project/cockpit GitHub Wiki

Deploy an application to a Kubernetes cluster.

Notes

  • Once running on a cluster, there is no logical entity called "Application" in Kubernetes. However in the user's mind, they are "deploying an application".

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'. Kubernetes has become the primary mechanism with which to deploy these new containerized applications like 'Poppler.io'. Phillip already has a Kubernetes cluster running with spare capacity. Next he wants to deploy 'Poppler.io'.

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 engineering team has built several using Openshift online. Hermes wants to export one of those, and run it locally.

Workflows

Phillip:

  • Opens the Kubernetes dashboard in Cockpit
  • Sees list of Kubernetes services running on cluster
  • Clicks the 'Deploy' button to add a new node to the list.
  • Prompted for an application definition file.
  • Philip selects the file from disk.
  • Philip sees a list of the existing namespaces/projects running in the cluster, in which he could place the application.
  • Philip types a new namespace name for the application to run in.
  • He finishes the prompt.
  • He sees the new services from this application listed on the dashboard, and indications of them starting up.

Hermes:

  • Work flow as above.
  • Hermes however just uses the default listed namespace, without creating a new one.

Implementation Notes and Technical Limitations

  • Assumption, definitions for applications are available.
    • Currently this is a JSON 'Items' format containing all the services and replication controllers involved.
  • Out of scope: Browsing for applications or searching for names in a registry. Later work.
  • In kube version 12 or 13, namespaces much be created as objects, just like pods/service/rc before they can be used.

Wireframes

Design wireframes go here. Usually these live in the cockpit-design repo, and are linked here.

Prior art

Links to screenshots or documentation of other places this problem has been solved.

  • Fabric8 has something like this ...
  • Research incomplete

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.

  • Note: in kube version 12 or 13, namespaces much be created as objects, just like pods/service/rc before they can be used. (Eric Paris)
    • Thanks, added. (Stef)
  • ... (sign name)