Frameworks are a logical definition of controls and policies. Framework policies are applied to applications created and deployed using a specific framework.

Frameworks can enforce policies across RBAC, network policies, security scanning, and more.

Frameworks can be bound to different clusters or cloud nodes and enforce different policies based on their configuration.


A cluster is a named group of Kubernetes nodes that belong to a specific Kubernetes cluster. Shipa API has a scheduler algorithm that distributes applications intelligently across a cluster of nodes.


An environment is a container of Framework, a cluster and a namespace in the cluster. Environment allows enforcing policies defined in a framework across namespaces in a cluster as well as across clusters.


Within Shipa, an application consists of:

  • The application source code
  • An operating system dependencies list
  • A language-level dependencies list
  • Instructions on how to run the application

Within Shipa, applications have a name, a unique address, a platform, associated development teams, a repository, and a set of units.

Currently, languages supported out-of-the-box by Shipa include Python, PHP, Java, Golang, Ruby, JavaScript, and Docker container images.


For Shipa, a unit is a container.

A unit has everything an application needs to run; the fetched operational system and language level dependencies, the application’s source code, the language runtime, and the application’s processes defined in the Procfile.


Shipa provisioners are responsible for creating and scheduling units for applications and containers. Currently, Shipa supports its own internal provisioner for Linux nodes and Kubernetes.

Provisioners are also responsible for knowing which nodes are available to create units, register new nodes, and remove old nodes.

Provisioners are associated with frameworks. Shipa uses frameworks to find out which provisioner is responsible for each application. A single Shipa installation can manage different frameworks with different provisioners at the same time.

Kubernetes Provisioner

You can register a Kubernetes cluster in Shipa that points to the Kubernetes API server. The Shipa Kubernetes provisioner uses Kubernetes itself to manage its nodes and containers.

Scheduling is controlled exclusively by Kubernetes for each application/process, and Shipa creates a Deployment controller. Changes to the application like adding and removing units are executed by updating the Deployment with rolling update configured using the Kubernetes API. Node containers are created using the DaemonSets.

A Service controller is created for every Deployment, allowing for direct communication between services without the need to go through a Shipa router.

You can scale your Kubernetes cluster in the background as usual, and Shipa will automatically identify the newly added or removed nodes

What’s Next