Giter Site home page Giter Site logo

charts's Introduction

Okteto: A Tool to Develop Applications on Kubernetes

CircleCI CII Best Practices GitHub release Apache License 2.0 Total Downloads Chat in Slack

Overview

Kubernetes has made it very easy to deploy applications to the cloud at a higher scale than ever, but 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 their 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.

How it works

Okteto enables development inside a container, providing a seamless IDE and tool integration as if you were working locally but with the resources of a remote cluster. 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 use any docker image. The development container inherits the same secrets, configmaps, volumes or any other configuration value of the original Kubernetes deployment.

The end result is a remote cluster that is seen by your IDE and tools as a local filesystem/environment. You keep writing 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.

Why Okteto

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.
  • Realistic development environment: your development container reuses the same variables, secrets, sidecars, volumes as 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 use okteto 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.

Getting started

All you need to get started is to install the Okteto CLI and have access to a Kubernetes cluster. You can follow our guide for setting up a Kubernetes cluster on AWS here.

The Okteto CLI has two operational modes:

  • Okteto Open Source CLI
  • Okteto Platform CLI

Okteto Open Source CLI Features

Okteto Open Source requires access to a Kubernetes cluster. It's designed to support Development Containers in any Kubernetes cluster. It doesn't come with features that support multiple developers working on the same cluster. That's the goal of the Okteto Platform

Okteto Open Source supports the following commands:

  • okteto context
  • okteto up
  • okteto down

For reference, our Open Source CLI supports the dev section of the Okteto Manifest.

We have getting started guides for the Open Source mode for the following languages:

Okteto Platform CLI Features

The Okteto Platform CLI requires installation of the Okteto Helm Chart in your Kubernetes cluster. In this mode, all of the Okteto CLI commands are available (build, deploy, up, down, destroy, etc). The Okteto Platform comes with additional features like:

  • User authentication and access control to Kubernetes using your own Identity provider
  • Build service for remote container image creation
  • Preview environments for every pull request
  • Dynamic scaling of environments based on usage
  • Secrets manager for your development environments
  • Okteto Insights to provide observability on your development environments

And much more! Refer to the Okteto Platform docs to learn more.

Features Comparison

Feature Okteto Open Source CLI Okteto Platform CLI
Development Containers Available Available
Build Service Not Available Available
User Management Not Available Available
Access Control Not Available Available
Automated Scaling Not Available Available
Secrets Management Not Available Available
Observability Tools Not Available Available
Support Community Support Professional Support
Documentation Open Source Samples Platform Docs

Useful links

Releases

Okteto is monthly released into three channels: stable, beta, and dev. By default when Okteto is installed, the stable channel is used. If you need to access features not yet widely available you can install from the beta or dev channel. More information can be found in the release documentation.

Support and Community

Got questions? Have feedback? Join the conversation in our Community Forum. You can also join us in the #okteto Slack channel! If you don't already have a Kubernetes Slack account, sign up here.

Follow @OktetoHQ on Twitter for important announcements.

✨ Contributions

We ❤️ contributions big or small. See our guide on how to get started.

Thanks to all our contributors!

charts's People

Contributors

firatoezcan avatar irespaldiza avatar jbampton avatar kingdonb avatar odedlaz avatar pchico83 avatar rberrelleza avatar rlamana avatar vitaljeevanjot avatar waterdrips avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

charts's Issues

Add Discourse

I would like to painlessly deploy Discourse without the need of upgrading my account just to add yet another Helm Chart repo or manually pull the chart and deploy to Okteto Cloud.

And as usual, after I file the issue, I'll work on it and maybe do testing within Okteto Cloud if possible.

theia-ide: python is not a valid runtime error while deploying

Steps to Reproduce

  1. Create a new deployment using Theia IDE.
  2. When YAML editor is on the screen, change the value of runtime into python.
  3. Configure the rest as usual.
  4. Hit depkoy.

Logs

Error: template: theia/templates/_helpers.tpl:77:8: executing "theia.image" at <fail (printf "%s is not a valid runtime. Valid values are: %s" .Values.runtime $runtimes)>: error calling fail: python is not a valid runtime. Valid values are: [nodejs go php dart cpp java rust]

My config

# available runtimes: go, python, dart, cpp, java, rust, nodejs
runtime: python

# use this to clone a public repository automatically
repository: https://github.com/Community-Lores/community-lores.github.io

# set this when using a private repository https://github.com/settings/tokens
# or add a GIT_TOKEN okteto secret
gitToken:

persistence:
  size: 2Gi

resources:
  limits:
    cpu: "2"
    memory: 6Gi

# This is the port that Theia is running on. Change this if you want to use this port instead
service:
  port: 3000 # Default Theia port

Flux and Helm Operator - refresh, update

This should really be two issues but I don't want to spam your repo...

Flux (v1) and Helm Operator have both seen releases since this chart was published (okteto/charts/flux)

They could most likely easily be refreshed, (and if you assigned this issue to me I will follow it up and contribute the changes myself 👍) - unless you get there first. There wouldn't be any breaking changes in Flux v1, so it should be very straightforward to update it to the latest stable release.

There is a bigger update needed for Flux v2, which is a total rewrite from the ground up and a completely new design. This would require additional support from Okteto Cloud and/or Enterprise to provide a migration path for users to the next version. (By this I mean, Okteto Enterprise now installs and Cloud bundles the HelmRelease CRD from Helm Operator, it has been updated to helm.toolkit.fluxcd.io/v2beta1 for now, with a number of others required for full Flux operation, and beta releases for all that are still in alpha state, coming soon.) Now that Flux v2 is at 100% feature parity, we should be able to recommend to upgrade to all users (although some will inevitably wait for the "2.0" stable release, we hope many will migrate earlier so we can solve any new or surprising issues that might require a breaking changes, before it is declared too late.)

Flux v1 is still in maintenance mode, but users are actively encouraged to migrate to Flux v2 with the GitOps Toolkit and it would be extremely beneficial for Flux to have Okteto's support in helping users migrate. This will not be entirely straightforward at first, as your flux v1 onboarding flow is extremely well orchestrated and nailed down. It would be a separate issue to provide an onboarding flow for Okteto with as great an experience and all the same features enabled by default and right out of the box, like for instance setting up webhooks. 💯

MySQL!

I love mysql and would love to see it here

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.