WEBVTT

00:00.000 --> 00:09.000
So we're going to have Mario talking to us, but we're playing with Q, being

00:09.000 --> 00:10.000
pardoned.

00:10.000 --> 00:11.000
Thank you.

00:11.000 --> 00:12.000
Thank you very much.

00:12.000 --> 00:13.000
Thank you, everyone.

00:13.000 --> 00:15.000
So my name is Mario.

00:15.000 --> 00:20.000
I recently joined the Department team at Reduct.

00:20.000 --> 00:22.000
So a few months ago.

00:22.000 --> 00:26.000
And today I'm going to talk about something that I didn't know before

00:26.000 --> 00:33.000
that I think it's interesting, especially if you use Q-branadis.

00:33.000 --> 00:41.000
You may not like to have to set up clusters often.

00:41.000 --> 00:43.000
So let's start.

00:43.000 --> 00:44.000
This is the agenda.

00:44.000 --> 00:48.000
Yeah, we'll briefly talk about pardon and Q-branadis pods.

00:48.000 --> 00:50.000
And then pardon and Q-play.

00:50.000 --> 00:55.000
That is the pardon and command that is actually the main topic of the talk.

00:55.000 --> 01:03.000
So first of all, let's briefly talk about pardon.

01:03.000 --> 01:06.000
So we are as fast and container room.

01:06.000 --> 01:11.000
I don't think we need to talk too much to an introduction about pardon.

01:11.000 --> 01:13.000
So I'm not going to do that.

01:13.000 --> 01:18.000
I assume that most of the people know what pardon is.

01:18.000 --> 01:22.000
I'm just going to provide some information.

01:22.000 --> 01:28.000
So it has been released in 2018 for the first time.

01:28.000 --> 01:35.000
And then it's mostly maintained by engineers from Reduct.

01:35.000 --> 01:41.000
We have a lot of contributions, but the maintainers are mainly redactors.

01:41.000 --> 01:49.000
But recently, so a few months ago, we have proposed to have pardon

01:49.000 --> 01:51.000
as a CNCF project.

01:51.000 --> 01:55.000
And a few weeks ago, it has been accepted.

01:55.000 --> 02:01.000
So this is also because we think that in a vendor,

02:01.000 --> 02:05.000
a neutral organization, pardon, may grow more.

02:05.000 --> 02:08.000
We may have more companies contributing.

02:08.000 --> 02:17.000
We don't want for that to be the only that is governing the project.

02:17.000 --> 02:25.000
So now a few comments of pardon, just to try my slides are actually working.

02:25.000 --> 02:28.000
And also to talk about pardon briefly.

02:28.000 --> 02:30.000
So just a few comments.

02:30.000 --> 02:35.000
The first comment that I run to reset to make sure that the next comment will actually work.

02:35.000 --> 02:41.000
So I'm cleaning up all my containers.

02:41.000 --> 02:46.000
Let me make it a little leak.

02:46.000 --> 02:49.000
Yeah.

02:49.000 --> 02:58.000
Then I will just show a container, just the SHVD image.

02:58.000 --> 03:04.000
And to make sure that it's working, I'm actually going to run curl.

03:04.000 --> 03:07.000
And yeah, it looks like it provides, it works.

03:07.000 --> 03:11.000
So these systems slides, so I will use it.

03:11.000 --> 03:18.000
And these are actually comments that are executed on my machine.

03:18.000 --> 03:25.000
That's a Linux machine.

03:25.000 --> 03:29.000
So let's talk about Kubernetes pod now.

03:29.000 --> 03:40.000
Reality is that even if we like to do podman run into actually manage containers with podman or other containers engines,

03:40.000 --> 03:50.000
we usually have to deal with those emails and to run to test our applications using pods,

03:50.000 --> 03:52.000
the Phoenician or the deployment, et cetera.

03:52.000 --> 03:55.000
And the problem of that is that you need to find a cluster.

03:55.000 --> 04:03.000
So either you run mini-cube or kind locally or you need to actually provision a cluster.

04:04.000 --> 04:12.000
Those procedures may be a don't thing, especially if somebody hasn't been doing that a lot.

04:12.000 --> 04:22.000
Also having a mini-cube close to podman or to Docker on your laptop may start things.

04:22.000 --> 04:29.000
You start having a lot of virtual machines if you are running that on my Quest or on Windows.

04:29.000 --> 04:35.000
The idea is we would like to take those definitions of those objects.

04:35.000 --> 04:38.000
You run at these objects. In this case it's a pod.

04:38.000 --> 04:43.000
And there are a bunch of containers defined in a year.

04:43.000 --> 04:46.000
Let me show it fully.

04:46.000 --> 04:49.000
So first container and it is a ready container.

04:49.000 --> 04:53.000
A second container is the web application and then there is also a volume.

04:53.000 --> 04:59.000
So this is something that usually I test with a cube CTL applied.

04:59.000 --> 05:12.000
So the idea is that with podman we should be able to actually take the definition of those objects and run them locally on the machine.

