Simplify building applications for Kubernetes
Speaker: Robert Sirchia
Summary
In this talk, Robert Sirchia discusses simplifying the process of building applications in Kubernetes using Epinio, an open-source tool. He distinguishes between building applications for Kubernetes and building applications in Kubernetes, emphasizing the importance of having "just enough" knowledge about Kubernetes for developers. Epinio streamlines the deployment process, allowing developers to focus on their code without worrying about containerization.
Transcription
Give it a second. Well, you are here because I'm going to talk about simplifying building applications for Kubernetes, right? And it's very, very difficult for me to do this because really able to talk about how easy Kubernetes was earlier today, but that's that's not there here nor there. So, quick agenda. I'm going to try to keep this down to 20 to 25 minutes, but I like to talk. My kids and my wife will tell you that. So let's get started.
This is me. My name is Robert Sirchia. I am the head of community evangelism. I got promoted recently. I specialize in Cloud native development, because I was a developer for 20 years and I like sharing what I've learned. But in case you were wondering, this isn't me. And it's okay. All right, I get it all the time. But if you want to see this movie, it's actually a good story to actually learn where Sriracha came from. So to get started, I want to set some context about what I want to talk about, and there's two things I want to talk about. Are you building applications for Kubernetes or in Kubernetes, right? Because those are two different things, right? So if I look at it, if you're building applications for Kubernetes, you're doing stuff like Longhorn, Cilium, Inlets. There's a list of them. In fact, if you go to landscape.cncf.io, you can see all of them, and that's what engineers do. They do a fantastic job of building applications for Kubernetes. But I'm going to talk about building applications in Kubernetes. And these are developers, right? People who solve business problems with code. They containerize their app. And it's not saying that they can't cross over. If you've done one, you can't do the other. That's not what it is. But we're just going to focus on that to set the context: building apps in Kubernetes.
Secrets about Kubernetes. It's complex. I'm not gonna lie to you. It's complex. We have hundreds of tools to try to make it easier, thousands of hours of courses. I know, I put some of them on. And it's still complex, and I still learn things about Kubernetes to this day. So let's talk about how much you really should know, right? And anecdotally, your mileage might vary, but if you're an operator or an engineer working building apps in, for Kubernetes, excuse me, you're probably going to want to have a deeper knowledge, right? But if you're a developer, right? You got other things to worry about. You should know Java, right? You should be able to write some great code. You probably need to know Kafka. You better know something about authorization or IM, and you gotta throw databases in there as well. You have a lot of other things to actually worry about. It's not just worrying about operator levels. And on top of that, you gotta worry about your business, right? The company you work for. They won't... I mean, you're pretty much an expert. If you work for a library science company, you better know something about libraries, right? How that works. Anyone know what the Dewey Decimal System is anymore? My wife works for a library company. I was like, "I don't even know what that is."
So, deep knowledge for those individuals who are building apps for Kubernetes or operators. But I like to say, just enough, right? So as a developer, how much do you really need to know? How much do you want to know, right? And I just say, well, just enough. Just enough to do your job. So I want to talk about environments because this is something that I see not only customers but community membership where I work. They do this quite frequently when they're modernizing their applications or to go into Kubernetes, right? And the first thing I want to talk about is your shared development environment. Don't be that person. Don't, don't be the person to start putting things out there, breaking it, breaking down the monolith, because you lock up your development environment for everybody else. That should be something almost sacred, right? It's your push to that next environment.
A local Kubernetes, if possible. Now I'm not pushing Rancher desktop, but it's great. But I also have a Podman desktop here as well. I've used both. Use a local distribution. Why? If you mess up, you can just start over. You can reset Kubernetes, and you're not reinstalling it where you would spend a lot of time doing it. Have something that gives you the ability to, well, just reset it, right? And both of these products allow you to do that.
And helm-ing back is very, very, very important. And why I say that is I've talked to customers, I've talked to community members, and I'll hold office hours and I'll get this conversation going about, "Hey, I'm still trying to do this, but I don't have it." If you can mimic your developer environment, your dev environment, to your local machine, do it as much as possible. And you still shared resources as you have now. You might not be able to do everything, and you might have to point something out, but have something as close to your development environment as possible running locally. Now you're not going to get everything. You're not going to get all the data, I get it. But if there's a way to do this, this saves time in developing.
Now, when it comes to development, you think to yourselves, can we make this easier, right? Is there something that we can put in place? As a developer, I don't want to know Kubernetes. Because ask a front-end developer, do they care about Kubernetes? No. "I showed up for a JavaScript conference and I was talking Kubernetes and not a single soul there actually cared and I was upset because they didn't care. I was like, how do you guys not love this as much as I do? They're like, as long as it works in every browser, that's all we care about. So, yeah, it was real. So we talked about this 'just enough' model, right? Like, just enough about Kubernetes to actually care. But if there was something that we can do, right, that we can just make it somewhat easier. Like, can we put something in there to just make it where developers just care about an easier interface, and it takes their code, that was it up there, and works.
Who remembers Pivotal? I mean, what? We got people who actually remember Pivotal because I remember that CF push. Like, you're just like any developer, you're like, wow, I'm in the cloud, just like, just one line. We're gonna show you something like that. So the icon you're seeing here is Epinio, right. And Epinio is an open-source product. And it turns Kubernetes, well somewhat into a PaaS, right. It packages up your code and it allows you to not have to worry about containerizing, not have to worry about a lot of things. That just, you know, I push it and it's there. Well, we don't call it CF because, well, it would be confusing. But we do call it Epinio push, right.
So let's talk about how that works. Well, you have our Kubernetes cluster, right. So a lightweight installation of Epinio. And what Epinio does is it goes out, and from another registry, Git repository, even your local code files, it pulls that in, builds, containerizes, deploys your application for you, and it worries about somewhat of the networking. But if it's on like Rancher desktop, It kind of does it for you. And I'll show you that in our demo, right.
So let's see how that looks. Animation didn't work. So you're developing, these are the aspects that you're working on. And you can have your local development environment. And I wasn't sure if I could put the Civo Cloud logo here. Like I didn't get permission. So that's supposed to be Civo Cloud. But I didn't know. Like what I didn't want to do is just have someone yell at me. I was like, I don't know if I can do that, but okay. But you can sit, you can work locally, you can deploy, you can test, you can attach to and debug through the container itself with Epinio, all locally.
But the cool part is, if you're going into dev, that actually works, right. Where you can use Epinio to deploy to both. Now, most operators are probably not going to like this, but you can do it. And it gives you the opportunity to do just that. Where you can pull your code, it deploys it for you, and it works. And it's the same deployment process. So when they say it works on my machine, no, it really does. It worked on my machine. I used Epinio to just deploy it for me. And you can integrate this with Jenkins, and right there, with Epinio, it's doing all that package for you.
Now, Epinio is vast, it's deep. When the product first came around, it was rough. I'm not gonna lie, I work for SUSE, and we have Rancher there too. It was rough. But it's now polished very, very, very well.
So, I wasn't expecting that, to hold a mic, but we're gonna try to do a demo here, in the show. Alright, so Epinio has something akin to CF push. But what we can do, make sure I have the right one, is I can show the app. It has a very nice command line interface that you can go and do everything that you need to do. But just like everything, I like a GUI, you like a GUI. Who doesn't like a GUI? There's a full GUI interface with it. And when you set up Epinio, especially on your local workstation, I'm using sslip to do it. But I'm able to use the web interface, or I can use, well, I guess the command line. So if you're that Vim user who wants to use everything from the command line, God bless you. But I'm not that person.
So, what we can do is have a simple app. And let's see if I get, just really, really simple app. It's PHP info. Any of the web developers out there would know what that means. That's great. But we can deploy it. And we'll give it a new name. We're gonna call it new sample.
Now, it's going to take a fat minute to do it. And I didn't realize you guys can't see it. And I apologize, that's terrible. Okay, so what this is doing is it's going out, it's grabbing that file, it's parsing it, it's telling it, Epinio is figuring out what it is, what it needs. It knows to go out and get a build pack for PHP. And I'm hoping the internet here is fast enough to do this because the tests, when I did downstairs, or in fact the other one, it actually moved those. So now it's going back out there and it's pulling all the information it needs to build this application, all running via Rancher desktop.
So, go here, I can show you. Epinio's there, running. And the dashboard here, real quick. Well, let's take it a fat minute. And I can show you that. Epinio, the cert manager that it needs is all out there, running, with a handful of other things that tie into what Rancher desktop needs. Let's go back to this command line. It's doing, it's going out, it's figuring out what it needs, it's building everything, it's detecting, it's doing, it's analyzing, and it will come in and deploy it for you. Now, it's not going as fast as I wanted. But it's two of nine. That's gonna walk over there. But I didn't have my mic. It's at two of nine. It should be done here in a few minutes.
Here in the GUI itself, you can actually see what's going on. And it's running, it's doing its thing. But I actually have a sample that's running already. And then just for time purposes, I want to make sure I don't do that. But if I go to that URL, that's PHP info. And what Epinio has done is it's gone out there, it's done everything I need to do to build this application, containerize it, throw it into Kubernetes, it gives me a nice, cute route. Sample dot 127.0.0.1.sslip.io. And it works.
Now, when the next one comes on, it's literally the same app, I'm just calling it something different. It'll give it a new route for you. And so, as you're building, you can literally start decomposing that monolith, doing any type of your local development right here with Epinio. And it saves you from having to worry about it. And the only thing I ran was, literally Epinio, Epiniol push. Remember the commands, there it is, Epinio push. I gave it a name, I gave it the path of where my code was at, and I can do it. Now, it can also pull from a registry, it also can pull from GitHub as well and do this as well. There's different flags that will give you the ability to do such a thing. See if it's done. No, it's taking longer than I thought. But that's quite all right.
So, the sauce, yeah, not available but again, it's taking a lot longer. This is in the main hallway, the internet was faster, and this took like literally a minute and a half and we're going on three. Any other questions while we wait for this?
No one, go ahead. It does use build packs. I use the build packs underneath.
That one. Alright. Well, I do apologize for this taking longer than I wanted. But we'll go back to the presentation mode and I will show you. I do not have these slides online. I will get them out too everybody over at the Civo side. If you want to know more about it, I'm at RobertSerk on Twitter. Rancher Labs is where we post and we talk more about Epinio and some of the other projects we are that we're doing. We have a Slack channel for more information. But the website for Epinio is epinio.io and I'm kind of hoping we can be done for this demo.
I'm not plugging your docs, I'm not. And you know, Nuno over here is the gentleman who writes the docs which I actually double-checked and followed them very to a T to make sure that this works. But I apologize for my demo taking longer to deploy than expected. Thanks, everybody.
Stay up to date
Sign up to the Navigate mailing list and stay in the loop with all the latest updates and news about the event.