This guide will give you an overview of the Unfurl Cloud’s architecture and how to use it to develop and deploy cloud applications onto our free and open cloud or your own cloud accounts.
If you are developer and want to learn how you can use Unfurl Cloud to developer cloud applications this guide is for you. If you just want to use our cloud blueprints to easily deploy an existing open source application check out our User Guides.
Unfurl Cloud lets you create different types of projects for managing the different stages of a cloud application’s development life-cycle. The diagram below shows the different types of projects on Unfurl Cloud and how they interrelate:
Each type of project has its own easy-to-use UI and all store their data and configuration in git. They are designed to be easy to integrate with your own processes so you can pick and choose which components to use.
Our code projects should seem familiar to you – they provide standard git project functionality based on Gitlab’s open source edition. You can develop your code there or you can configure it to automatically sync with your Github or Gitlab projects. As a development platform Unfurl Cloud is agnostic to what programming language or framework you use, the primary function of your code project is to automatically build container images and artifacts from code.
Code projects provide the following functionality:
And these features are unique to Unfurl Cloud:
Blueprint projects are where you develop Cloud Blueprints – our cloud-independent Infrastructure-as-Code, using our core DevOps technology, Unfurl. Unfurl lets you easily track configuration, secrets, software and code dependencies, and deployment history all in git. It integrates with the DevOps tools you are already using – like Terraform, Ansible, and Helm – allowing you to encapsulate your DevOps processes into reusable building blocks using the OASIS TOSCA (Topology and Orchestration Specification for Cloud Applications) standard YAML vocabulary.
Unlike other DevOps tools, our blueprints let you design high-level abstractions and type hierarchies – for example you can have a blueprint that requires a Postgres database without having to specify how to provision it. At deployment time you can specify self-hosted database or 3rd party service like Amazon RDS. We have built a library of types you can use or you can write your own in YAML or Python.
Blueprints can point to code projects to enabling incremental deployment – whenever a branch in the code project changes your deployment will be updated.
Once you design a blueprint it can be deploy through our deployment interface without any code – we generate a user interface that let’s the user choose the components they need and enter any required configuration data.
Your private dashboard project is where you manage deployments to your own cloud accounts. All users have a Dashboard project created for them when they sign-up. You can also create multiple dashboard projects and invite other users to join them. For example, you could have personal and work dashboards.
Before you can deploy you need to set up an environment to deploy into. You can setup multiple environments for different uses, for example, “staging” and “production”. Each environment is associated with a cloud provider. The following cloud providers are supported:
For all of these environments, as an alternative to configuring Unfurl Cloud with credentials, you can set up a custom runner with access to the cloud resources needed for deployment.
The “Public Cloud” tab on your Environment dashboard page has a list of the public services available you. When you deploy a blueprint use the “Connect” button to find the services that match the requirements for the component the blueprint needs.
The services in our public cloud are available to everyone. And if you join a Testbed you gain access to the services available to members of that project.
Testbed projects are where we are building our free and open cloud. Testbed projects are collectively run and community driven. We have projects for each of the cloud providers we support as well different Kubernetes distributions.
A Testbed project is similar to a dashboard project except its environments are set up to connect to our public cloud accounts. In addition each testbed has access to an API gateway that enables members to “publish” services deployed in the testbed. Any member of a testbed can use their API keys to get access to those published services. You can also make request to publish those services to all Unfurl Cloud users by choosing the “Share Publicly” option when you share a resource.
All Unfurl Cloud developers can view deployments in a public test project and clone a deployment into their own dashboard projects.
Testbed project members can create deployments and generate a merge request with a deployment plan that project maintainers can approve and deploy. This way developers can build and manage their collaborating through the same familiar PR workflow they use on GitHub or GitLab.
Project maintainers have full access to the underlying cloud account and can approve PRs, and create and manage deployments and pipelines.
You can also create private Testbed project for your own cloud accounts – just choose the Testbed project template when creating a new project.