Friday, October 17, 2025
HomeProgrammingWhy lease a cloud when you possibly can construct one?

Why lease a cloud when you possibly can construct one?


Cozystack is a Kubernetes-based framework for constructing a personal cloud atmosphere.

Join with Andrei on Linkedin.

As we speak’s shoutout goes to person Adam for profitable a Populist badge for his or her reply to Regex replace text but exclude when text is between specific tag.

TRANSCRIPT

[Intro Music]

Ryan Donovan: Good day everybody, and welcome to the Stack Overflow Podcast, a spot to speak all issues software program and expertise. I am Ryan Donovan, your host. As we speak we’re speaking about tips on how to construct a cloud all by your self, and my visitor at present is Andrei Kvapil, who’s founding father of Ænix and the core developer of Cozystack. So welcome to the present, Andrei.

Andrei Kvapil: Good day. Thanks, Ryan.

Ryan Donovan: Initially of the present, we wish to get to know our visitor. So, inform us a bit of bit about how you bought into software program and expertise.

Andrei Kvapil: Properly, I used to be in a neighborhood for [a] very long time when Kubernetes was invented. I jumped into it, and I actually like this expertise. I attempted to deliver and put all the things into Kubernetes, even Kubernetes itself. Really, you’ll find plenty of my articles the place I present what to decide on between Argo CD and Flux CD, tips on how to use utilization in Kubernetes, and numerous applied sciences like storage networking stuff working there. A few of these articles, you’ll find even within the kubernetes.io weblog.

Ryan Donovan: What do you want about Kubernetes? What you about it?

Andrei Kvapil: I actually like Kubernetes due to API, really. I discovered it’s not simply the factor which creates containers and runs it someplace; this isn’t an alternative choice to cloud platforms, that is one thing extra. So, you should use Kubernetes to program really all the things. They’ve a special method. So, the thought of this declarative logic which you can outline a desired state and depart enterprise logic behind. So, you do not want to consider how is it occurring beneath the hood, you simply work on higher-level abstractions, and also you go deep simply in case if one thing goes fallacious. So, utilizing Kubernetes, you possibly can specify, ‘I need a pizza,’ you may have a particular operator which can deal with this pizza for you.

Ryan Donovan: As we speak, I am positive we’ll contact on Kubernetes once more as we construct up our personal cloud. So, inform us a bit of bit about what Cozystack is.

Andrei Kvapil: The Cozystack is a platform for managed companies. So, these days we are saying that no person wants simply pure digital machines – everyone is in search of Handle-IT companies, such means, like, you possibly can go to AWS or Google Cloud, you possibly can order Kubernetes queries, some database S3 buckets. We are saying that Cozystack is a next-gen hypervisor, which lets you order not solely digital machines, but in addition cross companies, and Cozystack is open supply. We develop it as a part of the CNCF undertaking. That is one of many issues I love to do – to share our expertise and ship it as a platform.

Ryan Donovan: You’ve got clearly constructed the inspiration for a cloud system, the hypervisor. What does it take to construct up a cloud, ranging from the naked metallic to working microservices on it? What’s the very first thing it’s essential to construct on the naked metallic?

Andrei Kvapil: Properly, these days, so many corporations try to construct their very own cloud. We will begin [with], ‘why’re they attempting to do that?’ There’s a very trend[able] factor in Europe— particularly in Europe—it is known as digital sovereignty. Folks attempting to get their very own clouds to get unbiased from hyperscalers, I believe these days, it is less difficult to construct your individual cloud than just a few years in the past, because of Kubernetes. Even core applied sciences like OpenStack and different concurrence—to illustrate, CloudStack, OpenNebula—these days, it is fairly frequent to run them on Kubernetes. So, in the event you’re attempting to construct your individual cloud, it’s essential to take into consideration many issues. Should you’re a cloud person, you normally work solely on the highest components of this cloud, really API, and you do not care in regards to the backside a part of this iceberg. Below the hood, it’s essential to resolve so many issues, to illustrate, ranging from naked metallic node provisioning. In case you have three or 10 nodes, it is okay, you needn’t resolve that originally, however when you will have tons of and 1000’s of the nodes, you begin fascinated by tips on how to orchestrate it higher. Additionally, if you’re attempting to do a product, to illustrate, a cloud, which you’ll run in numerous environments for numerous shoppers, it’s essential to make infrastructure reproducible, and it is vitally tough to assist this reproducibility for numerous working programs. So, I believe the very first thing it’s essential to do is to unify all the things and discover a means of how you’d distribute this. In Cozystack, we begin from the very backside stage of working programs; in Cozystack, we determined we do not wish to assist customary working programs as a result of they’ve totally different kernels, totally different modules. As an alternative of this, we select a extremely small system, which offers Kubernetes. It is known as Telus Linux, and we constructed our system on high of it. Due to that, it permits us to bake the picture with all of the wanted kernel modules and kernel variations, and to make sure that it really works the identical means on numerous environments. So, very fundamental stage is [the] working system and, really, Linux kernel.