05:12.000 --> 05:19.000
So in a sort podman is translating that KML in local containers.

05:19.000 --> 05:22.000
So that's the common podman you play.

05:22.000 --> 05:26.000
So let's do a demo.

05:26.000 --> 05:28.000
So first of all let me clean.

05:28.000 --> 05:30.000
I'm cleaning containers.

05:30.000 --> 05:32.000
I'm cleaning also volumes.

05:32.000 --> 05:36.000
And now I'm going to run a Q play.

05:36.000 --> 05:42.000
The pod ML is exactly the same pod ML that I showed before.

05:42.000 --> 05:50.000
Okay. And if we make it.

05:50.000 --> 05:54.000
Yeah.

05:54.000 --> 05:59.000
There is actually a podman out which shows that there is a pod that has been created.

05:59.000 --> 06:01.000
And then two containers.

06:01.000 --> 06:04.000
The containers are the containers we are familiar with.

06:04.000 --> 06:08.000
So the two containers that were the final year.

06:08.000 --> 06:12.000
And the pod is actually an object that podman.

06:12.000 --> 06:17.000
So it's another container that actually we call it infrastructure container.

06:17.000 --> 06:23.000
That's set up the namespaces and C groups for the other containers that will actually be executed.

06:23.000 --> 06:28.000
So the little difference is that to support the pod object.

06:28.000 --> 06:33.000
We need to start first an infrastructure container that does nothing.

06:33.000 --> 06:36.000
Meaning that it doesn't run workloads.

06:36.000 --> 06:41.000
But it's actually setting up namespaces and C groups so that those can be reduced.

06:41.000 --> 06:45.000
By the containers that will be added to the pod.

06:45.000 --> 06:49.000
So if we do now a podman, yes.

06:49.000 --> 06:52.000
Let's see what we have.

06:52.000 --> 06:54.000
So we have a first.

06:54.000 --> 06:58.000
I'm just showing the images here of the three containers that are running.

06:58.000 --> 07:02.000
And I see that the first one is a podman post something.

07:02.000 --> 07:05.000
This is the infrastructure container I was looking about.

07:05.000 --> 07:08.000
And then there are the two ready and the web application.

07:08.000 --> 07:10.000
The two container that I was expecting.

07:10.000 --> 07:15.000
So actually podman has been able to start that pod.

07:15.000 --> 07:20.000
Yeah, I'm locally and I'm going to be able to test it right now.

07:20.000 --> 07:25.000
Another thing is that I expect the volume to be created.

07:25.000 --> 07:27.000
And yes, create the volume.

07:27.000 --> 07:34.000
So that's the state of a ready in this case of the container that is using the volume.

07:34.000 --> 07:41.000
In the pod, yeah, it's actually persisted locally.

07:41.000 --> 07:47.000
And if, finally, I try to test the application.

07:47.000 --> 07:54.000
In this case, it's just the application that does a counter of how many visits it has done.

07:54.000 --> 07:55.000
We have done.

07:55.000 --> 08:02.000
And yeah, you see that it's actually, yeah, if I make it.

08:03.000 --> 08:11.000
Even smaller, I should be able to execute that.

08:11.000 --> 08:16.000
You see that the counter continues, et cetera, et cetera.

08:16.000 --> 08:18.000
And this is cool.

08:18.000 --> 08:25.000
But it can also actually, since we're running locally.

08:25.000 --> 08:29.000
And since podman is able to build images from Docker files,

08:29.000 --> 08:35.000
we may want to actually, and we may are in development.

08:35.000 --> 08:40.000
We may want to build the images before we actually start containers.

08:40.000 --> 08:45.000
And this is an option, a build option that the podman,

08:45.000 --> 08:50.000
Q play, the command, Q play has.

08:50.000 --> 08:56.000
So let's clean everything up before doing the demo.

08:56.000 --> 09:02.000
And what I'm doing now is that I am removing from my local machine,

09:02.000 --> 09:06.000
the image that is used on in the pod, the ML.

09:06.000 --> 09:11.000
So that I'm sure that we need to rebuild it otherwise pod, the ML will,

09:11.000 --> 09:17.000
so podman won't be able to start the container.

09:17.000 --> 09:19.000
Okay, so that has been done.

09:19.000 --> 09:22.000
And now I'm running, I'm going to run pod, Q play.

09:22.000 --> 09:30.000
We'll have the same pod, the ML is before, but we have the build option.

09:30.000 --> 09:36.000
Okay, you see that the first thing that it does, it starts actually doing a build.

09:36.000 --> 09:43.000
And you need to make it really small to actually see all the output.

09:43.000 --> 09:53.000
But I should have completed successfully, and I can check now.

09:53.000 --> 10:04.000
Now if I do, if I run this podman images, I should see that the image that I just removed now is back,

10:04.000 --> 10:08.000
because I just really, let's test it.

10:09.000 --> 10:13.000
Okay, so it any says, it has been created three seconds ago.

10:13.000 --> 10:24.000
So the command podman Q play as build the Docker file before, to be able to do that,

