CI/CD can be a difficult concept to embrace, but it's inevitable to improve the effectiveness of software development. That's why Dagger hit the scene to offer containerized workflows for continuous integration.
Despite being the most popular technology to orchestrate microservices, Kubernetes is one of the most complex tools to use efficiently. This causes both technical and financial challenges organizations and developers have to face. For this reason, many tools were developed to simplify the use of K8s.
Of course, the native command line tool for cluster management is kubectl but that doesn’t mean you can only use that. Our top-choice is K9s, which allows you to manage and interact with your clusters in a terminal-based dashboard. Its most important benefit is that while monitoring your clusters and giving you real-time data, K9s offers commands to use to interact with your clusters. K9s is a must try product if you’ve got enough of kubectx and kubens.
Helm is the obvious package manager to pick. Helm utilizes so called charts that contain the files that use Kubernetes resources. Charts allow maintenance, installation and versioning packages in a simplified manner. Another notable benefit of Helm is how the templates improve governance within the organization, since your variables are no longer prone to disappear with staff leaving the team, and how the templatized YAML files decrease the chance of failure due to bad configuration. Version management is as simple as possible with Helm, while also providing easy-to-execute rollbacks.
Testing in Kubernetes orchestrated environments are highly resource demanding. You’d need multiple virtual or physical machines to run your application. minikube solves this problem by running both the master and the worker processes on the same node. By using a command line tool, like K9s, you’re able to deploy and manage your own applications for testing purposes on a node of your choice.
In many cases, however, a single node just won’t do. This is why we like K3d. It’s K3s run in a Docker container, making sure you can test your applications with as little resources as possible in a multi-node environment. While it provides a fast way to setup local clusters, one of its main disadvantages compared to Kind for example is the lack of Kubernetes compliance. K3d, therefore K3s provides only the most commonly used functions and capabilities of Kubernetes.
Cloud costs can be all over the place when you host your apps on the cloud. Most of the time it’s very difficult to observe your spending, what aspects can be optimized for your budget. For this reason, our preference for cost management is Kubecost. Over the years it’s turned into a sort-of de facto tool of cost optimization when running Kubernetes clusters. It allows you to visualize how your spending builds up, and also to check how other services impact your budget. One of our favorite advantages of Kubecost is fact that it uses Grafana to monitor the infrastructure.
Kubecost seems like a budget-optimizer tool but it gives recommendations to optimize your infrastructure based on usage. So, if you requested a lot more CPU, for example, than what your cluster needs, it’ll tell you to reduce your request. Same applies to not enough resources. You can also get a high-level view of your infrastructure’s overall health, and sort problems based on their impact on your spending and usability. You’re also able to dig deep in your infra, look at clusters, namespaces, or basically anything. And if it’s still not enough information, you can check the metrics on Grafana, as mentioned above.
Also, it’s worth mentioning that OpenCost was made by Kubecost. It’s the open-source alternative to Kubecost. Yes, we know Kubecost isn’t open-source, but in this case OpenCost offers limited capabilities when it comes to observing complex infrastructures, so it depends on your use-case which one you prefer.
Kubernetes is very difficult to manage without deep knowledge of it but that doesn’t mean non-specialists should miss out on the de-facto orchestrator when their business needs it. The tools listed above make using Kubernetes a lot less challenging for those who aren’t SysAdmins, or only need to use Kubernetes less frequently.
This blogpost was written by the team of dyrector.io. dyrector.io is an open-source continuous delivery & deployment platform with version management.
Find the project on GitHub.