Ryan Donovan: Yeah, get some type of small, minimal surface-level, floor space Linux system, after which on high of that, are we prepared for the hypervisor, or do we have to do some extra work earlier than that?

Andrei Kvapil: Properly, there are additionally plenty of numerous hypervisors—to illustrate, fairly frequent now’s KVM and QEMU. KVM—so, you should use QEMU, however there are such a lot of orchestrators which really eat QEMU in several methods. I already talked about OpenStack, OpenNebula, CloudStack. We will add Proxmox, we will add KubeVirt. So, so many applied sciences.

Ryan Donovan: We do not have to be complete right here.

Andrei Kvapil: Yeah, yeah. I simply wish to say that, first, it’s essential to resolve what sort of cloud you are constructing. I actually like to separate these virtualization programs to do classes. One is conventional virtualization programs – you possibly can take into account it like the identical means like working bodily servers. Should you create [a] digital machine, if it’s essential to have [an] ISO to put in this digital machine, it is fairly comparable like [a] bodily server. That is extra doubtless [a] conventional virtualization system, like VMware, Proxmox, and for someday, Oracle, which at present is maintained.

Ryan Donovan: It is only a piece of software program simulating a single pc, proper?

Andrei Kvapil: Yeah. So hypervisor, right here, is only a software to separate [a] massive server to small ones, however additionally they introduce plenty of instruments like, to illustrate, life migration, HA supervisor, and the issues to maintain your digital machine alive, and [a] totally different class is your cloud system. If you wish to construct one thing extra ‘cloud native method,’ to illustrate, if you wish to run tons of of digital machines, all of them ought to be created from golden picture, from the predefined template. If you wish to construct one thing like Digital Ocean or AWS, it may be applied [in] totally different programs, to illustrate, the identical OpenStack, CloudStack, Kubevirt, and issues like so. So, I believe the second step while you begin constructing your cloud [is] it’s essential to resolve what sort of virtualization you are going to present. As a result of the normal virtualization system– they’re good and so they present [a] good interface for creating digital machines, putting in working programs, and to maintain them alive. In cloud sample, you will have one thing totally different: you simply use assets and digital machines simply want identification to eat these assets.

Ryan Donovan: The standard virtualization is type of splitting a bigger server into smaller components, however the cloud server is doing the alternative – taking a big factor and working it throughout a number of servers or digital machines. Is that correct?

Andrei Kvapil: Sure, partially sure. So, cloud normally means that you’ve got API and you’ve got plenty of automation for spouting tons of of the digital machines, and inside of those digital machines, it’s also possible to have integration with the cloud. As an example, fairly frequent now, in the event you run Kubernetes in cloud, you are anticipating that this cloud will present you persistent quantity, a load balancer, and the opposite companies, which you’ll order instantly from the Kubernetes.

Ryan Donovan: Do you want a hypervisor for the normal virtualization or is that only for the bigger cloud system?

Andrei Kvapil: I believe that is two various things. We aren’t doing conventional virtualization excellent. There’s a good resolution, Proxmox – simply take and use it. I actually love Proxmox as a result of it’s open supply and it really works very properly. However we’re extra targeting offering Handle-IT companies. That is such a factor the place you possibly can go and, simply in Cloud, order Kubernetes, Redis, Rabbit, and issues like so. We implement cloud sample. On this means, we additionally use virtualization, however virtualization right here is used extra for isolating assets between the customers.