10:24.000 --> 10:29.000
there should be a folder with the name of the image where the Docker file is.

10:29.000 --> 10:34.000
That's how podman works.

10:34.000 --> 10:40.000
That's what podman expects to be able to build an image.

10:40.000 --> 10:54.000
So you provide the build parameter, then it checks if a folder with the name of the image exist with a Docker file.

10:54.000 --> 10:58.000
And if it funds that, it tries to build that.

10:58.000 --> 11:04.000
Once you have a build that is started the container, it's worth the new image that it has just built.

11:04.000 --> 11:14.000
So if we run PS, we see again the same container, so our pod has been started successfully locally.

11:14.000 --> 11:23.000
And we should be also able to see the volume and.

11:23.000 --> 11:26.000
Yeah, and the counter again.

11:26.000 --> 11:31.000
So the application, I'm able to curl, so I'm able to actually access the application.

11:31.000 --> 11:36.000
All right, so this is was podman Q play.

11:36.000 --> 11:42.000
Now, we rapidly, another comment that is Q generate, that is actually the opposite.

11:42.000 --> 11:48.000
So what we do is that we are going to clean the system again, remove all the containers.

11:48.000 --> 11:56.000
And I'm going to do to run a simple simple HTTP server.

11:56.000 --> 11:59.000
It started, okay.

11:59.000 --> 12:04.000
And now, yeah, if I do PS, I see that it actually, it's the HTTP.

12:04.000 --> 12:07.000
The container is running.

12:07.000 --> 12:13.000
And I can run this comment, generate.

12:13.000 --> 12:15.000
Let me be bigger.

12:15.000 --> 12:23.000
So it takes as a parameter the idea of the of the container that I just started.

12:23.000 --> 12:29.000
And if I execute it, it will output the pod definition of the container.

12:29.000 --> 12:36.000
So I can pipe the output and I can to to keep CTL and I can just deploy to Kubernetes.

12:36.000 --> 12:38.000
So these are another feature.

12:38.000 --> 12:44.000
So as though they're way around, so from local container to pods in Kubernetes.

12:44.000 --> 12:52.000
All right, so these are the different objects that are supported right now.

12:52.000 --> 12:56.000
So we support pods, we have seen that, we support deployments,

12:56.000 --> 13:00.000
persistent volume claims, config maps, secrets,

13:00.000 --> 13:03.000
demo set and jobs.

13:03.000 --> 13:07.000
So I showed something that I did a new before joining the team.

13:07.000 --> 13:13.000
There are other things that are really awesome of podmen that not everybody knows.

13:13.000 --> 13:15.000
Routeless a demo less.

13:15.000 --> 13:16.000
This is really popular.

13:16.000 --> 13:22.000
I think most of the people know that podmen can be demo less and can be roofless.

13:22.000 --> 13:27.000
But maybe everybody knows about build farms, image volumes.

13:27.000 --> 13:31.000
So you can use images, mount images, input as volumes.

13:31.000 --> 13:35.000
Podlets, podmen is age.

13:35.000 --> 13:40.000
Those are like, yeah, the interesting things that you may not know.

13:40.000 --> 13:46.000
And finally, just a few resources for if you want to learn more about it.

13:46.000 --> 13:53.000
And there is a talk about podlets in a few hours here from Axel.

13:53.000 --> 14:00.000
So don't miss it because it will talk about another cool feature of podmen that is not super well known.

14:00.000 --> 14:04.000
And I think we may have two minutes for questions.

14:15.000 --> 14:20.000
You can probably do one question if someone has something.

14:21.000 --> 14:23.000
You can take those.

14:23.000 --> 14:25.000
Where?

14:25.000 --> 14:27.000
There is.

14:27.000 --> 14:28.000
The left.

14:28.000 --> 14:30.000
Oh yeah, I see.

14:39.000 --> 14:42.000
Hey, thanks for the talk first.

14:42.000 --> 14:47.000
And I was wondering if podmen also handles the life cycle of the pod,

14:47.000 --> 14:52.000
meaning it checks for the lifeless probes and all the rest of the people that does.

14:52.000 --> 14:55.000
Yeah, this is a feature that we.

14:55.000 --> 14:58.000
The, the, yeah, the.

14:58.000 --> 15:04.000
The lifeiness probe, the health check are our feature that we support and can we can restart pod.

15:04.000 --> 15:07.000
Automatically if.

15:07.000 --> 15:11.000
If so, this is something that we support at the container level anyway.

15:11.000 --> 15:15.000
So this is not just the feature of pods, but it's a feature of containers.

15:15.000 --> 15:19.000
So it's you can define an L check and you can specify to restart the container.

15:19.000 --> 15:22.000
If the L check.

15:22.000 --> 15:25.000
Doesn't be as as expected.

15:30.000 --> 15:32.000
All right, thanks a lot.

15:32.000 --> 15:33.000
Any more questions?

15:33.000 --> 15:34.000
You can.

15:34.000 --> 15:36.000
Thank you.

