About this video
What You'll Learn
- Deploy a sample app to Okteto Cloud by adding a namespace, credentials, and pipeline in the quick-start flow.
- Install and use the Okteto CLI and `okteto up` to sync local code into a running Kubernetes pod.
- Run Docker Compose apps and enable preview environments with GitHub Actions from the same Okteto pipeline configuration.
Ramiro Berrelleza walks through Okteto Cloud and the okteto CLI, deploying the Movies sample with Helm and BuildKit, then using okteto up to sync code into a live Kubernetes pod. Plus Docker Compose support and preview environments.
Jump to a chapter
- 0:00 Holding Screen
- 0:50 Introductions
- 1:00 Introduction to Okteto
- 1:44 Guest Introduction: Ramiro, Founder & CEO
- 5:03 Motivation Behind Okteto: Solving Cloud Native Dev Friction
- 7:40 Okteto Cloud
- 8:02 Hands-on Start: Okteto Cloud Dashboard & Login
- 10:00 Adding the Movies Repository
- 10:21 Deploying a Sample Application (Movies App)
- 11:36 Okteto Pipeline & Built-in Build Service
- 14:00 Exploring the Deployed App & UI Features (Live Logs, Public Endpoint)
- 16:32 Installing & Using the Okteto CLI
- 18:00 Working on a Service Locally
- 18:16 Starting a Dev Environment with `okteto up`
- 19:42 Live Development: File Synchronization & Hot Reloading (Fixing a Bug)
- 24:37 How `okteto up` Works (Okteto YAML, SyncThing, Port Forwarding)
- 31:12 Okteto Cloud Pricing (Free Tier) & Deployment Options (Any Cluster)
- 34:24 Integrating with Other Kubernetes Tools
- 38:00 Deploying with Docker Compose (Voting App Demo)
- 40:00 Deploying with docker-compose.yml
- 44:31 Remote Builds with BuildKit (Not Needing Docker Locally)
- 51:00 Preview Environments & GitHub Actions
- 51:11 Preview Environments (CI/CD Integration)
- 54:40 One-Click Deploy (Develop on Okteto Button)
- 56:11 Q&A: Team Development & Upcoming Divert Feature
- 58:16 Conclusion & Community Call to Action
Full transcript
Generated from the English captions. Timestamps jump the player to that moment.
Read the full transcript
1:00 Introduction to Okteto
1:00 Hello, and welcome to today's episode of Rawkode live. I am your host Rawkode. Today, we're taking a look at Okteto. It is a Kubernetes development platform to empower your developers to innovate faster on cloud native application. Now before we move into that, there is a little bit of housekeeping. If you are not already subscribed to the YouTube channel, please do so now. Remember to click the bell, and this will get you notifications for all new episodes of Rawkode live as we explore the vast cloud native landscape together. Also, if you're not watching live or you
1:32 just to chat, we do have a very active Discord server. We have a few hundred people in there now talking all things cloud native, Kubernetes, and everything in between. So feel free to jump in there, say hello, and I look forward to seeing you. Now in order to take a look at Okteto today, I am joined by founder and CEO, Ramiro. Hello, Ramiro. How are you today? Hey, David. It's good good being here. Thanks thanks for the invite. Good good seeing you. Yeah. Thank you very much for joining us. This is a request from a member in our
1:44 Guest Introduction: Ramiro, Founder & CEO
2:04 Discord community who was like, I really wanna see a Rawkode live on on Okteto. And I was like, alright. Let's make this happen. And there we go. And here we are today, hopefully showing everybody what's happening. I do have a comment which does have me slightly worried that people suggest that I was potentially muted during my start. I hope not. But it's the same waffle that I say every time, so you've heard it before. Hopefully. Is it you that's muted or me that's muted? I don't know. We'll we'll just move forward. If I was muted, I'm sorry, Russell. Hopefully,
2:39 you can hear me now. I'll look into that very future. So why don't you give us the the all about Ramiro? You wanna tell us about oh. We're getting a no voice or screen from Sam. Oh. It looks okay on my end. I will, however, check. But while we do that, do you wanna tell us a little bit about your mural? Oh, no. Russell says it was his laptop. You all have given me the fear today. That's what's happening. Just putting us putting us in the spotlight. Yeah. I've got the video. I'm now watching my own show well, streaming on my own
3:21 show and feel like a bit of a dafti, but from what I can tell, it looks okay. Sorry. Sorry about that, Ramiro. Yeah. No worries. Could you tell us a little bit about yourself, please? And then we'll talk about Okteto after that. Yeah. That sounds sounds good. Well, my name is Ramiro. I was originally born in Mexico. I grew up in in Guadalajara. And right after school I went school there for for computer science. Right after that, I I moved to US. I've been living in The US for about, oof, eleven, twelve years now. First in Seattle.
3:53 I I used to work at a at Microsoft there. I was part of the Azure team or as it was called back then back then dot net services something. But ever since then, I've I've been working on dev tools, which was one of the one of the luckiest things for me was I ended up right after school working for Azure, building, you know, services and dev tools. From there, moved to Bay Area, joined a startup that a couple of my friends started, Elastic Box, a few years ago, kind of the DevOps puppet space. And since then, I've
4:22 been working on on different companies and all around dev tools. I work in Elasticbox. I work for Atlassian where was part of the team that was building hip chats and a bunch of other internal things. And then about two and a half years ago, three years, I decided to quit my job. Two of my closest friends, Pablo and Ramon, who were working at Docker and Gmail at the time, we always had to quit and sort of Ted on just because we were we kept seeing this all these problems around, you know, companies building teams building microservices
4:54 on containers, on Kubernetes, and we kept seeing that they were having all these awful problems around not being very effective and a ton of friction. And that's how we started Okteto. It was first an open source project and slowly kinda started to take a life of its own, and we ended up with a company. Now we're, like, busy funded and and building this this cool platform. Awesome. That's a really great backstory. There's something really great about building developer tooling. Found I've always been myself slightly, you know, pulled towards that. I don't know if it's a sector or an industry or
5:03 Motivation Behind Okteto: Solving Cloud Native Dev Friction
5:29 just tooling in general, but it's very rewarding to empower and make developers more efficient and happier and just get rid of all that toil and pain from developing applications. Really good thing to be working on. So Oh, no. %. That's always been every team I joined unintentionally, I always been that developer who's always like, trying to improve. Like, I remember I joined this team with with I won't name them, but I joined the team and it was like, what? There's there was like, at that point, no CI, no process. So I was I was spending
6:01 a lot of nights kind of for fun, like, setting up, you know, a CI server, validation for pull request. It was always about I just I just enjoyed kinda, building these these tools to make make my team more effective, have them struggle less, and I don't know. It it comes with my nature. I've never been able to avoid it. Even even when I at some point, I was like, I'm done with dev tools. I was gonna join Atlassian and went to this chat product, and I ended up building dev tools behind the scenes for my team. So I I
6:28 do like it. I think I think as you said, there's there's something really cool about being able to empower developers and and really help. You know, like, good tools really multiply a team's effort. That is something I've seen. Yeah. And that is something that we're trying to to replicate with Okteto is is just make people as as efficient as they can because I I do believe that, you know, we can build really cool stuff, and and developers have passion to build and change the world. So giving them tools to make their lives a little bit easier
6:54 so they can focus on their goals and not on this low level kinda, like, infra deployment kinda issues, it's super rewarding. Yeah. Definitely. I I I think I'm the exact same kind of developer as you. Every team I've went to is, like, I just love finding points of friction and trying to automate them away or provide tooling to get rid of them and stuff like that. So you can tell just by that, I'm very excited about looking at something that, you know, to the quote from your website, I think it's great. Empower developers to innovate and deliver
7:24 cloud native applications faster. I would like to do that personally, so I'm looking forward to our demo today. Okay. Let's do you wanna if I ask you what Okteto is, do you wanna talk about that, or do you wanna dive straight in? Will we do both? Let's go. Let's dive straight in. I think the best the best way to tell you what Okteto is is by by you seeing what we can do, and and we can always just stop in the middle. And if anybody has questions, we can ask them answer them as we go, I think. Of course.
7:40 Okteto Cloud
7:52 Yeah. Definitely, if you are watching just now and you want to ask any questions, drop them straight into the YouTube chat. We will do our best to tackle them as we go through our little demo today. This is Okteto.com, the homepage. There's loads of nice cool things here for you to flex through, but we are gonna dive straight into the documentation for today. We will be working through the quick start guide, taking a few little segues as we go to look at some of the features that Okteto provides to you. So to get started, I am going to register
8:02 Hands-on Start: Okteto Cloud Dashboard & Login
8:26 for Okteto cloud. Log in with GitHub. Oh, it popped up over here. That's always fun. There we go. Okay. Ramiro, it is now yours your chance to shine. What am I looking at, and what is Okteto? Right. So that what you're looking at is is what we call the developer dashboard. When you log in to Okteto, Okteto is a platform that gives you self-service access to Kubernetes. One of the first things that we wanted to kinda, like, build was this management layer on top of Kubernetes to automate all the things that developers need to do to work. So
9:17 when you log in, the first thing that happened is that we already created a namespace for you, applied a bunch of, like, network policies and and other types of policies. We create an account for you, and we put you in a quota. So at this at this point, you are ready to start. You could download your credentials. You can directly deploy your dev environment on Okteto. And if you follow the the getting inside of the guide, that is what's gonna happen. And as you deploy applications, you will see that this dashboard starts to fill in with
9:48 your apps, your logs, these types of things. The idea here is that for, you know, 80% of your tasks, you're not gonna have to go back to the terminal. You could just see what's going on with your applications and your dev environments right on this dashboard. Okay. That sounds cool. So we have to get something deployed then. Right? Mhmm. I know it's kind of Yeah. That's how the whole thing starts. The first thing you do is you deploy your dev environment. We have a bunch of samples, or you can deploy from your own GitHub account.
10:00 Adding the Movies Repository
10:18 Okay. Let's deploy the Okteto movies application. No? Yes. That's our sample. So if you click on the other tab on the get get URL tab on the right Yep. That'll give you the the shortcuts to the sample. Of course. There we go. That's nice. Removing friction already. I like that. Now I should read the docs. I was just gonna click the big deploy button. Go ahead and deploy. I I know we're all we're all developers. We like to go faster things, so deploy. Yeah. I get myself in trouble whenever I do that. I mean, I
10:21 Deploying a Sample Application (Movies App)
10:48 don't need the docs. No. No. We'll just click this button. We'll do this. We'll oh, it's none of nothing works. Sorry. That's that's and, honestly, that's what we're trying to accomplish here is you should be able to use deploy without, like, looking anywhere else. And then when you get stuck, you'll find the docs. That's that's how I like my tools. Oh, definitely. I couldn't agree more. So let me try and speculate at what I think is happening here, and I guess maybe you can correct me if I'm wrong. But looks to me like it's CloneDeR repository. Mean, it's telling
11:13 me it's CloneDeR repository. That that is a given. We've got an Okteto build, which looks very similar to just a container image build of some kind with a tag and a directory that it's building. I'm assuming it's found a Dockerfile and the movies directory is built an image, and it is just gonna deploy that to this Kubernetes cluster that you have provided. Is that close? Yeah. Yeah. That that's pretty close. So when when you create a when you create an account on Okteto, some of the other things you have access to besides a q a
11:36 Okteto Pipeline & Built-in Build Service
11:45 cube cluster is that you also have access to a remote build service. It's a it's a service we're running on Okteto cloud. It's powered by BuildKit with some changes we made on top of that, and also a container registry. And the idea is kinda the same, reducing friction. You don't have to think about building the image. You don't have to think about where you're gonna push it. Okteto takes care of all of those things. If you look in that repo, you see there's an Okteto pipeline file. That is a file that you can use to tell Okteto how to build and deploy
12:15 your application. This case, you'll see we're building. You use Okteto build to use the Okteto build service, and then just a typical Helm upgrade. In this case, we are using the Git commit to ensure that we have a unique image. And this is one of the patterns you see in our samples. It's the idea that you deploy, it self contain, Okteto builds all the artifacts you need. And because you have a shared registry and a shared build service, you'll see that a lot of these things are way faster than local because now you're gonna take advantage of the
12:46 fact that it's running on the cloud. And because it's a shared service, you and your team are gonna kinda share, like, base layers of your containers, certain caches, and things like that to make your life easier. You click deploy, and it builds everything for you. Okay. Cool. What are the history lines? I'm curious. That That's that's interesting. That's part of Okteto. Besides Okteto Cloud, and and if you walk through the through the demo, you'll see it. There's a CLI that allows you to develop directly on the cluster, and that's what the Okteto Jaml is. It's a command that you run locally.
13:20 It will synchronize your code, keep your code hot loaded with your container so that dev part of the pipeline is just a way for you to give your team a hint of how to use Okteto. If you go back to the UI, you'll see there's a button that looks that says develop. It's that play button on the on the left. If you click on it, you'll see that the the hint pops up. So just, yeah, start development? Uh-huh. Yeah. It's still one of them. Okay. Do you want me to correct that now, or do you wanna cover anything else on
13:53 this screen? At least, like, the other things you see in that screen is when you deploy an application, Okteto integrates with cert manager to create, like, SSL certificates for your apps, and it's gonna give you a public endpoint. So, again, you don't have to worry about it. The whole idea is you deploy and you see your app. This is a live link that when you redeploy, it will get updated with your code, and it's something you can share with with anybody. It it works on the Internet. And, yep, we have this application. It's a multi service app used to kinda showcase where
14:00 Exploring the Deployed App & UI Features (Live Logs, Public Endpoint)
14:24 how Okteto works. There's a bit of a bug in that app that will as part of the of the getting started, we'll show you how to fix. Is that why I can't watch the equalizer too? Because I was getting quite excited there. Are we gonna fix it? Okay. That's that's that's really cool. I love And the other thing is if you click on the components of your application, you see the states and you see the logs live from the pod. So you don't have to go and run Kubectl logs, find the name of the pod,
14:52 and all those things. You can get it directly from here. If you if you were to have more than one container, you can filter by container. If you were to have more than one pods, you can also filter by pods. And, again, it's just about putting the information that developers need on a dashboard in front of of them so they don't have to go digging for these things as they are writing their code. Nice. I like it. You also mentioned I could yeah. There we go. I can download the actual KubeConfig if I want, and I can just work with
15:20 my development cluster directly. Exactly. Pretty flexible right at the bat. Okay. That is that is part of of of our vision there is, you know, dev developers use a lot of tools. Every developer has their own workflow. So for us, it's important to be able to integrate with everything else on the on the cloud native space. Like, you can download the credentials and you can use QCTL, customize anything else you want, helm charts. Just we just released an integration with Docker Compose. And and the idea is we want to empower and extend the developer's workflow, but we don't wanna force them in
15:57 a very specific path of, like, you have to rewrite your applications to have this or that shape. So we're trying hard to to do that and and giving you access to the Kubernetes namespace. It's a it's an important part of that. Awesome. So you said a few minutes ago then that I should click on the start development on one of these services. Is is that still where you wanna go, or should I go back to my docs and stop making up? Go back to the go back to the docs and and let's follow those. Alright.
16:26 Yes. So we've done this. So we took a look at the application. It looks great. I have the ability to install the Okteto CLI. Do you want me to do that? Yep. Alright. Okteto CLI gives you the kinda like the computer side like, the terminal side aspect of this. Run Okteto login to connect or main space. Yes, please. Yes. And I am logged in. Painless. Oh, yeah. So that has created a context and my local KubeConfig. So it's not active just yet, I think. Was that gonna be my other Yeah. Not yet. So run Okteto run Okteto
16:32 Installing & Using the Okteto CLI
17:23 namespace first. And then one of the things we do here, and that's why that command didn't work, is that Okteto gives you access to a namespace, not the full cluster. And and the idea behind this is that as a developer, we want you not to care about infrastructure. We just want you to care about your application. So we found, like, the namespace context. The namespace abstraction is is a good one for that. So you just do, like, get pods. Uh-huh. And then you have, you know, admin as your namespace. You can deploy whatever you want
17:53 there. We apply some policies to make this, you know, so you can play well with everybody else who's using that that shared infrastructure, but you should be able to just run your application and anything there. Cool. Awesome. Okay. So we've run namespace. We've got our we've now put down that config with dedicated against the service. I can now clone the movies repository. So is this is this already a kind of a fork and they're getting started guys? Like, there are two different ways to get started. Like, assuming if I clone this and run these commands locally, I
18:16 Starting a Dev Environment with `okteto up`
18:28 can just develop against the cluster. Is that different? Mhmm. Maybe I'm making this up now, but if what happens if I click to start development? Because my my interest is definitely peaked now. Click on it. That button is is gonna show you the the same instructions that the getting started will will show you. Okay. It's a it's a a way to tell people, hey. This is how you use Okteto. Because what what happens with Okteto and one of the things that we're doing that really sets us apart is the our our flow is you develop
18:54 you deploy your dev environment on on this cluster, so you have an application that's functional. And now you use the CLI to start developing. In this case, this example shows you how to develop an API. So you just run Okteto up, and that will transform this application into what we call dev your dev environment. Yeah. That error was just because I was using a I already had my config set to a relative path, which was never never gonna work. So that should be fixed now, hopefully. Yeah. Yeah. We have to do a lot of things on the CLI to to enable
19:36 those sort of things. It's it's not it's tricky. So what's happening now is you you earlier on the on the stream, you showed this Okteto dot JAML file. So what's happening now is that Okteto is using the information on that JAML to transform the existing API deployment into your dev environment. And transforming means everything from relaunching it with a different image. If you have a a special container with your dev tools, getting all your all your code, synchronizing your file, and forwarding some ports. At this point, Okteto open a terminal for you, and you are on the dev container.
19:42 Live Development: File Synchronization & Hot Reloading (Fixing a Bug)
20:16 Is that what I I did see my prompt change, and then I rang it Right. That's what it changed then. And if you look at the at the context and namespace, it's telling you where you are. So for instance, just dump the environment. And you see one of the one of the very cool things about this model is that you have the same configuration that your application has. So you have access to the same environment variables. This is running with the same identity that your application is running. So as you write code, it's gonna save you that step of writing
20:45 your code locally, then push it to Kubernetes, and then test it there. And instead, you directly, you know, write your code on your ID. Okteto will synchronize that to this dev container. You can then just run your process there and test directly in your cluster so that you know that your application works with all the other pieces that are still there, but they are still in what we call production mode, which is the same way that your application is defined. This is just a normal shell terminal. So if you run JARN install and JARN start,
21:17 you can just get the the API started again. Alright. I think it's Well, if you go back to the actually, let's do something. Stop stop that process. Do a control c, and go back go back to the browser and and hit the application. Okay. So we wanna hit the front end. We wanna click on this link. K. You see that now that the API is not the application is not loading. That's because the API is not running. So now go to your dev container and use to start the but do join dev instead of join start.
21:57 Please join dev. Nope. It's open open your ID or or yeah. Or that. Beam might not be there, and that's on purpose because we want you to use your ID. Oh, Jarmstar. It was Jarmstar. There we go. So that will start, in this case, the application with NodeMode so so that it will hot reload as you make changes. So if you go to your ID and make a change on the on the API code, Okteto will synchronize the code, your process will hot reload, and you're gonna be able to see the changes in real time.
22:36 So modify the code locally, and it's gonna be propagated to my dev container, which is running on a Kubernetes cluster on Okteto. Okay. So for instance, the bug I was telling you about is if you go to the API and go to the go to the main file there, I think is the server JS, and then just navigate through the code and find the call to API watching, which is the next block. Yep. So on line 43, this application has a bug. I'm gonna give you give it away, which is there. It's calling the movies collection instead of the
23:13 watching collection. So before you make any changes, go to the browser and and reload your application to kinda get it get our baseline. So you will see that both lists, movies and continue watching, are the same list and they should not be. One should be the movies available, the other should be the movies that Cindy is watching. And Cindy is our kinda, like, our our persona, our default user. That's a funny story, but I'll save that for later. Okay. So what Okay. What what we're just testing is if I update this to be the watching collection and hit save as we
23:48 go back Uh-huh. We should see that change happen at our front end of our application. Exactly. So just go back to the go back to the front to the browser and reload. Look at that. And there it is. What am I watching? And if you go through your terminal, you'll see that Node one detected a file chain, reloaded. And the cool thing about this is that you're testing your changes without having to rebuild your containers and having to run, you know, a local mini cube or any of those things. It's just about you focusing on your code, building
24:19 your application, and Okteto takes care of all the other things underneath. Very cool. I I like that. How is it syncing the changes from my local directory? Is that part of the Okteto app? Exactly. The Okteto up is doing that's, like, three three stages. The first one is it's gonna find the deployment. And what do you open Okteto.Jamin to? Can explain the the different things it's doing or maybe this. This one or the pipeline? No. Exact. So the first thing you have is name. That is what's telling Okteto which deployment you're gonna target to turn
24:37 How `okteto up` Works (Okteto YAML, SyncThing, Port Forwarding)
25:00 into their environment. In this case, it's a deployment called API. You could also specify a label, selector, and more complex things. So the first thing that happens is Okteto up will find will go to the cluster and find a deployment named API. Then we have a a mutation webhook that will apply certain overrides. In this case, it's just a starting command, but you could override environment variables, inject more files, have extra secrets, like, change your image, anything you need to develop. So that's the second thing it does. It's redeploys your your pot, applies this dev overrides,
25:38 and as it boots up, then it's gonna do two more things. One is it's gonna start as a synchronization process on your local machine, and it's gonna inject another synchronization service on your container. We use an open source project for this called SyncThing, and that is what keeps the files in sync both ways. If you modify a file on your local machine, it will be synchronized to the container. If you change a file on the container, it will sync be synchronized back into your local machine. If you do like a PSOX on either your local machine or the container, you will
26:12 see these processes running. Well, I mean, I I need to know to this. Yes. So that's an the source directory of the API package dot JSON. So look at that. There is. That's pretty cool. So that one's pretty useful for instance when you do a join install because then it synchronize your log file. And there's a special file there called dot s t ignore where you can configure if you don't want things to be changed. Like, if you if you want certain files, like, you don't want your note modules to be synchronized. You don't want your dot kit to be
26:51 synchronized, and you can add whatever you need there. That's, like, super flexible. We create a default based on the on the language of your of your repo Mhmm. But you can add whatever you want depending on your application. You know, 10 files, static assets you you only want on your container or, you know, test results you only want locally, things like that. Cool. Okay. That makes sense. I I understand that. So you said I I can run a PS locally or NS over And and there's our same thing processes here. And again, I guess I just do that locally.
27:25 I'll see the same thing. So there can be some of feature. And there's also the the update remote, we also start an SSH server. So this time that you're seeing is actually going over a mix of QCTL port forward and an SSH tunnel so that you can also forward any port you want from local to remote or vice versa. So for instance, right now, you see that Okteto YAML is forwarding port eighty eighty. You could go to local host eighty eighty, and you're gonna hit the the API. What's more fun is that you can also
27:58 use that to forward the port of your debugger, and then you can do things like debug remotely. I'm sorry. When should I run that? Am I working? The process first. Alright. Okay. Okay. So sorry. What was the next step? I got confused there. I got too excited to know what's going on. Go go back to the I think where the way you run go back to the Versus Code. I think that's where we're running the or no. It's here, actually. No. Just do the darn star there. Yeah. Oh, yeah. I I I turned that off. Okay. So we run you
28:28 on start again. Uh-huh. And then open a local terminal. Okay. That's that's cool. Okay. I like that. I think you have to do slash API and slash health or something. But, yeah, that that enables a little really cool scenarios because you can do forward and reverse proxy tunnels. So you can do, for instance, if you have a database running on Kubernetes, you could have it piped through Okteto, so you can still run your local I don't know, like the MongoDB IDE. Or if you want to run debugger, like this project comes configured to use debugger.
29:05 So you could start the node process on a debugger, and then Versus Code debug and do step by step debugging on the ID with a process that's running on the container. And and all of this goes back to same idea of we wanna make it easy for developers to develop the same way they do locally, but expand that to, like, an entire namespace or an entire cluster in in certain scenarios. And, yeah, and one cool thing about the the Okteto CLI is that today, you're using it with Okteto cloud, but, actually, the CLI works with any Kubernetes
29:38 cluster. If you have your own, if you have mini cube, k three s, any of those, it just works. As long as it's Kubernetes compatible and you have a cube config, it will just use that. So it's something that you can use even if you don't wanna use the rest of the of the platform, even if you don't wanna use the cloud or we also have a self hosted version of Okteto cloud that you can install on any cluster. If you don't wanna use those things, you can still benefit from this flow of dev container, sync your code, hover load
30:07 super fast. So that's a that's something that a lot of our users really, really like as they build things in MinIQ, in p three s, or anywhere else. I personally believe that people should not be running clusters and use, a remote thing, but different developers have different workflows. And, you know, we all work with what works for us. Okay. I just wanna make sure I understood that right. I can run Okteto up with a cube config pointed to my own cluster, and I get all of the same ability to develop my application and Versus code and
30:38 do the debugging if I want with the shared ports and sync thing. But I I won't get any of this, the UI. Right? But I I I Exactly. You don't want the UI. You don't get the build service. You don't get the automatic ingress creation. All those things is what the platform gives you. Well, the core dev experience of dev environment on Kubernetes, sync my code, port forwards, terminal to the container, all that works on any Kubernetes cluster. Okay. But I don't use the UI. I haven't given you any credit card details. I'm assuming there's a a nice flexible free
31:12 Okteto Cloud Pricing (Free Tier) & Deployment Options (Any Cluster)
31:14 tier there for anyone to sign up and use. But what what you're using right now is the free tier. That one will let you create up to, I think, three namespaces, and you can run up to 10 parts per namespace. So it's a it's pretty flexible. And, yeah, here is it's enough for you to build an application. And and what else it has? You have us to a build service, to the registry. There's also, like, secrets you can create if you want to have a, like, m bars overwritten during deployment time. And then the there's a pay tier, which gives you
31:47 more CPU, more memory, and more pods in case you have a a bigger application that doesn't fit on on this tier. It's that that free tier, I think, will be great for many small teams or even solo developers. So they just don't really want to worry about any of this stuff, and they can get started super quick. So That is that is the yeah. That is the idea with with when we were building everything has started with the open source project. And as we show that to people, the CLI, one of the first things that a lot
32:14 of our friends told us was, this is great, but I don't wanna run a cluster. I don't wanna run a dev cluster. Or someone who was, like, in IT was, I don't wanna give my dev team a dev cluster because they're gonna keep, you know, harassing me with, like, tickets and things to do. And that's where the idea to build this came to us. It was like, okay. Maybe we can build this other component to give you self-service access to a cluster, apply all these policies so it can be shared among a team so I can, like, override your changes and
32:42 things like that. And that's how this other product came to be. And another thing also is that we also have a self hosted version of Okteto Cloud. So if you have your own cluster, it's only a home install, and it's also it's free for teams of up to three developers. So for small teams who have their own clusters, you can just get the same experience you saw today on on your own cluster, which is it's also useful if if you need to connect to VPCs or running a specialized hardware. Yep. We have a lot of users that
33:10 run Okteto on, like, clusters with GPUs, and then they do, like they run their machine learn machine learning models through this kinda, like, remote terminal. And it's kinda a very cool very cool way to to mix Kubernetes and, you know, the power of having the cloud with, like, all the CPUs and still get this really fast dev cycle. Awesome. Alright. We kinda went on a little tour there. Let's jump back to our docs. Let's see if it seems there's anything that we've missed, and then we can kinda take a look at maybe some of those other
33:42 features that Okteto brings to the table. So we did do the Okteto up. There's the information about the fail synchronization, the container ports. We did look at the environment variables. We've seen all of that stuff being done. We did do this. I think we well done. You went through the the getting started guide without even having to reference it. That's pretty sweet. Alright. I have done this demo once or twice before. Maybe. Alright. Well, let's pick a couple of more things from this left hand sidebar that you think might be interesting to to talk about. And
34:14 then I know that you've got another demo that you would like to do for us so we can take a look at that after that. Right. Well, one thing that you already mentioned is the the Kubernetes credentials feature, is you can download the the kube config through a UI or through a command line, and that enables you to use Okteto with pretty much any whatever your favorite dev tool is. Anything that doesn't require you to have access to the full cluster, so anything that works a namespace level will work with Okteto. So Lens, k nine's,
34:24 Integrating with Other Kubernetes Tools
34:45 customized helm, QCTL, any of these things. We've partnered with companies like Chaos Native, Litmus Chaos, works in Okteto. You can run your case experiments there. Things like that. That's one that's one thing that's really cool. The other is the the namespaces feature, which is, like, you can create more than one namespace. You can do it directly from the UI. There's a button there, new namespace, and you just create more namespaces. What I like about that is that Okteto manages everything, the namespace creation, the permissions, all those things are just for you. But you can always share namespaces with anybody
35:21 else. One of the cool things about training spaces is that right now, you did Okteto up on the API, but you can actually do Okteto up on any service. I you could share your namespace with me. I can then go to Okteto up on the front end, and then we can be working together, maybe working on new API or a new version of the application without me having to wait for you to be done and send me a PR, and they have to start the thing myself. So even if it was the sharing namespaces enables a really cool flow. Or even if
35:52 you just want, hey. I need help. Here. Let me share my namespace, and then you can see the logs of my pods. You can see what I deployed. It's a it's a really interesting way to especially for teams that are remote Yeah. And where it might be hard to get someone to kinda, hey. Come over to my desk and see what's going on. It's a it's a simple way to to kinda get that started. So that's that's something that I I use a lot personally, and I I like it I like it as a as a
36:15 way to, you know, make my team I am going back to the same theme of making the team more efficient. That's something that's really cool. Do you develop Okteto on Okteto? Yes. We do. Yeah. We use it for for everything. Like, it's as and it's getting back to what you were saying. One of the one of the best things for me about building dev tools is that I'm a developer. So it's something that you're building for yourself. Like, I use all those features. Like, every each of these features came either because we had a need
36:46 or someone someone from our community, hey. I wanna do this other thing. And and that's a really cool way. And I I don't know about other spaces, but on DevTools, it's a really cool thing that I know, hey. This is something useful because I would use it. And if this is the beginning, that helps a lot to kinda keep you keep you focused and motivated on on those things. Yeah. I I think that's just great advice to get to anyone that's thinking of starting a a company or building a product. Like, if you're solving a problem that you have, there's a good
37:13 chance that, a, you're gonna be invested in it emotionally as well and continue to work on it even when things get tough. But you're also solving a problem that, you know, exists and hopefully other people have. And I think, yeah, just working in that space, working it's really difficult to say, I wanna go fix this problem with this person over here if you don't have that problem. So, yeah, a really good thing. Yeah. It's definitely and you you're right on motivation. It and it's so much easier when a developer comes to me and say, hey. I'm trying to deploy this Go
37:39 app, and I have this issue. Like, oh, yeah. Right. Let me help you, and we'll debug it together. And, yeah, you're right. We're missing this feature, and then we'll go and implement that. And then we'll go back to this developer and show him the feature and and should be very excited. It's a it's a really nice flow that that I like a lot. So it's it's part of why why I'm on this business. Definitely. Another cool thing, if you wanna take a dive, is go into the deploy methods on the left. Yep. Mhmm. So that's that's that's something. And then go
38:00 Deploying with Docker Compose (Voting App Demo)
38:08 on git. Yep. So one one thing we didn't cover and that's quite powerful is that Okteto allows you to deploy when you click deploy, you can deploy an application from a Git repo, which you already showed. What you can also deploy, we have a catalog of applications that's powered by Helm, so you can deploy one click deploy applications from Helm or just from your terminal. When you deploy it from Git, though, you have access to a lot of other features to customize your deployment. Like, if you could click on Okteto pipeline, this is it's kinda similar to the way
38:40 CICD works where you can define a script on how to deploy your application, and, you know, there's a lot of things there. If you don't have a good pipeline file, Okteto will try to guess what your repo looks like and deploy it. So if you have a ham chart, it will do a ham install. If you have a k h dot JAML file, it will do kubectl apply. If you have a Docker Compose file, it will do Okteto stacks. And if it can't figure it out, it'll tell you, hey. I don't know what to do. But you can always add this kinda,
39:09 like, magic file, Okteto dash pipeline, and you have full control. Some of our users do things like provision third party services, provision cloud services if they need, all the way to, you know, like like movies, which builds and deploy the app. So that's a really cool thing where it opens the door to more complex deployments. You know, applications have different shapes, and sometimes you need to provision other resources. So that is a cool way where you can extend Okteto to do other things. Nice. That was one of the things that actually, you know, had popped into my head as
39:40 we were playing with the movies example. I was like, oh, okay. There's a, like, fatal pipeline that can defend all these steps. And then when you showed me the the dev one, in my head, I was like, well, it looks and feels like a Docker Compose file, but it's not. But, I mean, I could just use a Docker Compose file, which, you know, hopefully Teams and and stuff like that have been using it for a couple of years now. They're not losing that configuration. It's it's not going anywhere. They still have the flexibility to use that and deploy
40:00 Deploying with docker-compose.yml
40:04 it using Intel. And Yeah. That is that is actually one feature we just released last week. We kinda still release it. We haven't made any announcements. And and thanks for bringing it up. It's really cool. We took the team took the compose, which is now open source Yep. For people who don't know this, and we implemented the entire spec to do a translation from compose to Kubernetes. Because as you said, a lot of teams are still using compose for development, and it's great. It's a really easy way to deploy your application and and just kinda describe it and see
40:34 it. And a lot of the peep the teams that you were seeing on TETO, they didn't like Helm that much or they were not as used to Helm than they are to Compose. So we ended up implementing this this feature. So if you go back to the to the to the Okteto UI just just real quick to show you a quick demo. Click on deploy and go to from compose. And that is a very simple example, but you see that is an actual compose file. Mhmm. It's a it's a hello world. You can put any compose file you want there.
41:07 You can get, like, the movies app and and things, and then just deploy it. And Okteto will translate from Compose to Kubernetes, create all the things for you. And our goal here is that anyone should be able to if you have a repo with a Docker Compose on it, you should be able to click deploy, put your repo, and it would just work. If it doesn't work, you know, we have a Slack. Go join the Kubernetes Slack. Go to the Okteto channel and and talk to us, and and we'll we'll work on this together. Alright. Well, we we did actually get a
41:39 comment from Vignesh who told us to give it a try with with Docker Compose. Are we feeling brave? Are you happy for me to pick a Compose file? Yeah. Yeah. Yeah. Of course. One one that I like to demo is if you if you go find the Docker movie, the voting app. Do you know about that? Do you know have you seen that demo? Yeah. Couple of years ago, remember the movie voting app. So But that is the that is a prototypical, kinda like Docker Compose demo. So just, you know, you go to GitHub. How can I
42:10 send this to you? Do we have a chat here? This one here? Well, that one. Yeah. You got it. Just just copy the URL. Let's let's see if it works. Alright. Let's go to URL and go to Chero. Uh-huh. And just create a new nice business for for fun. Just for fun. Okay. Yeah. We will pile up on things. Okay. We'll call this voting Rawkode. I had to apply. We're gonna do Go from git. Go from git, and then just drop in the URL? Uh-huh. Okay. So this has no Okteto pipeline. This is just Nope. A docker compose
42:50 dot We don't we don't own the repo. That's that repo is a it's part of a docker samples repo, so nothing there for us. And just hit deploy? Uh-huh. K. We got a clone detected the Docker Compose, and it's been an Okteto Stack Deploy. Okay. We'll see. I'm a little bit nervous. I haven't been with testing. Funny one funny thing is that one of my cofounders and co maintainers, Pablo, he he used to work for this company called Tudum that Docker acquired, and they were actually the ones that creating the voting app samples. It was
43:32 a nice kinda full circle of my friend working that in Docker, and then with our company, now we're building this this compatibility layer. But that's the core idea is that is we map the we map the resources to Kubernetes, you know, with the idea that as a developer, for a lot of these things, you don't care. You just compose good enough. Therefore, you're composed. It'll work. You can still use all the other tooling we showed today, Okteto up, CLI, all those things. But with the added benefit that you don't have to keep these two different manifests. Right? If you
44:04 have a Compose, just use Compose as you get deeper into Kubernetes and you start using Helm, then you can migrate to Helm or other things. But for a lot of people, Compose is a really good format, and it just works for them. So it's it's something that we're very excited that even this is open source. It's it's in the CLI. So it's something that we're very excited to to see if people like, and then maybe it's something we can push for other other teams or products to also start using. Yeah. I don't know if the output here
44:31 Remote Builds with BuildKit (Not Needing Docker Locally)
44:33 is, you know is is it BuildKit? Because it doesn't look like a standard Docker build, so I'm assuming. It is it is BuildKit. So we we fork BuildKit, and we added some extra code to make it more multitenant friendly. But at the core, it's BuildKit. Like like every other you know, we build on top of open source. Yeah. We're building on top of BuildKit, Container Registry. We use engine x ingress, cert manager, Kubernetes itself, mutation web hooks. And using BuildKit is also really cool because that allows allowed us to be compatible with any Dockerfile. Like, you don't
45:06 have to do anything special. You can even take advantage of all the cool things that BuildKit gives you, caching on different front ends, all those things. So it's a there you go. It's it's getting there. Yeah. I I think BuildKit is just one of the most exciting things we've had in a while from, like, in a container buildy docker landscape. It's amazing. It's amazing, and it's something that I I don't know what I mean, more people should be using it. It's really it's really, really powerful, and it's it's compatible in a Docker file. And Yeah. So the cache has experimental flag right
45:37 now. Right? I think you you have with at least with the Docker CLI, you have to explicitly enable the experimental features to be able to have to put a a header. Right? But definitely something that I don't know what the plan there is, but it's something that anyone I highly recommend looking to it, especially if you're building if you're building node images, just caching the node modules saves so much time on your builds. Yeah. Or caching the the other the the binary the binary the compiled folder on node. Same thing on Go. It's it's really cool. There
46:08 we go. Let's see if it works. I have all green. There's an endpoint there. There we go. Cool. And then I'll go back, and there's a results service that will show you your vote. Hold on. Let me click. I think I'm gonna vote once. One per person. But if anybody were to log in, that's a public endpoint. Anybody can log in and and see the vote. But Damn it. My vote went to cats. I'm gonna hold it back then. Okay. A cat person, so yes. Like cats and dogs, to be fair. I I love all animals. I'm actually surrounded by
46:52 I've got chinchillas over here, five of them. I've got a free free roaming ferret that lives in my office with Oh, wow. Daggers in the room. All animals are welcome in here. That sounds nice. Awesome. That that was a nice little surprise. I had no idea that we could just throw Docker compose at that. I mean, I have so many just like example repositories that I keep on GitHub with Docker compose files and and just being able to drop that URL in here and have a nice visual representation. I think that's so so important for people.
47:23 Like, you know, a lot of people aren't indoctrinated into Kubernetes sharing containers. They've not been doing this for four years or five years. They've been doing it for weeks or months. And these UIs these GUIs are are just there to make that easier for these people and get the logs out of it and work with it and browse the URL without having to worry about put forwards in that. I love UIs like this that solve real problems. Yeah. That is that is for me part like, super important is is the ease of use, get you get you going
47:50 and, like, the best thing for me is when people tell us, hey. We're I'm not even thinking about, you know, Kubernetes. It's a great technology. I'm a big fan. I've been involved for, like, many years now. But I like it when they become invisible. You know? It's like, I don't wanna think of Kubernetes. I wanna think of my application. We we had a one day, we're chatting with Kelsey at Hightower, and I was his advice was like, you need to make this invisible. Like, People care about their apps. Kubernetes is great. It solves huge amount of
48:17 problems, but what we care about is what our apps can do. So that's what we're trying to do here is is to speed you up so that you can get to the app phase of your work as quickly as possible and then build forwards endpoints. Infrastructure itself should just be a giving. It would just be there for you and just change your code, see the results as fast as possible, and and be there. Awesome. We actually have a a comment from Sangam who has suggested that you don't even need Docker installed Yeah. If you have the That's
48:49 true. CLI. That's a good point, Sangam. That's Sangam is our one of our oldest, dearest members of the community. Yeah. You're right, Sangam. With Okteto built, because the the build service is running on the cloud, whether it's on our cloud or if you install Okteto on your own cluster, then the builds happen remotely. So you don't have to run Docker. Like, I I got Mac Mini and one of the new ones, m ones. I didn't even install Docker on this machine. I've been using Okteto build. We it's compatible with the CLI and because it uses doc it uses built kit, it
49:19 can build anything. So it's a yeah. It's another small benefit. You're surprised how many people just mentioned that, hey. Not having to run so many things on my local machine makes them so much happier. And and, you know, especially if you if you're using hardware that is not, like, super powerful, like, you know, not everybody in the world has, like, a map map and put all with, like, you know, god knows how many cores at this point. Like, all people are working on on more models machines. Yeah. So being able to offload a lot of
49:45 that to a cluster makes their life significantly better. Yeah. I I I I'm already fully believing in remote development server approach. I think I'm done of spending eight hours a day listening to the fans on my MacBook. I do not want to hear my fans anymore. I just want Me too. Me too. And my editor to run. Hopefully nice and quiet and just focus on the code and just offload all of this computational heavy stuff like building the images and node modules and I'm a Rust developer so I need to say I watch Rust build times for fourteen hours
50:21 all the time. Like, you know, there are machines that are built to do this really, really fast, and they're not my MacBook. They're not my local Linux machine. They're they're in the cloud, and they're much better suited. So Yeah. And then I love that you can use to spin them up and where you're like, will automatically spin down your environments after a few hours that they've been idle. And that's I love that because it's like, I didn't have to think about cleanup. I just launched my, like, my my like this. I'm working my application. I'm building things. When I'm done, when
50:48 I go do something else, it will spin up spin down. I don't have to worry about that thing being running all the time. I don't have to worry about pulling it up. When I'm done, just try, redeploy, and I'm I'm much happier that way. One less thing to worry about. Oh, yeah. I I I couldn't agree more. Okay. Let's let's let's get back to our our demo. I kinda forgot for a second. We're actually live streaming. Oh, so so one one more thing I wanted to to to show you. I can show you. I prepared
51:11 Preview Environments (CI/CD Integration)
51:14 a demo. We have an early I like this. We have an integration with GitHub. Right now, GitHub actions is actually down. I've been looking at the status page. But if you go to the docs, I'll I'll show you. One of the one of the things we're exploring here was, now that you have your pipeline and you have your dev environment defined in Okteto, why you you can also take that and use it as part of your PR process. So if you click on the preview environments menu on the left and, yeah, just go there. The idea here
51:46 is you're using the same pipeline, the same flow as a developer, but now you're gonna attach it to any PR. So the idea here is I have my code. I send a PR. GitHub will run an action. We'll create another namespace. We'll deploy my application there. We'll send the link to the PR, and then anyone in your team, anyone that you're working with, they can now see the code, but also see the application running with your code on it. It's something that GitLab does and that Heroku kinda pioneered that I I really like. So we we brought this
52:19 into Okteto with the idea that now you have a dev environment and a preview environment with the same configuration, no extra work, and and it works really well especially with GitHub instant actions. If you scroll down, you'll see that the action is is very it's quite simple to to deploy. It's just log in, create namespace, run your pipeline, and then get the URL back to the to the PR. And it's something that we use internally a lot. Like, every time we do, like, for instance, a change in a website, we generate a preview environment, and then everyone
52:52 on the team can look at the website, add comments on the text, on the looks, on the color, on the wordiness. Yep. And that's a cool way to involve people on your PRs who might not care about the code or they might not be experts on the code, but they are experts in the results of your code. And that's something that we're pushing pushing on. It works on GitHub. It works on GitLab. We're working on integrations with Bitbucket, with CircleCI. It's it's just a script, so you can Jenkins, it can work everywhere. Mhmm. But on
53:20 on GitHub, the I I really like the actions model. It's a it's an easy way to integrate, and then everything goes into your repo Yep. So that everyone can look at it and and just benefit from it. So that's another cool thing that we're they're kinda encouraging people to to try, see if they like it, see if it's beneficial. And if it is, please let us know so we can build more of that. Do you want to try it, or do you do you think actions being done just means it's not gonna work at all? It's
53:46 not gonna work right now because I think GitHub actions yeah. It's still on green on yellow. It's still degraded. So I promise I I set up a report last night. I was working on a on a really cool demo of Compose with GitHub actions, but it is down. But I'll I'll share the link later on Twitter if anybody's interested to try. But the easiest thing is go to the docs, copy that action, and you can use the movies app for that or your own. Even even better. Alright. Well, yeah, I'll make sure the I'll get the URL from you. We can put
54:19 that into show notes. And when anyone watching, not live, they can definitely check that out and have a go at it. It's definitely something that I'll be keen to try it and and see how that works. Very nice integration there. Alright, Ramiro. Is there anything that we haven't that you think will be interesting to show the user before we finish up today? Mhmm. Last last thing is on the left, click on the developed on Okteto button. That is something that's my personal favorite. So I wanna I noticed to show it to the world. But the movies
54:40 One-Click Deploy (Develop on Okteto Button)
54:52 are quite straight. So When you have a a repo that works with Okteto, you can add that button to anything, a read me on GitHub, a documentation on your internal page. When When you click that button, that will automatically deploy an application on Okteto for you. You you just put a link to the URL of the repo and instructions are below, but it's it's something that if you go to the, like, the movies repo right now, you can just I could yep. And so it's just cloud.okteto.com, and then it's got, like, a hash symbol and a deploy with a repository that we
55:27 can take a look at. Mhmm. This part of the story, and you can also pass the pass the the branch if you if you want a specific branch. So it's something that some of our early adopters, especially in the open source community, are using as a way to give their give their maintainers or contributors a one clear experience of, like, click here and get the application running. And And once your app is running, then you can develop whichever one way you want. But it's a it's a nice way to replace, you know, like, a long with many steps instead you qualify
55:57 it on on this on this repo on one click, and it just runs. Very nice. I like that feature too. Alright. I think we've got one question, and then we will we'll wrap up for the day. So let's pop it back here. Russell is asking let me just push this up here. Are there any Okteto features for allowing multiple people to develop their own version of the same service at the same time, or is that outside the scope of what Okteto offers? Yes. That is that is part of the experience. There's two ways to do that. One
56:11 Q&A: Team Development & Upcoming Divert Feature
56:31 is when when you show the namespaces, every developer gets their own namespace. So you could have you know, I can have my my namespace with the movies app. David has his. And when we develop, they are completely isolated. So you just deploy your own copy. We're also working on a feature. I'm gonna add this. My my dev team might might hate me. But no. I'm kidding. We're we're actually looking forward to to share this with the world. We're getting a new feature where you're gonna be able to deploy kinda like a canonical version of your application,
56:59 let's say your integration environment, and then you're gonna be able to develop only specific services. And we're gonna use a a mix of service mesh and networking rules that let's say the movies app. I have my API. You have your API. I'm gonna have a unique URL. So when I go through my URL, that request will hit my API. And when you go through your URL, it's gonna hit your API, which for applications like the movies app make doesn't make much sense. But if you have a big application with twenty, thirty microservices, some heavy infrastructure,
57:30 that'd a cool way to to interact more like in a team layer. Stay tuned. That will come out soon. We'll be posting a blog post on that, but it's it's gonna be called divert because you divert traffic from the main to your app. Yep. And and, yeah, definitely, team collaboration is is an aspect that we're very interested in in improving. That is where we started with, like, the namespace per per developer. But, yeah, we're only gonna get started. So any feedback on that, any any comments, I would love to talk to you all. I'll join the Discord, and we have a a
58:03 channel, Okteto, in the Kubernetes Slack. So if you wanna talk about this later, you wanna share your experience, please please join us. I would love to talk to all of you. Awesome. Well, on that, Rumiro, I'll just say thank you very much for joining us today and and walking us through Okteto. It's a really cool tool. I love the frictionless approach to what is a really annoying problem getting bootstrapped or started on projects and getting productive as fast as possible. And Okteto seems like a really cool tool that exposes a whole bunch of features to make
58:16 Conclusion & Community Call to Action
58:33 that easier for people. So thank you for your good work, and I hope that a lot of people watching enjoy it and will check it out in their own time. Rawkode, have a wonderful day. Thank you again, and I will speak to you soon. You, David. It was fun. Good seeing you all. Mhmm. Bye. Bye.
Technologies featured
Meet the Cast
Stay ahead in cloud native
Tutorials, deep dives, and curated events. No fluff.
Comments