Ryan Donovan: For the Kubernetes, I assume, is that the subsequent step as much as handle all this digital {hardware}? You are spawning?

Andrei Kvapil: Yeah, it’s essential to select [an] orchestrator. So for conventional visualization programs, I’d recommend utilizing Proxmox in the event you’re contemplating between the open supply instruments. In [the] case if you wish to construct one thing extra good, one thing extra automated, it’s essential to take into account between the OpenStack, Cloud Stack, OpenNebula, KubeVirt, Harvester– there are such a lot of options proper now. A few of them [are] primarily based on the identical applied sciences—to illustrate, Cozystack, Harvester, and OpenShift—all of them eat KubeVirt beneath the hood. They implement it the identical means in Kubernetes. I believe we have got some expertise constructing clouds. In previous, we constructed just a few clouds, and I can see the traits and the vault that folks like Kubernetes, and so they like interacting with that. So, all of them had been constructing clouds utilizing Kubernetes as a result of Kubernetes means that you can turn out to be such [an] orchestrator and supply companies simply by the request.

Ryan Donovan: Yeah, it is a YAML file, and you do not have to fret in regards to the infrastructure. I’ve heard lots of people saying it is an excessive amount of, or you recognize, it is resume-driven growth. Is Kubernetes one thing that anyone ought to be touching in the event that they’re fascinated by cloud?

Andrei Kvapil: Should you’ll take OpenStack: we’re speaking with the individuals who use OpenStack, and so they normally have a workforce of 10 or 20 individuals who’re managing simply OpenStack. If we are going to slim down the scope of the engineers to solely Kubernetes – in Cozystack, we now have Kubernetes inside, and we now have Kubernetes outdoors as [an] orchestrator. This makes much less cognitive load on the individuals who’re managing these items. You may really slim the quantity of people that’re managing these and the individuals who work with Kubernetes. These days, it is a very trend[able] expertise. I believe it is far more simpler to search out them available on the market.

Ryan Donovan: We have got the working system, the digital machines, the hypervisor, Kubernetes. Is there one thing else, or do we now have a cloud at this level?

Andrei Kvapil: Yeah, that is nonetheless not even the half of what it’s essential to resolve. The second half is storage and networking – [the] two most painful issues if you wish to run stateful companies. Let’s begin from the networking first: in the event you use Kubernetes to construct your individual cloud, it could be much more complicated as a result of Kubernetes wasn’t really created to run digital machines. They implement totally different patterns for the networking, which was initially designed to run stateless containers. Proper now, Kubernetes means that you can run stateful companies, however nonetheless, there are plenty of issues which aren’t solved but in a core Kubernetes. So, you should use some applied sciences, really, Pink Hat – they’ve an answer, which known as OVN-Kubernetes; and in addition there may be Kube-OVN Challenge, which we use in Cozystack – it means that you can resolve components it’s essential to run digital machines in Kubernetes. These issues, reminiscent of life migration of digital machine to a different node, it’s essential to preserve [an] IP deal with for this digital machine. You additionally have to have MAC deal with administration as a result of initially, Kubernetes don’t present any MAC deal with administration for this.

Ryan Donovan: How do you preserve these IP addresses? Are they type of internally managed, or is there some DNS server that it’s important to type of replace, discuss to?

Andrei Kvapil: Kubernetes normally comes with Kube DNS or Core DNS service, which solves title decision within the cluster that simply works out of the field, however we implement [a] very attention-grabbing community sample. So, as an alternative of doing the identical factor like Pink Hat does, or Harvester, as a result of additionally they constructed their resolution on high of Kubernetes – they’re attempting to reimplement this conventional virtualization system, networking for digital machines working in Kubernetes. That creates one other API, which isn’t excellent managed by the Kubernetes itself. In Cozystack, we’re attempting to stay the identical method to having Kubernetes networking like in each Kubernetes cluster. So, we now have one massive deal with vary the place we dedicate IP addresses for digital machine, with one distinction: the IP addresses – they are often moved between the nodes. The remaining [of the] issues works the identical means [as] in Kubernetes. So, you will have [a] service community for load balancers, and you’ve got exterior load balancers, to illustrate, for Layer2 or BGP bulletins.

