4. Concepts

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

Platforms are where your apps run. Skipper 1.0 supports deploying applications to platforms by using 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 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. Donovan Muller has provided support for Redhat Openshift.

Packages define the basic recipe for describing what to install on a platform. 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 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 can either 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 relational 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 unique name that you provide to perform release operations such as upgrading, rolling back and deleting. The release contains the fully resolved template files, also known as application manifests, that represent the final description of what has been deployed to the platform. You can also get the status and application manifest 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.