4. Concepts

The main concepts are Platforms, Packages, Repositories, Releases and Release Workflows.

Platforms are where your apps run. For the first release of Skipper, support for deploying applications to platforms is provided by the Spring Cloud Deployer family of libraries. This allows Skipper to deploy Spring Boot applications to Cloud Foundry, Kubernetes and your local machine. You can configure a single Skipper server to deploy to multiple platforms, with each platform account is identified by a unique name.

[Note]Note

The Spring Cloud Deployer libraries for Apache YARN, Apache Mesos, Redhat Openshift and Hashicorp Nomad were not bundled with Skipper in 1.0 M1. Skipper 1.0 M1 has only been tested using the local, Cloud Foundry and Kubernetes Deployers.

Packages defines the basic recipe for installing an application. A package can define a single application or it can define a group of applications. It contains descriptive metadata, the location of the Spring Boot uberjar and the default application or deployment properties. The location of the uberjar can be a Maven repository, docker registry, file location, or http location. A package is a collection of Yaml files that are zipped up into a file with a naming convention such as name-version.zip, e.g. myapp-1.0.3.zip.

Repositories are where package metadata and zip files are hosted. Repositories and be 'local' or 'remote'. A remote repository is the one that is only accessible via http. Any arbitrary web app that serves up files off a file system can be used to host a remote repository as long as certain directory and file naming conventions are followed. A local repository is managed by the Skipper server and backed by a database. Skipper lets you search for packages that are hosted in repositories.

Releases are created in Skipper after you install, upgrade or rollback a package. A release has a name and you provide that name to perform operations against the release such as upgrading, rolling back and deleting applications. The release contains the fully resolved template files (aka 'application manifests') that represent the final description of what has been deployed to the platform. You can also query for releases to discover the state of packages that have been installed and retrieve the application manifests for a specific release.

Release Workflows are the steps taken to upgrade or rollback an application from one version to another. In Skipper terms, it is how we go from one Release to another on a Platform. Note, an upgrade may keep the same version, but instead update applications properties.