Ryan Donovan: Do you utilize any type of inner multicasting the place you will have one IP deal with that talks to many alternative particular person areas?

Andrei Kvapil: We don’t implement that but, so in our case, each digital machine has only one interface and has one IP deal with assigned. All the remaining [of the] stuff is finished because of Cilium. Cilium is [a] actually trendy CNI plugin for Kubernetes, which handles all the things on [the] BGO stage. So, it makes use of BGP expertise to override IP addresses, to offer really strict insurance policies between the tenants. On this means, you do not want to consider IP addresses in any respect. So IP deal with is only a service factor [that] wants to permit you [to] ship and obtain packets. You begin working on higher-level labels, names, and issues like so. And Cilium– you possibly can simply say, ‘I would like this namespace, permit to go this title namespace,’ and you do not care about IP addresses assigned.

Ryan Donovan: Yeah, I imply, in most APIs you do not actually care in regards to the IP deal with. You simply– this is the URI, URL, no matter it’s, after which it goes by means of… what? API, gateway visitors shaping, load balancing? How are proxies– how a lot of that do it’s important to fear about while you’re establishing an API that attaches to your Kubernetes?

Andrei Kvapil: That is all the time about the way you put together your atmosphere. Now we have so many environments, and first, we’re nonetheless attempting to unify all of them. You may unify all the things within the cluster, however there are all the time questions [of] tips on how to talk with exterior routers. In the event that they use BGP, they will use totally different variations, totally different applied sciences, to show these IP addresses. Should you’re speaking about cloud platform, they normally work on Layer2 and Layer3, however I do not know many clouds who present a Layer7 communication service mesh. So yeah, it is fairly well-known in [the] Kubernetes world. Some clouds—public clouds—they normally present some further service, however in the event you’re speaking about offering infrastructure, you simply want to resolve Layer2 and Layer3, and such issues like life migration, IP deal with allocation, the safety teams, and communication between them. Additionally, ‘VPCs’ – very painful matter. We don’t assist them but. We wish to as a result of folks get used to, ‘I simply wish to create my community, so I wish to use my very own IP addresses.’

Ryan Donovan: What’s ‘ VPC’ stand for?

Andrei Kvapil: That is normally in regards to the isolation—bodily isolation of networking between the customers, between the tenants—even regardless of the actual fact [that] for now, we now have a extremely frequent area for all the purchasers. They don’t seem to be controlling their IP addresses, and that appears bizarre for the individuals who get used to Cloud. Even regardless of the actual fact we use a strict EBPF insurance policies to not permit visitors to go in several atmosphere areas, they nonetheless wish to have their very own devoted layer-to-network the place they will select their very own IP addresses, ship multicast visitors, and issues like so.

Ryan Donovan: All of this, you recognize, connection, visitors shaping – it operates inside Kubernetes?

Andrei Kvapil: There are few choices how you are able to do this. So, our means is [to] maximally reuse current Kubernetes resolution and networking method. However there may be additionally a undertaking, it is known as Multus – it is fairly frequent in the event you’re creating your individual cloud in Kubernetes for organizing VPCs. So, Multus means that you can run a number of networks, a number of interfaces, for each container and digital machine, however it has additionally many drawbacks. For instance, they created networks [in] such [a] means [that] they won’t be managed by the Kubernetes itself, so you possibly can’t really use community coverage to manage them, and each resolution is fixing {that a} totally different means.

Ryan Donovan: Is there some method to propagate community coverage to those issues outdoors of the Kubernetes clusters?

Andrei Kvapil: You imply with Multus?

Ryan Donovan: Yeah, in any type of constant means – like, you mentioned it may’t apply the community coverage.

Andrei Kvapil: The Kubernetes defines default entities for managing community, reminiscent of community insurance policies companies, it is known as Type service, which is used for service discovery. And plenty of CNI plugins like OVN-Kubernetes and Kube-OVN, they implement their very own entities, which lets you do one thing comparable for added networks.

Ryan Donovan: And also you mentioned there is a community piece after which there’s the file storage piece. What do it’s important to take into consideration for that?

