Okteto is an open-source tool that runs locally to synchronize application code changes to a running pod in a local or remote Kubernetes cluster. There's no need to commit, build, and push a container image to start testing an application. Developers can continue using their existing IDE, debuggers, compilers, or hot reloaders to test their code changes instantly.
Okteto works with any Kubernetes cluster, as long as users can connect to a cluster via kubectl. Developers can use a local cluster in Minikube, or a cluster hosted in a cloud provider like AWS, GCP, or Azure. Developers will need to install Okteto's CLI first. Then, configure the environment with okteto init, which inspects the project and generates the config file. Finally, run okteto up to start the syncing process.
InfoQ recently talked to Pablo Chico de Guzman, CTO at Okteto, to learn more about developing applications in Kubernetes using Okteto.
InfoQ: What's Okteto? How does it help to develop applications in Kubernetes?
Chico de Guzman: Okteto is an open-source tool to launch development environments in Kubernetes. Developers write their code locally using their favorite tools. Okteto detects the code changes and instantly synchronizes their code to their development environment. You can then use your compilers and hot reloaders to see your changes instantly. Okteto is client-side only, and it works on any Kubernetes cluster. We also have Okteto Cloud, free and with enterprise tiers to give developers access to sandboxed Kubernetes namespaces–either in our cloud or on-premises–that integrates as well with the open source tool.
InfoQ: How is Okteto different from other tools like Telepresence, Skaffold, or Draft?
De Guzman: Skaffold and Draft were created to help automate a lot of the repetitive tasks that come with building images and redeploying containers. Telepresence was a significant change forward, letting you simulate at the network level that your workstation is part of the cluster.
Instead of simulating that your workstation is part of the cluster, Okteto moves your development environment to the cluster. It eliminates the network layer of abstraction using your cluster resources directly. Thus, reducing local setup when developing apps, using the same infrastructure (if needed) and patterns across all environments.
InfoQ: How does Okteto work?
De Guzman: Okteto runs the synchronization protocol locally, and in the Kubernetes cluster via syncthing. The application code is synchronized to a pod running in the cluster. We call this pod a "development environment." This pod replaces your application pods.
The development environment has a different container image–your development image, with all the tools you need pre-installed. However, it keeps the rest of the configuration of the original pods, for instance, the same identity, environment variables, or the start command. Nevertheless, you can override pretty much every configuration of the pod with an Okteto manifest in YAML.
InfoQ: What other tools can integrate with Okteto?
De Guzman: With Okteto, developers write their code locally, which means that Okteto is compatible with any IDE. One of our design decisions is to decouple deployment from development. Because of this, you can deploy your application with kubectl, Helm, a serverless framework, or even a CI job and use Okteto later to develop any component of your application.
And since development environments run in Kubernetes, they natively integrate with service mesh frameworks, ingress controllers, storage classes, or security policies. You leverage all your existing cluster configurations instead of having to mock dependencies or simulate anything.
InfoQ: What's the roadmap for Okteto?
De Guzman: We are currently growing the open-source project with buildpacks, IDE integrations with remote plugins, and smart defaults for the Okteto YAML manifest. We want to transform Kubernetes into a comprehensive development platform that does not require knowledge about Dockerfiles, containers, or Kubernetes objects.
InfoQ: How can users learn more and get started with Okteto?
De Guzman: Okteto source code is available at GitHub, along with samples for different languages and stacks. There's also an installation guide for the CLI, and the Okteto manifest reference to learn how to customize the tool.