Getting started with Maestro
Maestro is an end-to-end solution for building, deploying and managing containerized applications. We build your code into Docker images and/or fetch pre-built images from your repostitories. We also take care of deploying and managing your containers and infrastructure (servers, load balancers, etc).
What you’ll need
Before you start, please check you have the following:
- A Cloud 66 Account — If you don’t already have one, sign up for a Cloud 66 account. You’ll get free unlimited access to all products for 4 weeks.
- Application code and/or pre-built images — Application code should be hosted in a (secure) publicly accessible git repository and pre-built images should be hosted in image publicly accessible repositories.
- A Cloud account linked to Cloud 66 or your own servers set up — See below.
If you don't have images or code ready, you can use this simple visit counter application we've supplied on Github. (You can also use this project with our next tutorial on Clusters.)
An account with your cloud provider of choice. Cloud 66 supports AWS, Google Cloud, Microsoft Azure, DigitalOcean, Hetzner, Maxihost, OVH, Packet, Rackspace,
Vultr, and Cloud A.
Click on any of the links above for instructions on linking your cloud provider to your Cloud 66 account.
Registered servers are a great way for operations teams to manage and allocate physical server resources for consumption by dev teams. Registered servers are a pool of your own servers (on a private or public cloud) that can be used for any application and configuration. For more information on how to add your own registered servers, we recommend this tutorial.
1. Choose application type
New users will be shown the product selection wizard. For Maestro, choose “I have a containerized application” and then “I need to build a Kubernetes cluster” (Try Maestro).
If you’re already using Cloud 66 just click New Application → Maestro (Build a new cluster) button on the dashboard.
2. Add application services
The first step is to give your application a name. This will be used to label your application throughout the Cloud 66 dashboard, and will not be visible to public users.
Next, we need to analyze your application’s code so that we can build container images for you.
Click the green Analyze My Code button. If you haven’t already linked your Git service provider to Cloud 66 we will walk you through the process. We also have a dedicated how-to guide if you get stuck.
Once your Git provider is linked, we can analyze your code. To do this:
- Copy the Clone or download link from Github
- Paste it into the Git repo URL field
- Check that you’re using the correct branch (we default to master)
- Click Go to fetch and analyze the code
If you’re using our demo application, you can copy this link for Step 2: maestro-demo.
When your code had been analyzed you will see a list of the services that will become your Maestro application. At this point you can add pre-built images (see below), and change the names of each service as needed.
You can also configure ports and commands for each service, but we can also skip this (optional) step and set our ports up later.
If you’re using our demo application, you should rename the service to
demo-app and then click the green Next button to move to the next step (building images).
3. Specify the source of images
The Where is your service image? dropdown provides you with three options to specify the source of your services.
Build Image from a GitHub repo — This is the easiest way to add services if your code is hosted on GitHub. You’ll need to link your GitHub account with Cloud 66 before you can take advantage of this. Just click the Setup access to your GitHub projects. link.
Build image from any Git Repo — Use this option if you have a private git repo or you’re using another git provider such as BitBucket. You can also use this if you don’t want to link Cloud 66 to your GitHub account. You will need to add your Cloud 66 public key if your repo is private. You’ll be prompted to do this if it’s required.
It’s in a Docker image repository — Use this to add pre-built images to a project. You can use a service like DockerHub or your own private image repo. If you’re using a private repository you’ll be prompted to add the necessary login credentials.
4. Build application images
Before you can deploy your application, you need to build your services into container images. To do this, click the green Build Application Images button.
You can now watch the build log as Maestro fetches your application code and builds it into Docker images, ready for deployment. Maestro will also fetch, tag and store copies of any pre-built images in a local repository.
5. Configure deployment
To start the deployment process click the Setup Deployment button on the Application Overview page. You will then need to configure some aspects of your application to ensure it’s deployed properly. This includes:
- Network configuration
- Data source(s)
- Target server(s)
i. Container network configuration
Our sample application is composed of a single Python service that we’ve named demo-app. This is a web app so we need to configure the service to handle web traffic.
At the moment we can see that 0 services are connected to the Internet. To change this we click on the stack (☰) icon to open the network setting panel.
The demo-app service will run inside a container, so we need to configure that container to respond to web traffic. A standard web server listens on port 80 for HTTP traffic, so we’re going to use that as our Public Internet Port
The demo-app service listens to port 5000 so we need set the Container Port to
5000 to the Public Internet Port to
ii. Adding a data source
The application also needs a redis data store, so we should add one now:
- Click on Add Data Source
- Select Redis from the list of available source
- Click Done
Our application is now configured and ready to deploy.
iii. Choose a cloud provider
Now we need to choose a cloud provider as a target for the deployment. You can do this using the dropdowns in the right-hand column.
For this demo we’ll use DigitalOcean and deploy the application to the London, UK region.
You can also deploy to your own servers. First you need to add them as registered servers.
iv. Configure server size
The server size can be set by clicking on the cog (⚙) at the top right the server.
→ Learn more about choosing the right size for your servers.
6. Deploy your app
Now everything is ready to go, just hit the Deploy button.
If this is your first deployment you’ll be prompted to enter your access credentials for your cloud hosting provider. Once you’ve added these the deployment will begin.
During the build and deployment process you can view the log to see what’s happening behind the scenes.
Server build states
In order to allow you to start working with your new app as soon as possible, there are two build states (or stages) for application servers:
- Ready - server is available to use, with the minimum required configuration
- Optimized - all the latest packages are installed & optimized
Servers will automatically progress from “ready” to “optimized”.
The full build and deployment process may take 15 minutes or more, because Maestro needs to provision the new servers from the ground up. You can close the window and Maestro will send you an email when the deployment is complete.
7. Test your app
Once deployment is complete, you can test your application by visiting your app’s detail page and clicking on the Visit Site link in the panel at the top of the Services tab.
If youre deployment has worked as planned, you will see the following text:
“Hello World! I have been seen X times”
…(where X is a positive integer). If you refresh the page, that number should increase by one. This dynamic data is coming from the redis data store that we added to the app.