Andrei Kvapil: The storage– additionally [a] very tough matter. It may be very totally different, and in addition it’s extremely tough to create one thing unified. Some folks like to make use of proprietary black field options to allow them to simply put a node, join it to Kubernetes, set up the motive force, and use volumes from it. We determined to do [a] hyperconverged cloud, so we ship our storage by way of Kubernetes. However when you will have a storage, that normally implies that you are bringing state into Kubernetes. Once you begin having state, you begin fascinated by, ‘I have to replace this node. What to do with the information on this node? Ought to or not it’s eliminated, migrated?’ And tips on how to handle that correctly.

Ryan Donovan: Yeah, as a result of that interferes with the type of like, ‘destroy, rebuild’ ease of Kubernetes, proper?

Andrei Kvapil: Really, because of operator method, which was invented I believe 5, or I do not know what number of years in the past, that was all the time about bringing state into Kubernetes. As a result of initially, it was simply [a] stateless system and operators deliver this feature to you to handle stateful companies in Kubernetes. And digital machine, if we will simply think about, that is simply one other stateful service. That is simply [a] QEMU course of within the container, and that is precisely how KubeVirt works. So, KubeVirt, we will say that that is [an] operator for working digital machines contained in the containers.

Ryan Donovan: Does it propagate the state throughout nodes? And the way does it occur? Is that one thing that’s gonna price you cash when it comes to like, influx, outflow prices?

Andrei Kvapil: In case [where] you will have one thing stateful, it is all the time higher to maintain state outdoors. Should you’re speaking from the storage perspective and do not discuss in regards to the virtualization, to illustrate, about regular container workloads, it all the time higher to maintain this state someplace in S3 buckets, which do not require any Linux operations to mount this file system, or to create the block machine. So, once we are speaking in regards to the storage, I’d break up additionally into three totally different classes: the thing storage is one thing which you do not care about– you will have API, to illustrate, HTTP, or S3 the place you possibly can go and put or get your information again from it. However for digital machines, you want one thing that works on the system stage. You want block storage. So while you create digital machines, it really works with block gadgets the place you possibly can set up your Linux or Home windows working system, would not matter. However earlier than you begin utilizing this, it’s essential to suppose how you’ll ship that. That is good if in case you have exterior storage, however in the event you do not, it’s essential to set up some storage system into your Kubernetes. Quite common factor is Ceph. We use LINSTOR as a result of Ceph is working not excellent in hyperconverged infrastructure. It consumes so [much] CPU time. We use LINSTOR. It really implements block machine. It really works like MAD, to illustrate, gentle RAID 1, however which works on the networking stage. Meaning if one node goes down, your information will persistently begin on one other node. And if it goes down for a really very long time, it additionally will even replicate this information to a different node.

Ryan Donovan: And the way a lot of this information is that this, type of like, particular person nodes information is being saved in, you recognize, S3 buckets in case of, you recognize, persistence, or failures, or something? Is that one thing that should occur, or are you able to simply do all of it in Ceph or LINSTOR?

Andrei Kvapil: You may’t simply put your whole information into S3 buckets, sadly. And one other factor, in the event you put your information into S3 bucket, you are simply shifting your duty to another person. What if it’s essential to run your individual S3 storage? You get precisely in the identical scenario. So, for working S3 storage, you want block gadgets or [a] file system the place these information might be saved.

Ryan Donovan: In order that’s in the event you’re constructing your individual cloud, that is one other a part of it that it’s important to construct your individual S3 buckets.

Andrei Kvapil: If you wish to assist this, then sure. Should you do not wish to assist it, it could be not required, particularly in the event you use Ceph, you possibly can really use each. It helps all three interfaces, really: file system, block gadgets, and S3 object retailer. LINSTOR solves only one piece, really block gadgets, however they extremely carry out. And on high of those block gadgets, we run CVit FS, which makes object storage. Generally you additionally want a file system storage.

Ryan Donovan: What if one thing downloads a file? Proper? What if it writes to a log file?

Andrei Kvapil: Additionally, [in] numerous instances, for instance, if I run in our cloud– additionally databases, they really work with [a] file system; that does not imply that they should have [a] shared file system as a result of they use the identical block gadgets, and so they use regular X4 or XFS created on high of this block machine. In order that works effective with block storage on there, however if you wish to run tons of WordPress web sites, or some PSP software, they’re anticipating to have it redundant. They’re anticipating that they’ll work with the identical file system. On this means, it’s essential to have one thing like POSIX-compatible file system, which you’ll mount on a number of nodes with distributed logs. I’d say that is [a] very tough matter.

