VPS & CLOUD INSTANCES: FOR YOUR BEST EXPERIENCE

CI/CD PIPELINES ON FYBE

Learn how to use Fybe cloud infrastructure to run CI/CD pipelines

RECOMENDED SETUP

Repository Node

A typical CI/CD setup will include an instance hosting the main repository and container registry using GitLab or similar software. Typically, one virtual machine will be sufficient, and as this workload mainly requires CPU and storage, we often see customers choosing a Starter S-16 Instance for that purpose.

wdqw

CI/CD Runners

Staying in GitLab terminology, a runner is an agent that picks up a CI job through the API, runs the job, and sends the result back to the main GitLab instance. CI/CD Runners mainly require CPU to run, so a CPU Optimized Instance like CO-8 is a safe choice. The number of instances you'll need depends on the scale of your project and the number of unit tests and automated acceptance tests.

wdqw

Dev & Staging Environments

Every CI/CD pipeline requires a certain number of development and staging environments. They are often not overloaded with traffic, so a simple Starter Instance like an S-4 with NVMe should be absolutely sufficient.

wdqw

Central Storage

A centralized place for caching runner nodes, as well as for backups and logs comes in handy for every multi-instance setup, but it's especially crucial for the CI/CD pipeline, as it simplifies the setup and improves deployment time. We often see Object Storage being used for that purpose.

wdqw

Monitoring and Logging Node

Centralizing monitoring and logging on separate instances makes managing your cloud infrastructure much easier. Tools like Prometheus, Telegraf + InfluxDB, or Elasticsearch have moderate CPU, RAM and storage requirements, so you can start with a Starter Instance and later switch to one with optimized storage, if needed. For larger setups, go with NVMe rather than SSD storage.

wdqw

THESE FEATURES WILL HELP YOU SAVE TIME

API & CLI

Using API and CLI will make managing the entire infrastructure setup much easier. Many recurring maintenance tasks can be automated that way.

Custom Images & cloud-init

Having a custom image and cloud-init script for each instance type will greatly improve the speed of deployment in case you need more nodes, and will save you a ton of time on maintenance. Using Ansible or Chef will further enhance cloud-init possibilities.

Private Networking

In most cases you don't want the outer world to see your work in progress. Using private networks can give you the needed privacy until you are ready to go live.