Running and maintaining CI/CD infrastructure has long been a headache for engineering teams which has led to the popularity of SAAS solutions like Codefresh cloud. But many teams require that build infrastructure along with code and artifacts stay on-prem, or in a virtual private cloud behind the firewall.
To help those engineering teams, today we’re releasing Codefresh Runner, a flexible solution that allows you to selectively run pipelines on your own Kubernetes cluster, including private clusters that are behind a company firewall. Even better, there’s virtually no management overhead and you can start using it free!
Installing the runner is as simple as downloading the Codefresh CLI and executing:
codefresh runner init
Do this from a terminal that has access to your cluster via
kubectl. And that’s it! After installation is complete you will find a new runtime in your account.
Now you can assign this runtime to any pipeline and it will automatically run in your own cluster. There is nothing else to configure. All your external integrations (such as Docker registry or Helm repositories) will also be available to the runner making pipelines exactly the same regardless of their runtime environment.
You can find more details in our documentation.
The benefits of the Codefresh runner
If Codefresh cloud covers all your requirements, you can still use your Codefresh account as is, without the need to offer your own Kubernetes cluster for builds.
The Codefresh runner is a Kubernetes native application that is installed on any Kubernetes compliant cluster and offers the following features:
- Access to secure services (such as Git repositories or databases) that are behind the firewall and normally not accessible to the public cloud.
- The ability to use special resources in your Codefresh pipeline that are unique to your application (i.e. GPU nodes or other special hardware only present in your data center).
- Complete control over the build environment in addition to resources offered to your pipelines.
- Virtually no maintenance overhead – Codefresh Runner is a native-Kubernetes application.
For many of our users, the security implications of Codefresh runner are one the most important characteristics. A lot of our customers have very strict security requirements and limitations on their data. Private Git repositories and internal databases are some very common services that need to be accessed by a Kubernetes cluster while a pipeline is running, and for several of our customers, opening firewall ports or exposing these services to the public internet is not an option.
Codefresh Runner is installed inside a private Kubernetes cluster (behind the firewall) and gets access to the internal services of the customer without compromising security as nothing gets transmitted to the public cloud. The communication between the runner and the Codefresh UI is outgoing only, meaning no firewall ports need to be opened. Instead the runner polls Codefresh for new pipeline triggers.
This means that companies with sensitive information can enjoy the benefits of Codefresh pipelines while still being compliant with security laws and regulations that affect their private information.
Because Codefresh Runner is also running on a private cluster, it automatically gets access to any special resources inside the network of that cluster. Customers who want special hardware such as GPU nodes or hardware encryption devices, for example, can still use Codefresh for all their CI/CD workflows by taking advantage of this special hardware while still enjoying the friendly Codefresh platform.
Another major benefit of Codefresh Runner is that unlike similar solutions from other vendors, the runner is a Kubernetes native application. It follows all best practices of a cloud app and can be managed using your existing Kubernetes knowledge.
This means that operations teams can monitor and scale the Codefresh runner like any other existing Kubernetes application, reusing their deep knowledge instead of having to spend additional time on training specifically for the runner.
For example, if the Kubernetes cluster that hosts the runner has autoscaling enabled, then the runner will automatically take advantage of this as more pipelines are launched.
Finally, it is important to notice that multiple runners can be used in a single Codefresh account, across different clusters while still using the SAAS infrastructure of Codefresh.
This means that in practice you can choose which pipelines will run on which cluster and even have pipelines call each other among different clusters.
For example, open-source projects of a company can still use the SAAS infrastructure for builds, while specialized pipelines that need access to GPU nodes will be marked to run inside a private cluster behind the company firewall.
Codefresh will then act as a unified dashboard for all pipelines (regardless of their runtime environment) presenting to users the same experience and traceability across all different clusters.
Opening Codefresh runner usage for all accounts
The Codefresh runner has been brewing for some time now and it was already available to select Enterprise customers.
Today we are releasing a revamped version of the Codefresh runner that is available to all Codefresh accounts (even the free tier) because we believe that everyone should be able to customize and control their pipeline environment.
The revamped runner also has 3 major enhancements.
First of all we have included a friendly command line wizard for the initial installation that makes the whole process straightforward and repeatable:
The wizard asks some basic questions for your infrastructure and you can accept all the defaults or enter your own values.
The runner installation is now embedded in the Codefresh CLI that you may already have installed. No separate installer is needed anymore. This makes the installation much easier as many of our customers are already familiar with the Codefresh CLI and use it daily for their operations.
The last new feature is that now you can manage multiple clusters with a single runner installation. This makes resource usage very efficient as you no longer need one runner for each Kubernetes cluster that you might have installed.
See the documentation page for more details.
New to Codefresh? Sign up for your free account today!