Ryan Donovan: Properly, we’ll save that matter for one more time. To our infrastructure stack, we have added the community within the file system. Do we now have a cloud now?

Andrei Kvapil: Sure and no, as a result of it’s essential to handle your customers someway. It’s essential authenticate and authorize them, and it’s essential to create assigned quotas for his or her tenant title areas, and it’s essential to construct them someway. Ranging from this level–

Ryan Donovan: You are speaking in regards to the customers on the cloud itself. You are not speaking about, like, customers on no matter software, proper?

Andrei Kvapil: Yeah, yeah, precisely. Cloud. Okay, so, you created storage networking, you put in some virtualization system, to illustrate KubeVirt, you will have pure API interface, and it’s essential to management your customers someway. As an example, for instance, if you’re permitting them to create digital machines, tips on how to keep away from conditions once they’re interacting with KubeVirt—with Pure KubeVirt API—and changing their entities with customized pictures, in such means, compromising the system. So, it’s essential to safe your self someway from that. There usually are not many choices how you are able to do this. You may undergo writing coverage utilizing Open Coverage Agent or Kyverno. There are various options which let you management person enter, however we want alternative ways, so we applied our personal API server in Kubernetes, which lets you specify solely fields allowed to person to vary, after which generate the assets for the operators. In such means, we now have extensibility, and so, full assist. I’d put right here that we nonetheless don’t have any internet interface, which permits our customers to attach. There could be some issues like quotas billing system, so that you want [to] someway calculate. You continue to want to watch it. So really, in our undertaking, the thought was to get so many open supply tasks, get them working all collectively, and supply us a field resolution, which incorporates all the things like monitoring, dashboard, virtualization, storage networking… so, you simply set up them on the system, on the nodes, and also you get a prepared cloud.

Ryan Donovan: Proper, and also you simply fear about your enterprise logic.

Andrei Kvapil: Yeah. So we take care about infrastructure, and you are taking care in regards to the enterprise logic. And much more, after you get this infrastructure layer, you begin fascinated by tips on how to combine current issues, to illustrate, Kubernetes, which you permit to run inside of those Kubernetes, tips on how to educate it to order, scorching plug volumes, and cargo balancers. So, it’s essential to have some API and interplay between the functions you deployed in your cloud along with your cloud.

Ryan Donovan: I believe we have solely scratched the floor. We’ll embrace a few your articles about a few of these deeper matters for people who wanna take a look at extra.

Ryan Donovan: Properly, it’s that point once more the place we shout out any individual who got here onto Stack Overflow, dropped a bit of data, shared some curiosity, and earned themselves a badge. As we speak, we’re shouting out a populist badge winner – any individual who dropped a solution on a query that was so good, it outscored the accepted reply. So, congrats to Adam for answering ‘Regex exchange textual content however exclude when textual content is between particular tag.’ Should you’re interested by that, we now have the reply for you. I am Ryan Donvan. I’m the host of the podcast at Stack Overflow, editor of the weblog. In case you have questions, considerations, matters, et cetera, please e-mail me at podcast@stackoverflow.com. And in the event you wanna discover me on the web, you possibly can find me on LinkedIn.

Andrei Kvapil: I am Andrei Kvapil. I am CEO and founding father of Ænix. I am developer of Cozystack. Please be at liberty to hitch our neighborhood. If you wish to contact us, we now have neighborhood channels, we now have Slack in Kubernetes Slack, and Telegram Channel, simply Cozystack in Kubernetes area. If you wish to, you possibly can be part of our biblically neighborhood conferences the place we converse in regards to the alternatives and tips on how to develop the platform itself. That is one thing wonderful I realized from the CNCF conferences, as a result of we wish to share our expertise and get it again from all our customers from all over the world. So check out cozystack.io web site. You will discover all of the hyperlinks there.

Ryan Donovan: Properly, thanks for listening, everybody, and we’ll discuss to you subsequent time.

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisment -
Google search engine

Most Popular

Recent Comments