 All right, I think we are live now Hey everybody, welcome to episode six. I think of Chat loop back off pretty excited to have everybody here with me today My name is Jeremy. If you haven't seen me before I'll be guest hosting today We're getting super close to kubecon. So G fees actually on his way to kubecon If you don't know me my again, my name is Jeremy I'm a chair for sick release in kubernetes and I'm a software engineer at microsoft I've done a bunch of things in the cloud native space. So you may have seen me in a few other places Um, I'm in colorado and it's a super cold wintery day I actually didn't have power until about 20 minutes ago So super exciting that I could be on the stream with everybody today We're getting a really crazy late winter snowstorm, but I guess that's pretty normal for Springtime in the Rockies. We're going to get something like 30 centimeters or 12 inches of snow when this is all said and done Which is pretty exciting. I think uh Can't can have a stream without some sort of exciting event kind of kicking in But I've got some tea, uh, and the sweater's pretty warm. So let's kick the stream off This live stream is a sibling to a similarly named Show called a clash loop back off which is an event that's held at kubecons And is more of a competition style thing you can kind of think of iron chef In that one two competitors get pitted together to solve some sort of challenge where they don't really have any info On what the challenges are going to be so it's it's really about kind of learning and seeing how those experiences go It's meant to be laid back Mostly and and generally pretty fun This stream is more of a I guess a self-inflicted kind of challenge where we're going to take a topic Where we haven't done any real in-depth Research and we're gonna instead focus on how we learn and take a take a new approach to that topic and kind of See where our journey takes us I'm gonna I'm going to go through and read some documentation and kind of learn about the project Like I normally would even if I wasn't on a stream today In doing so, I hope we can all walk away with Some new information about the project and just a greater awareness of the cloud native ecosystem Today we're going to be learning about telepresence, which is a cncf sandbox project that aims to provide Fast local development for kubernetes and open shift microservices. That sounds pretty cool I think anything that can help us kind of shift that development loop to the left sounds pretty cool to me As a person that builds services and ships them to kubernetes So i'm excited to have you here to dive into the project with me today figure out how it works and again Hopefully we can all learn a little bit more about the cloud native ecosystem and come away with some new New knowledge during the live stream feel free to drop questions into the chat And i'll try to get to as many of those as I can If you see that i'm struggling or you have a suggestion you've worked with this this project before Please feel free to interject and drop some suggestions into the chat and help us help us all learn and go along I think that's where we're all gonna get the most benefit out of this And when we learn as a community and as a group, I think that's the the best outcome for us That said this is a an official live stream of the cncf and is subject to the cncf code of conduct So please don't add anything to the chat that Or the questions that would violate the the code of conduct basically just please respect everybody In the chat all the fellow The participants and me this video will be available on youtube afterwards So folks that couldn't make it today will be able to still follow along and join us just asynchronously Before we dive into telepresence. So let's uh take a spin around the cloud native landscape and see What kind of news is out there? Maybe just see some exciting new developments that are happening And obviously the the most important one is cube con is upon us I'm gonna share my screen really quick and we can look at a couple of links while we're going through this See if I can do that I'm trying to use two screens. We'll see how this goes Okay, I think this will work Maybe give me one second here. Ah, there it is There's the bar. Okay, so I'm gonna click this button Hopefully we'll see a live screen just a second adding the source sharing my screen All right, hopefully that's showing up now. Um, everybody in the chat want to Oh, hey, new no nice to see you in the uh in the chat with us today Super bum that I won't be at cube con Really really bum to miss on miss out on this. I think there's a lot of really cool content in the schedule If we click on explore the schedule, we can see a bunch of really cool things There's a lot of content even on the pre-days that I think people can take advantage of seems like a really extensive set of lighting talks a bunch of which I think are really really exciting And again, like I'm really bummed that I'm gonna miss this miss this But one thing I wanted to call people's attention to let's see if we can find it in here Is Clash loop back off. I mentioned that kind of in the intro. It's our it's the kind of the competitive version of this Um, I did it at cube con in chicago and it was super fun. It's in the project pavilion Two competitors go head to head with the challenge that gfee gives us Right before the event. So we don't really get any time to prepare and it's um, it's stressful and fun All at the same time. I think uh, the audience had a really good time In chicago, so I totally recommend people check this one out I think I got a little sneak preview of who's going to be involved and it should be pretty fun The challenges look like they're going to be pretty good too. So if you're going to be at cube con, definitely check out pavilion number seven in the project pavilion space at 1830 on On wednesday, I think it'll be a super good time All right, and then next as I was kind of looking for some new new updates I saw there were a number of things in the ecosystem about About wasm lately. There was a project announced yesterday. I think called spin cube From the people at fermion And I also noticed on the cncf blog that there was a an intro post just a couple days ago About web assembly on kubernetes. So it seems like a pretty hot topic and I thought this was just an interesting one I don't know a ton about web assembly in this space So I thought this was a pretty interesting blog kind of walks through Some overviews of like what it is and then dives into some of the tooling and if you're going to be at cube con I think there's a keynote that's happening on thursday. Let's see if we can find that A couple lightning talks. It looks like a tutorial Pretty cool. Yeah, so a panel discussion um revolutionizing cloud native architectures with web assembly that You know, I think will be a another really cool way to learn a little bit more about web assembly It would recommend folks checked out out if you're interested in web assembly That'll be at thursday at nine fifteen. It looks like it has folks from fermion from zeis and from microsoft Moderated by by taylor should be a pretty good time Another one that I thought was pretty cool was that open telemetry has applied for graduation to move from incubation to graduation That'll be a really cool evolution to see that happening It's been a long time in the works and last year. There was a lot of work put into Stabilizing things and getting things ready to go. I'm sure we'll all be Happy to see some stability with with open telemetry going forward. So that's that's really an exciting development to see And then lastly really close to my own heart The kubernetes release team has just released the kubernetes 130 beta So if you're tracking along, uh, you might be aware of this, but this is the the point at which You know, the release is starting to firm up. We've hit code freeze already So the beta release is going to be your first opportunity to really see some of the functionality that's going to land in the release Definitely subject to change Definitely are probably some rough edges and some issues But if you have the ability, I would totally recommend checking out that release You know, if you run into any issues or bugs, definitely feel free to open issues help make this a more stable Easy to consume better release for everybody else We're just about a month away from the release. So here's the kind of the calendar if we want to scroll through that a little bit kubekan eu So we're we're just about right here So tuesday is when the beta release happens, you know pretty fresh off that Headed into kubekan not a whole lot's going to happen I think like most places kind of slows down The release team definitely takes a break for that But once they come back, it's going to be right back into things and you know We'll have release blogs ready to go feature blogs ready to go there'll be a test freeze and then your last chance to to have input with the rcs and then On april 17th, we're going to have kubernetes 130.0. That's pretty exciting I was the release lead for 120. So it's amazing to see that we've gotten 10 releases past that So it seems like it's not been that long, but We're definitely definitely getting there All right, so now we're going to dive into telepresence. We've gotten the that news out of the way. Let's let's Let's turn to the matters of at hand. So I'm going to close these other windows And we're just going to open up the telepresence project itself Again, I haven't done any real Research into this. I'm familiar with what it's what it does But beyond that haven't really Haven't really invested any time in learning about it. So we're going to do that together right now Let me bring up the chat just so I have everything in case anybody wants to ask anything while we're going And we should be able to do that down here. Boom. There we go. Okay Okay, so what is telepresence? Um, so telepresence is a sandbox project in the cncf Looks like it was started by the team at ambassador labs They're responsible for some cool networking stuff Um, it Proports to be a fast local development for kubernetes and open shift So they they want to accelerate the dev loop shift testing left, which is super great And then use your existing workflow So not making you learn a new code editor or a new debugger profile or just using what you have today Anything that runs on your laptop will work with telepresence. That seems seems pretty cool Um, I'm not sure how it works though. So let's let's check that out So telepresence consists of two architecture components the client side telepresence binary So I guess we're gonna have to install that onto my mac And then the client the cluster side traffic manager and traffic add-on. So those will be in our our kubernetes cluster I'm gonna try to do this with kind today. Um, I can go spin up a cluster in a cloud provider But I want to I want to really focus on trying to keep this um in my local development environment Which this would normally be my my mac. So we'll try that out first Okay, so looks like the telepresence connect command Utilizes that component in the cluster to do some proxying between our development machine and the cluster Um, we're gonna try it out locally first to see how that works Um, I think we can extrapolate that that might look the same for a remote cluster And then running telepresence intercept service name triggers the traffic manager to install a traffic agent proxy That runs within the pot. So maybe a sidecar that goes along with that. Let's uh, we'll try that out Okay, so looks like they've got a getting started button. We're going to just start with that That's how I would normally go about trying this out Get it installed and then we'll kind of work through reading some more of the docs to to understand what we're doing Okay, so prerequisites we need, um cube ctl and I definitely have one of those installed Let's check and make sure cube ctl. Yep, cool. And this is 129.2. So using a pretty new release. I also already have a kind cluster Hopefully that'll satisfy this a kubernetes deployment and a service We're I think I have one of those handy too. So we can we can totally check that out. Um, I've got these sample projects that I've used a bunch of different times um from digital ocean and Inside of here, I think maybe game 2048 seems like a good one I think uh, gfu use one of those in the the Gateway api episodes. We'll use that just for some continuity Okay, so, um, what do we do first looks like to do this, uh, we're going to use curl to install it um I definitely have a silicone mac. So we're going to try this one down here. Almost did the wrong thing So let's grab that nothing like pseudo curling things from uh, from the internet So let's let's give that a whirl first. Okay, so we're gonna do that We're gonna run, uh, let me know if the text is big enough on this, uh, folks in the chat if you're Having trouble seeing internet Gonna run this we're going to uh, it looks like curl down that binary from Get ambassador.io and then install it to user local bin telepresence. That makes sense Doing that now Okay, so now Moment of truth. Do we have telepresence permission denied Is that any instructions? sure enough Jumping ahead of myself Pretty uh zoom in just maybe for the replay. Okay. I can do that. Thanks. You know, let's let's give that a whirl Okay, so we will Pseudo chmod this user local bin telepresence Okay, so now once more, what did they say a plus that okay, let's give that a try user local bin Telepresence Okay, so once more Ah, these are our telepresence. I probably have I don't know why it's not picking it up. Um Nuno said but it's a website at the same time So it should be fine. You only see the webpage right now But not the console. Oh, you don't see the the webpage. Is that not showing up? In here, let's see. Maybe I need to change what I'm sharing. I'll also zoom that text. Uh, so can you Yeah, I see in the stream and it's not showing that so let me um, let me stop sharing and I'll share again let's see I have never done this before Okay It's still only picking up the website Technical difficulties. All right, we can fix this I was sharing the wrong thing I was sharing a screen or a window not a screen. Okay. Um, now Is that showing up correctly? Can we see the The terminal? I think so. I see it in the stream window now. Boom. Okay, cool So let's take a look at um at telepresence. So we've got the command here and It's got a bunch of different commands underneath of it. Um a config a connect gather logs gather traces Generate yaml. Um a helm sub command probably used for installing some things Help intercept. I think that one was mentioned before Um a bunch of different different commands. I think that we'll we'll try to walk through here So let's bounce back to the docs for a second and keep going through our our quick start guide here Okay, so we did that. Um now we need to install telepresence into our cluster So we're going to run the telepresence helm install command Let's give that a shot And I think it says you're gonna need root access on the machine. So probably need to do this with sudo sudo helm install. Okay, cool traffic manager successfully installed. Let's take a look at what's in our cluster now I'm gonna do a kubectl get pods and let's look across all the namespace because I have no idea where this was installed My terminal is not responding now Let's try that again kubectl get pods dash a Okay, so in this one Um, you can see the the normal things that come with kind the things that are leaving in kubesystem But we definitely have this new namespace ambassador and uh a pod inside of it called traffic manager Um, I'm kind of curious what else is in there. So let's uh, let's do kubectl get all in the namespace ambassador Okay, so we've got a pod obviously we saw that a second ago Looks like there's one replica of it running. There is a service Which is a type cluster ip agent injector and there's a traffic manager We also have a deployment and replica set that goes along with that Let's see if I can Kind of curious what it what it looks like. So we're going to describe it Okay, opens up some ports. It looks like Looks like it's running correctly I'm gonna get the yaml. I'm just kind of curious about what it has I'm sorry. Let's get it in yaml So we have normal deployment with a bunch of metadata goes along with it. That's fine Okay, so the containers we have telepresence, uh image right here coming from docker hub data wire I think that was the ambassador name from a long time ago Looks like it exposes a couple ports one for g rpc one for the api Has some normal Normal stuff. Oh, so it's pretty straightforward. It's not a whole lot going on inside of this right now Okay, so let's jump back to our our getting started guide and see what's next Okay, so we want to intercept a service next with telepresence. You can create global intercepts The intercept all traffic going into your service in your remote cluster and then route it to your local environment instead So we're going to connect to your local cluster with telepresence connect and connect to the kubernetes api server All right, so let's do that telepresence connect Okay connected to context kind kind namespace default So if we do this now Exactly what I'd expect because it's not authenticated That's cool All right Yep, 401 is responses Okay, so now you have access to your remote kubernetes api server as if it were on state network Mine was already. Uh, so maybe a kind cluster wasn't the best for this but we're going to keep going with that just for now Um Under telepresence list and make sure the service you want to intercept is listed. Okay, so let's see. I shouldn't have anything here No workloads deployments staple sets or replicas. Okay, so let's um, let's deploy one We need to have that that was one of the prerequisites. So I'm going to bounce over and use that sample application That's going to be uh in kubernetes examples Sample apps Okay, and then game 2048. Okay, so we're going to use this as our project Uh, it's funny. They use tilt for this. I think that's another Tool that's kind of in that space Okay, so for this one, we're going to build this docker file and deploy it And then it looks like they use customize to deploy a couple things. So let's let's do that first. We're going to build it I think the instructions in the read me were pretty good last time I used this which was quite a while ago But we're gonna do that. So we're going to do docker build Um, we'll put it into my docker hub makes makes sense 2048 Latest Okay, so we built the image pretty quickly. Um, let's do a docker push Um, and while that's going maybe I'll create a a kubernetes cluster in azure just to Have um, have a remote one that we can try this out on as well. So I'll do az aks Create I don't remember how to do this. So we're gonna use the Azure CLI real quick to do that. Okay, so we want to do basically az aks create and then the resource group and the name it's going to be so we'll do az group create Dash dash name crash loop back off and location, let's do um south central us That should be pretty close to me Okay, we've got to we've got to log in again. So we'll do that in a second Put the head this open again already. So we built that and Now we want to push that to our street did that. Okay, so we want to deploy this to kubernetes We have to use customize for that and it looks like the customization uses Uh, just a couple of files that are in this resources folder. So let's let's update this deployment and get it going Looks like um, this will be pretty easy to change So let's just do that real quick I think I called it 2048 latest, right? Let's see. Yeah 2048. Okay, cool. So that should be fine I think everything else here is exactly what we want Um, it's gonna create a namespace for us and a service. Okay, so we should be Good to go and I think this will be really easy to deploy Qubectl. Yep Qubectl apply dash k Customize. Okay, let's do that. Okay, so Qubectl apply dash f customize No map been found for the name name and namespace bar In from customize Customization go back up one. I don't think that'll matter, but okay. What's wrong with my Customization here Correct. All right. I don't think we actually need customized for this. So let's just try to deploy it. Um Qubectl create namespace and we'll call it um game 2048 Okay, that's fine apply dash k Oh, is it dash k? You're you're totally right. I read that wrong. Thanks gfee Made you open your laptop Yeah, and for the docs I was looking right at it and typed the wrong thing Geez, okay, so that should work All right, so now Qubectl get pods Game 2048 Okay, um invalid image name. So let's take a look at that Did I not save this? Let's apply it again Nope, I had not saved that Okay, so now that's running So we should have a a nice little thing running So I could do something like Qubectl port forward to this thing And let's try that out real quick 8080 8080 in the namespace Game 2048 Okay, so now that's port forwarded We'll do localhost 8080. Ah cool. There's my game That's fun Okay, so that's running locally and it's on um My kind cluster. So that's that's cool. So now we've got a thing deployed So I think now if we go back to the docs and we do telepresence list That should show us one of the things that's ready to go So let's let's kill that port forward and let's try telepresence list Okay, so first thing I had to do was uh make sure that I use the right namespace. So I think In this documentation, it's assuming you're working out of the default namespace Or you've configured your config to to use the one you want to use so Just keep that in mind if you're you're looking at the docs. Okay, so we have our game 2048 there It's ready to intercept but the traffic agent isn't installed yet. So I think that's the next step that we want to do here Um, so we want to get the name of the port that we want to intercept on our service So we want to do kubectl get service service name output yaml and then look for The port we want to use so we know we know the one we want to use is 8080. So let's um, let's find which one that is So we'll do kubectl get service Game 2048. Okay, so we want to do service game 2048 And we'll we'll grab the yaml That's what doc said to do Okay, so it's named HTTP that makes makes pretty easy Okay, so the docs say that we want to do telepresence intercept the name of the service and then port Whatever the local port is and then the remote port So we actually didn't need the uh, the name of I think we just needed 8080 So we could probably just dump jump for that real fast Um for port we want to specify the local instance that the service is running on If it's using multiples you can specify the one you want intercept after a colon And then for the end file Specify a file path for telepresence to write the environment variables that are set in pod The example below shows telepresence intercepting traffic going to service example service requests now reach the service on port HTTP And the cluster get routed to 8080 on the workstation Okay. Oh, okay. So actually You do need the name of the port um it might work with uh With with numeric things too, but we'll try it this way. I think that'll be the easiest. Okay. So let's do telepresence Intercept I don't have completion turned on so you're gonna have to do with my bad typing game 2048 And then again we want to use port let's say 81 81 because that's different And then HTTP and then dash dash n file We'll say um I bet we've got to specify The namespace yet again. I probably should just switch the namespace so that I have to I don't keep forgetting but Let's do that Use telepresence connect to set the namespace. Okay, cool. So let's try that telepresence Connect let's check that out telepresence connect and namespace string. Okay. So let's do that telepresence connect namespace game 2048 Please quit telepresence and reconnect Is there a telepresence disconnect? Doesn't look like it connect to a cluster Ah Remove existing intercepts leave. I don't think we want to do that one yet Telepresence quit till the day I'm into quit. Okay, let's do that Okay, cool. So now we should be good to do this again with connect and we'll do namespace game 2048 Okay, so now we've connected again with the namespace game 2048 and I think now if we do telepresence list oops list There we go. So game 2048 ready to intercept so Mental note if you're using this you definitely want to connect to the right namespace. Um, if you're not using the default namespace I love learning things live and stumbling across them. It's super fun Okay, so now let's try that Intercept again and we should be able to remove this This namespace thing back here. So again, what we're going to try to do I think is Run telepresence intercept with the name of the service which was game 2048 And then the port we want to use is 81 81 locally and then htp in the remote thing So let's give that a go Okay, cool. So that looks like it was successful. Um, so we're using the deployment game 2048 The intercept name is game 2048. It looks like it's active and the destination is localhost 81 81. So now if we go to New terminal window here localhost 81 81 Oh, okay. So maybe we didn't do that yet. Let's let's keep going in the docs Okay, so start your local development environment using environment variables retrieve from the previous step Okay, so let's take a look at what that looks like We've got n intercept dot env. Okay, so let's take a look what that is Oh, there's a whole bunch of stuff here. Okay so game 2048 ports telepresence container bunch of bunch of stuff going on here. Okay, so The following are some examples of how to pass the environment variables to your local processes Docker run and provide the path using the The argument file Visual studio code that's the one we're going to try in I think So we want to specify the path to the environment file in the m field of your config I've actually never done that before. So let's Maybe start with docker and see right. So just running a regular docker container With that stuff a bunch of bash So let's let's just run in a bunch of container like this with that file and see what happens if we can connect to it that way Okay, so let's do docker run dash dash env file and intercept Just run a bunch of bash that sounds good. Okay. So if we look at the env in here It looks like all that stuff was was intercepted and it's good to go Go back to our telepresence quick start All traffic previously routed to your kubernetes service is now routed to your local environment Oh, okay. So is this routing Things from if I hit the service is it routing it to the deployment that I would have a locally? Is that the The way this would work Not the other way around so Let's let's see what happens if I try to port forward to that service and see what happens the services Game 2048 wrong command wrong spelling Okay, so let's port forward to that again It's the inverse of port forwarding which I didn't really think about till just now. I think it's exactly the right That's the right approach. So I think what I really need to do is get this thing running Um locally so that I can connect to it Um as the the local thing. So that's that's an interesting interesting approach And then so let's try that out so 80 80 80 80 Okay, so we're port forwarding and I'm curious like if I run to this now Okay, so it's still like the service intercepts. It looks like it's still hitting That thing, right? I don't think there's I want to see what's in here in the locks so unzip till presence logs Okay, so traffic manager I'm kind of curious what that deployment looks like now come back to trying to get it to work in a second But let's um qctl get pods Game 2048 Oh, okay. So there's there's two pods in it. So it does look like it injected a sidecar. So if you do qctl get deployments 2048 Let's get the yaml for that. Sorry Yep, looks like it was restarted by till presence And in the containers now, I still only have my an original pod ctl get pods Give ctl describe pod Okay, yeah, so it added another container Which is the data wire container And if we get that thing as a yaml we can look at it. Okay, so we've got Our normal game 2048 container And then we have our telepresence container Which is using the image from docker hub. Okay, cool. So that's what it does it installs a sidecar I think that's what's collecting the traffic. Um, I wonder what the service looks like now. Let's take a look at that okay, it is still pointing at port 80 and the http port So this is like a reverse a port forward from inside of the Inside of the container. Is that does that seem right? Is that a so you can connect from your app back to local? Trying to try to wrap my head around what this is is doing right now Let's look at the pod again. So there's port 8080 from my app port 9090 for till presence What was in the end file again? Let's yep, there's Normal things that I would expect Okay, let's check out the docs again. Let's see Give us any more info start your local environment using environment variables retrieved from the previous step What's next? Yeah, so we can see those things. I just this doesn't really give me much Pointer on uh and what I want to do there Okay, well, let's take a look at the architecture while we're We're here With telepresence you can make changes on the fly and see them reflected when interacting with your Kubernetes environments Just like hot reloading, but it works across local and remote environments Query services and microservice are apis that are only accessible in your remote clusters network Set breakpoints in your id and reroute remote traffic to your local machine to that that seems really cool um anybody in the chat if you've used this uh and you have suggestions on like how I can Using these docs get that going. We'd love to see it. Let's let's check out the other docs and see if there's a another way So you've got installing things there Core concept. Okay, how do I Intercept a service from your own environment? Okay, so Before you begin you'd have telepresence installed got that. Okay, so intercepting your service Yep, okay, so this is basically the doc we just have Uh proxy outbound traffic to my cluster. Okay. Let's give this a shot curl Web app emoji voto that's another oops Emoji voto is another uh sample that's in here. That's funny. Okay, so we want to um we With telepresence that think we're able to Access it like that that way. So let's let's try that. So we are connected already telepresence status Okay, that's that's cool. Um We're connected Got one intercept Tell the presence list Yep, there's our intercept name. So now I wonder if the Oh, it's your service dot namespace. Okay, so that should be fine. Right. We can do curl um game 2048 game 2048 oops 2048 Sorry dot if we want port 8080, right? No Oh, that's wrong Okay, cool. I'm through reply from server. That's that's better. Um So now if I put this in the browser, does that work? Let's give that a try We're gonna try telepresence quit and see if it changes it. Yeah. Okay. So it was resolving things Just not going through my browser correctly So we do telepresence connect again. We should be able to bring that back up Oh, I want the namespace, right Okay, and if we try that again Hey, that's cool. It's returning something now. So if I do Ah, it's working So now I can play That and I'm accessing it just like it is a local pot So there's the name of the service and there's the name of the namespace And there's the port it's on that's pretty cool. Um, so you can connect that way and and do stuff. That's Pretty handy it work with large clusters Here we go network considerations for locally hosted clusters that probably would have been useful for me to find a few minutes ago So telepresence connects a virtual network interface that maps the cluster submits to the host machine cool Okay, so there are instructions if you're using something like k3s or mini cube Docker for desktop It may come into play and make things a little bit easier here Um, it still hasn't gotten me to the point where I really know how to um, go to To really debug this. Um, I think that I can spend some more time trying to find the The docs for that and uh, that's probably what I'll do after this But I'm going to jump back to the quick start because at the bottom there was a link to Learning about the architecture and I want to do that while we're here. So we've gotten this working um, and we've kind of seen how What the components look like. So, you know, we did a couple of things like kubectl got pods in Game 2048 and we see that there's two pods now or two containers, I guess inside of that pod One of which is the telepresence piece kubectl get services You know, there's our service. Um, I'm curious if the endpoints are different. It's Yeah, it's endpoints the same. So it's just intercepting things On my machine kind of doing that that way um Yeah, so let's that's that's pretty neat. Uh But it doesn't really give me a good idea of what the Architecture looks like. So let's look at what this looks like Um, this is a pretty pretty decent diagram. I think so This is the cluster and this is that traffic manager component which is living In that ambassador namespace gctl get pods ambassador Okay, so there's our traffic manager and I bet if we um, if we reduce something like get the logs Of that from ambassador Yeah, we can see the things that it's doing. It's injecting Some patches into the pod to make it ready. It's injecting the traffic manager agent into the pod So we've got our stuff there. That's cool but uh What we really have going on is there's that component running which is the one that's in the ambassador namespace Here's our intercepted service and the intercepted container So the service is going through the traffic agent There's the agent injector I was curious if there was another service for For my like a fake service for my thing, but it doesn't look like it. Okay, so The traffic agent is the sidecar that gets intercept gets injected an intercepted thing. Um, so that's cool. We saw that Um Depending on the type of intercept that gets created the traffic agent will either route the incoming request to traffic manager So that he gets to develop his workstation Or it will pass it along to the container and the pod usually having the request. Oh, so there's different maybe different types of intercepts. That's Yeah, so You can build a docker container from the given docker context and run it with the intercepted environment. That's that's pretty pretty cool um, so if you wanted to run my um My 2048 pod locally, I think that's one thing we probably want to do we want to use docker build pass that to it to make it Make it work that way That's that's pretty cool. Um emit the remote environment to an invite m file and compose format. We did that already. Um Runner docker container with the intercepted environment already So that's neat. There's a bunch of different options here that you know Didn't come up when we were just looking at the documentation So definitely pays to to run the commands and kind of mess around with them a little bit more um And kind of understand what you want to do A lot of a lot of different options here That I don't think we have time to play with since we're almost a lot of time here But I think this has given me enough to start kind of understanding how I would use this locally I think the quick start could be a little bit better. Maybe like here's an actual example of a service to use so it was a little bit more Walkthroughy instead of having to figure some of that out, but I think this is pretty Pretty useful. Um, this is what I'm going to check out next time Actually when we're done here, I'm going to keep diving into this a little bit more But I think it'd be really cool to To try that. So actually before we get off real quick, let's see if we can do that We're in the directory where that container is. Let's do tell the presence and I think there was a command to Remove the intercept. Okay, so let's do that till the presence Leave Yeah, the intercept name, right? So it should be Just this Let's connect again and see if that's our issue Okay Okay, so we have our Our friend there, right? So if we do tell the presence leave just takes flags and then the Intercept name, right? So I think it should just be game 248 intercept name game 248 not found Is there another name for it in here? All right. Well, let's that's weird. Let's see if we can make another telepresence In the five minutes we got four minutes we got left. Let's let's try that telepresence intercept Actually, let's see what we did before telepresence so I did 2048 Port okay, so let's make a new one. We'll say a telepresence intercept And we'll call it game 2048 to and I think there was a workload flag That if you use a different one, so we're going to do that so game 2048 and then 82 82 HTTP that's what we're going to do and then I think that command was let's go back a little bit Find it Docker build string Um for the given docker context path or url. Okay, so if we do docker build Like this and dots. Oh, I'm in the wrong directory. That's why We're running low on time and I'm Okay, let's do it. Let's do that again Okay, so now we should be making another intercept which is going to be my game 2048-2 I think that workload flag is what's going to pick the workload And I'm curious what the docker build Port must be of the format port look for container port Service port identifier. Okay, so we want to do 8080 and then HTTP. I think is what we want. Oh, okay. I think that is Running my My thing. Let's let's see what the logs look like for the actual pod Okay, get pod Okay, so there's our pod kubectl logs Yeah, so that's exactly the uh The instructions we expect to see right the output we expect to see HTTP server version The settings that are happening there and then where it's available at So that's what we've got going on here now. And I think if I were to go in here and curl Game 2048 that game 2048 oops, sorry 80 80 right that's the cool So it's returning something and we are seeing the curls happen in the pub. It's running So that's really cool. Um, so we've got that That thing running and uh, it's again, I think like gfee said in the chat It's it's reverse port forwarding. So it's forwarding from inside the cluster back to the daemon that's running on my machine now Which is pretty cool. So that would allow you to run this thing in debug mode if you were able to run In vs code, I would need a set of a dev environment like that But I think that would give me the opportunity To be able to do kind of step through debugging inside. So let's give me my next my next step here Unfortunately, you won't be on the stream because we're we're out of time But uh, hopefully this has given you enough kind of context on telepresence to know, you know, where to begin You can run this on remote clusters. I think that would be the the real interesting use case my kind versions Kind of maybe not the best example of that But if you spin up a cluster in a cloud provider or on bare metal somewhere else You could use this to be able to Connect back to a deployment on your machine Like the actual workload could be on your dev laptop and you can work through that In a much faster way than building the container pushing the container restarting building the container Pushing the container and restarting. So this is this seems really really cool I wish I had maybe done a little bit of research beforehand But that ruins the fun of this right like doing doing the prep work I think takes away some of the fun of kind of stumbling through and and seeing some of this stuff So thanks for joining me today. Um, I hope that you got something useful out of this And we'll see you again next time. Again, thanks. If you're going to kubecon have a safe trip. I have a great kubecon Share share on your social media of all the cool things you see Be really awesome to see What what folks take away from that too. So have a great day and have a great week