[Kubernetes, Cloud Native]

Kubernetes and Cloud native Application Checklist: Development Environment and Tools

Part One of our Kubernetes and Cloud native application checklist outlines the tools and applications that CIOs, CTOs and DevOps teams leads can use to de clutter the development workflow making it easier for developers to write code and reduce integration issues when going to production.

Hasham Haider

Hasham Haider

January 20, 2020

3 minute read

Most organizations conflate cloud native with containerization. There is a lot more to the term than just that however. The term Cloud native is much broader in the set of technologies it encompasses and in its implications for the way organizations develop, deploy and operate applications.

Besides containers and Kubernetes, which has become the de-facto container orchestration engine, cloud native uses concepts and technologies like microservices, DevOps, CICD, immutable infrastructure and declarative APIs to build, deploy and operate applications.

In this series of articles we will outline a checklist of tools, concepts and services that make it easier to develop, deploy, manage and operate cloud native applications deployed on Kubernetes. 

It is aimed towards CIOs, CTOs and DevOps team leads tasked with ensuring developers, DevOps and SREs have the necessary tools at their disposal to facilitate the smooth running of cloud native Kubernetes environments.

Let’s start at the beginning with the development workflow.

Development Tooling for Kubernetes and Cloud native Applications

Kubernetes introduces complexity into the development workflow requiring developers to work with native Kubernetes objects like containers, pods and deployments, in addition to images and repositories and primitives that are already part of the workflow. This often leads to non optimal development practices.

CIOs and DevOps team leads need to de-clutter this workflow and make it as seamless as possible. One way to do this is by ensuring that the introduction of Kubernetes makes minimal changes to the already existing pre-Kubernetes development workflow.

Let’s take a quick look at some of the tools that can help CIOs do this:

Draft

Draft is an open source tool that makes it easier for developers to quickly build and deploy applications to Kubernetes. Draft spins up the primitives needed to run applications on Kubernetes like a Helm chart or Dockerfile with a single command as well as building container images and deploying those images to the Kubernetes cluster.

Draft is meant to aid development teams iterate on code and before submission to a version control system.

Skaffold

Skaffold is another open source tool aimed at accelerating the development workflow for developers on Kubernetes. Skaffold allows developers to iterate on code locally before deployment to either a local or remote cluster. It automatically builds new container images based on code changes and deploys them to the cluster.

Telepresence

Telepresence is the next tool on the list. It is predominantly used for development on remote Kubernetes clusters. Kubernetes pods running in the remote cluster are connected to local pods and serve as place holders for those pods.

Local pods mirror live cluster pods and any changes to these pods are reflected in the live cluster, making it easier to iterate on code and accelerating the development workflow in the process.

Okteto

Okteto allows developers to launch development environments directly in live clusters. In addition to accelerating the development workflow this also mitigates integration issues since the development environment mirrors the live production environment.

The local development environment can be pre-configured with all the tools required by developers while allowing it to keep the same cluster configuration. Any code changes made locally are automatically synchronized to the development environment.

Ksync

Ksync is another tool aimed towards accelerating Kubernetes development. A key feature of kysnc is the ability to synchronize application code between the local development environment and containers running on remote clusters. This allows for much faster application development and debugging since developers no longer have to wait out the entire pipeline to see if their code worked.

Kysnc works with a broad range of local development environments and IDEs.

DevSpace

DevSpace is an opensource tool with a number of nifty built-in features aimed at speeding up application development on Kubernetes. In addition to automating the build and deployment of container images it also allows for efficient in-cluster development. Developers can spin up a DevSpace inside a remote Kubernetes cluster and connect it to the local dev environment. This allows them to develop and debug code locally while testing and running the code in a production-like environment.

Tilt

Tilt monitors local dev environments for changes and automatically builds, pushes and deploys any changes it detects to remote Kubernetes clusters. Tilt is especially suitable for micro services applications with multiple components and can also track dependencies between applications.

In Part two of this series we will tackle CICD tooling for cloud native applications deployed on Kubernetes. CICD tools allow developers and DevOps to accelerate the build, test and deploy workflow for cloud native applications. 

Want to dig deeper? Download the Complete CIOs Guide to Kubernetes

Download Guide

Kubernetes Production Readiness and Best Practices Checklist Kubernetes Production Readiness and Best Practices Checklist Cover Download Checklist
Hasham Haider

Author

Hasham Haider

Fan of all things cloud, containers and micro-services!

Want to Dig Deeper and Understand How Different Teams or Applications are Driving Your Costs?

Request a quick 20 minute demo to see how you can seamlessly allocate Kubernetes costs while saving up to 30% on infrastructure costs using Replex.

Schedule a Meeting