Cyclops is an open-source dev tool that helps developers deploy their software to Kubernetes. It abstracts the complexities of Kubernetes under a customizable UI that can be tailored to any use case or organization. Instead of configuring and deploying software with configuration files, it is as simple as filling out a form.
To create a custom UI for your organization, you can simply create a Helm chart and import it into Cyclops as a template. Cyclops will then render a UI with all the fields needed to deploy an application. This way, you can enable all of the engineers in the organization to deploy their applications in a fast and safe way.
Ultimately, Cyclops allows you to build an internal developer platform by abstracting all of the complexities of your K8s cluster and other technologies. Leave Kubernetes intricacies to your DevOps/Platform teams, and help your engineers to develop faster and focus on shipping new products.
An overview of the Cyclops architecture
Under the hood, Cyclops is implemented as a Kubernetes operator and comes with a CRD called Module. Each Module represents an application and contains information on how to deploy an application.
Cyclops is made out of two main components: the UI and the controller.
Cyclops UI is the frontend for all of your modules. Responsible for rendering dynamic UIs, allowing you to deploy all of your applications more easily, and validating user inputs based on the rules provided in the templates. Through it, you can make changes to any of your Modules.
The backend of Cyclops is the Cyclops controller, which serves both as a controller for Cyclops’s CRD Module, and as an API allowing you to create, get, update, and delete modules. Each time a user updates any of the Modules in their cluster, the Cyclops controller will pick up the change and make sure to create all of the necessary resources in your Kubernetes cluster.
Installing Cyclops on Civo
Let’s bring Cyclops to life on a Civo managed Kubernetes cluster. There are some prerequisites to do so:
We will create a Civo cluster and add Cyclops through the Civo marketplace. To create the cluster, you can follow the instructions provided by Civo. On the bottom of the page, there is the Marketplace section where you can go under Management and select Cyclops UI.
Hit Create cluster and give it a couple of minutes to bring up a cluster and your Cyclops instance.
Once your cluster is up and running, you can verify that your Cyclops instance is up and running with the following command:
kubectl get pods -n cyclops
The output of the command should show two running pods. One for the cyclops-ui and another one for the cyclops-ctrl:
NAME READY STATUS RESTARTS AGE
cyclops-ui-7d8789cd6-425v9 1/1 Running 0 11m
cyclops-ctrl-789dbf6b65-8nk6b 1/1 Running 0 11m
View Cyclops in action
Now that everything is set up, let’s see how Cyclops can help you deploy your applications. To access Cyclops UI, we can port forward the cyclops-ui service:
kubectl port-forward svc/cyclops-ui 3000:3000 -n cyclops
Cyclops UI is now available on localhost:3000
Deploy a new application
To create a new application through Cyclops, hit the Add Module button in the top right corner. Here, you can choose from many templates that come with Cyclops out of the box.
Once a module is created, you can check all the deployed resources.
You can try editing your application by scaling the number of instances and checking how it updates in the UI.
Also, play around with available templates to deploy a MySQL or RabbitMQ instance in a couple of clicks!
Summary
At this point, you should have Cyclops up and running in your Civo cluster. Depending on your next steps, you can carry out further testing by referring to the Cyclops documentation, which can be found here.
Cleaning up (optional)
After completing this tutorial, clean up the resources to prevent unnecessary costs. Remove the Kubernetes cluster using the Civo dashboard or the Civo CLI:
civo k3s remove my-cluster
This command will remove the cluster and associated resources from your Civo account.
Further resources
If you want to learn more about the topics discussed in this tutorial, here are some additional resources to check out: