How to get a GitOps cluster in 20 minutes with Civo - part 1

Create a production-ready Kubernetes management cluster with virtual and physical workload clusters on Civo using all the popular cloud native open source tools in only 20 minutes instead of weeks.

How to get a GitOps cluster in 20 minutes with Civo - part 1

So you need to create a new Kubernetes cluster with all the (useful) bells and whistles like a Continuous Delivery (CD) tool, something to manage the applications’ secrets, and much, much more just to be able to deploy your application. We hear you, it’s a question of days, probably weeks even if you have the proper experience, and did exactly this before. Do not worry, we got you covered with kubefirst: you’ll be able to create a new management cluster with physical and virtual cluster management capabilities in only 20 minutes. Follow this step-by-step tutorial to know how.

Preparations for the magic

First, follow the prerequisite section of our documentation to be ready to use our console UI to create your new cluster: you will need to install our CLI, install Docker Desktop if it’s not already done, create a GitHub token (we will use GitHub for this tutorial, but GitLab SaaS is also supported) with the proper access, and lastly, a Civo API token. 

Once your computer is ready, let’s launch the console application by typing kubefirst launch up in your terminal.

the terminal showing the initial screen of a launch up command with information on the process.

Keep in mind that this first cluster created locally is not the final management one: it is what we call internally the cluster 0. It will give you a running console application, which will be used to create your new production-ready management cluster.

terminal showing the success message once the cluster 0 is created with the launch up command.

Creation of your new cluster

Once the creation is successful, kubefirst will open for you a browser tab (unless you are on Windows using WSL, in which case, navigate to which will present you a step-by-step UI helping you easily create your new Kubernetes cluster. Firstly, you’ll be asked to select between the two Git providers that we support: GitHub or GitLab SaaS.

Console UI select platform step showing the GitHub, and GitLab logo

The next step is to select the public cloud you want to use. For this tutorial, we will use Civo, but we also support AWS, and DigitalOcean, which just got out of beta. We also support, in beta for now, Google Cloud, and Vultr. Lastly, you can create a k3d cluster for a cloud-free experience, and test the platform, but it can only be done using the CLI directly.

Console UI select platform step showing the information, and logo of supported public cloud providers

Once you select the cloud of your choice, in that case, Civo, you will need to give us access to a GitHub organization by providing a GitHub personal access token that you created when following the prerequisite section. We will use this access to create two repositories: your new gitops source of truth, and the metaphor repository, which is a demo application to highlight the features of your new Kubernetes platform.

Console UI authentication step showing requiring the user to enter GitHub token, and Civo API key 

The last step before the cluster creation starts is to configure the said cluster. You will be required to provide a valid email address, which for now, is used only to receive information about the certificates expiration. As for the cluster itself, you need to select the available region, the size of the instance (we suggest not going lower than the medium one to ensure you have enough resources for all the tools we install in addition to adding your own tooling once you have access to your new cluster), and the number of nodes. Lastly, you need to decide if you will use the public cloud DNS (which is the default, and suggested in most cases): you can also choose Cloudflare, but if you do, you’ll need to provide an additional API token. For the sake of this demonstration we will choose the Civo DNS service.

Console UI cluster details step showing all the information the user need to enter before proceeding to the next step (see previous paragraph for more details).

You may have noticed a hidden section titled “Advanced Options”. In this section, you could, for network limitation reasons, use HTTPS instead of SSH for some Git procedures, and also use a customized gitops-template fork: more information on that in our documentation. For now, let’s not use these options.

Advanced options pane showing customization for the gitops-template fork, branch, and using HTTPS, instead of SSH.

Seems like we have been at it for a while, but moving from launch up to step 4, the provisioning is faster to do, than to read… With that said, you have now pushed the “Create cluster” button, and it is where the magic happens: your cluster is now being created, with everything that it’s involving. You now have to wait about 10 minutes depending on your computer, and internet connection, but do not worry, because we got you covered. See the left sidebar? During the waiting time, you have the choice to read more about your future Kubernetes management cluster from our documentation, join our Slack community to meet fellow cloud native enthusiasts which is also the best place to ask for help if there is anything, watch some of our videos, or even, take it easy, and play a little game!

Console UI provisioning step showing the Kubernetes cluster creation starting with installing the tools needed for the rest of the process

If for some reason the process fails, or you are just curious to see a bit more about what is happening behind the hood, a good place to find more information is within the verbose tab of the provisioning console.

Console UI provisioning step showing the verbose logs

Now that all the steps completed successfully, your new cluster is created, and to easily access it, click the “Next” button.

Console UI provisioning step showing all the steps of the cluster provisioning process successfully done.

Accessing your new cluster

This button will bring you to the final step, the “Ready” screen. Here you can open your management console using the “Open kubefirst console” button. It may be confusing as it’s the same console application we use to provision a new cluster,  but you’ll see, the experience will be different. Before you do that, to protect your cluster, we created an administrator account for me. The user is kbot, and the password can be either shown, or copied to your clipboard using the “Copy” button. You can easily add new administrators or developers’ users in the proper Terraform file from your newly gitops repository. 

Console UI ready step showing the final screen of the process with the cluster information, and kbot password.

The first screen you’ll see is the login screen. Your new platform uses HashiCorp Vault for authentication. You’ll need to click the “Log in with Vault” button to open Vault, and log in to your new management platform.

Console application showing the logged out screen, with the option to use Vault to log in.

Now is the time to use thekbot username with the password you copied to the clipboard two steps behind. Doing so will log you into all kubefirst tools (i.e., HashiCorp Vault, Argo CD…) including your console UI for managing your new Kubernetes cluster.

HashiCorp Vault login screen

If you want to learn more about SSO & OIDC on kubefirst with HashiCorp Vault, watch the following livestream recording.

Next steps

the kubefirst console application showcasing the management, and three virtual clusters information with the list view

This ends the first article of this three-part series. In the next article, we will provide you with a guided tour of your newly created platform. In the meantime, feel free to explore by yourself your new production-ready Kubernetes platform. As always, we are welcoming constructive feedback, features ideas, and overall comment on your experience with our open-source platform. The best place to do that, or ask for help if you encounter any issues, is our Slack community, where you can join more than 300 other cloud native enthusiasts!