Kubernetes has made it very easy to deploy applications to the cloud at a higher scale than ever, but the development practices have not evolved at the same speed as application deployment patterns.
Today, most developers try to either run parts of the infrastructure locally or just test these integrations directly in the cluster via CI jobs or the docker build/redeploy cycle. It works, but this workflow is painful and incredibly slow.
okteto
accelerates the development workflow of Kubernetes applications. You write your code locally and okteto
detects the changes and instantly updates your Kubernetes applications.
Okteto allows you to develop inside a container. When you run okteto up
your Kubernetes deployment is replaced by a development container that contains your development tools (e.g. maven and jdk, or npm, python, go compiler, debuggers, etc). This development container can be any docker image.
In addition to that, okteto up
will:
- Keep your local code changes synchronized with the development container.
- Start port forwards, so you can access your cluster services via
localhost
or connect a remote debugger. - Give you a remote terminal to your development container, so you can build, test, and run your application as you would from a local terminal.
All of this (and more) can be configured via a simple yaml manifest.
The end result is that the remote cluster is seen by your IDE and tools as a local filesystem/environment. You keep writing your code on your local IDE and as soon as you save a file, the change goes to the development container and your application instantly updates (taking advantage of any hot-reload mechanism you already have). This whole process happens in an instant. No docker images need to be created and no Kubernetes manifests need to be applied to the cluster.
okteto
has several advantages when compared to more traditional development approaches:
- Fast inner loop development: build and run your application using your favorite tools directly from your development container. Native builds are always faster than the docker build/redeploy cycle.
- Production-like development environment: your development container reuses the same variables, secrets, sidecars, volumes, etc... than your original Kubernetes deployment. Realistic environments eliminate integration issues.
- Replicability: development containers eliminate the need to install your dependencies locally, everything is pre-configured in your development image.
- Unlimited resources: get access to the hardware and network of your cluster when developing your application.
- Deployment independent:
okteto
decouples deployment from development. You can deploy your application with kubectl, Helm, a serverless framework, or even a CI pipeline and useokteto up
to develop it. This is especially useful for cloud-native applications where deployment pipelines are not trivial. - Works anywhere:
okteto
works with any Kubernetes cluster, local or remote.okteto
is also available for macOS, Linux, and Windows.
All you need to get started is to install the Okteto CLI and have access to a Kubernetes cluster.
You can also use okteto
with Okteto Cloud, a Kubernetes Namespace as a Service platform where you can deploy your Kubernetes applications and development containers for free.
- Deploy your application on Kubernetes.
- Run
okteto init
from the root of your git repository to inspect your code and generate your Okteto manifest. The Okteto manifest defines your development container. - Run
okteto up
to deploy your development container.
We created a few guides to help you get started with okteto
and your favorite programming language.
- Installation guides
- CLI reference
- Okteto manifest reference
- Samples
- Frequently asked questions (FAQs)
- Known issues
okteto
is written in Go under the Apache 2.0 license - contributions are welcomed whether that means providing feedback, testing a new feature, or hacking on the source.
Please see the guide on contributing.
We use GitHub issues to track our roadmap. A milestone is created every month to track the work scheduled for that time period. Feedback and help are always appreciated!
Got questions? Have feedback? Join the conversation in our #okteto Slack channel! If you don't already have a Kubernetes slack account, sign up here.
Follow @OktetoHQ on Twitter for important announcements.
Or get in touch with the maintainers:
okteto
is licensed under the Apache 2.0 License.
This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to hello@okteto.com.