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.
Kubernetes introduces complexity into the development workflow requiring developers to work with native Kubernetes objects like containers, pods and deployments, in addition to image, 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 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 faster before submitting it to a version control system.
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 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 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 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 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 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
Fan of all things cloud, containers and micro-services!
Cloud native has taken the IT landscape by storm. But what is it? We sat down with Pini Reznik, CTO at Container Solutions and co-author of “Cloud Native Transformation: Practical Patterns for Innovation” to try and figure out what exactly Cloud native is, which specific technology pieces, processes and cultural dynamics need to come together to create Cloud native environments and the best way for organisations to forge into the Cloud native future.
April 22, 2020
3 min read
In this instalment of our Kubernetes best practices series we review the concepts of Kubernetes tenants and multi-tenancy, identify the challenges that have to be overcome and outline best practices for DevOps and cluster admins operating multi-tenant Kubernetes clusters.
April 20, 2020
3 min read
Part four of our Kubernetes and Cloud native application checklist evaluates service mesh tools based on ease of use in cloud native environments as well as their traffic management, security and observability feature-sets.
April 8, 2020
3 min read