Papago

I thought it might be illustrative to show you what would happen if you don't propagate these headers.

So for that reason, just off camera, I've built a new set of images for all of the microservices here.

And all I've done is I've simply gone through and deleted the propagate headers interceptor file, and then rebuilt, I'm just using an incrementing number, as I work my way through this course, the previous demos were all based on tag, six, I've now created this alternative version called six dash, no header propagation.

If you want to see this in action, you don't have to follow along here.

But if you do, then we can do a kubectl deletes on the file called applicate, five application, no Istio dot yaml.

And then I've put in a separate folder, just so it doesn't get in the way, I've got a folder in your coast course download files called no header propagation demo.

And in there is a new version of that file where I'm simply using these new images, you might be wondering why we didn't just go in and apply this new file, you probably know Kubernetes would then terminate all of the running pods and we'll start new pods.

problem with doing that is we are running very tight for space on minkube here.

And if you try that, there's a very good chance everything will lock up, because it's going to have a set of the incoming pods and the outgoing pods running at once.

And I'm fearful that might cause everything to crash.

So I'm just waiting for kubectl PL to give no resources found.

And then I can apply this new file.

And just while that's getting up and running, I'll show you that file.

Here it is in the text editor.

All I've done is I've changed the tags on the images to no header propagation.

So again, I've done nothing more here than removing that one class propagate headers interceptor from every single one of the micro services.

As always, we'll just need to wait for these new parts to start up.

So eventually, I've got my pods back up and running with these new images then, which remember are not doing the automatic header propagation.

So let's see the difference with these images.

And I'm going to repeat the demo that I did in the previous video, which if you'll remember, I went into the Jaeger UI, and I set the look back period to a custom time range.

And I'm going to set the start time and date to be the current time, which for me at the time of recording is 1956, according to my PC clock.

And you'll remember the purpose of that is if I do a fine trace now.

Oh, and yes, I also have to set the end time.

As before, I'll just set the end time to be some time tomorrow.

So anytime in the future, we'll do, we're doing nothing with the system at the moment.

And that's giving no results.

I should also mention that I selected the service to be the web app.

So repeating the demo from previously, I'll switch across to the web app now.

And I'll click on any of these vehicles, London Riverside, for me, switching back to Jaeger UI, I won't do anything other than clicking on find traces.

And as in the previous demo, we have ended up with three traces as a result of that.

But now I want to show you the big difference.

We've got that boring trace with just a single span.

But the other two traces, sadly, now only have three spans which if you remember from the previous video, we had more than three spans before.

Let's pick either of them.

And in fact, before I pick one, let's focus here on the list of services that have been visited by each request.

If you remember, previously, we had one of these traces ending up in the staff service and another of the traces ending up in I think it was a position tracker, it was something different.

And we could distinguish them immediately.

But this time around, we're only seeing two services appearing in both of them.

One of the services is the originating service we started from the web app.

We're also seeing the API gateway.

Well, let's cut to the chase, you can click on either of these.

And you're going to see that essentially you have just one hop, we're going from the web app to the API gateway.

Just as previously were three seen three spans purely because there's also the proxy from the web app showing up on the trace.

But you know, and I know from the previous video, that the API gateway isn't the end there will be another hop to at least one further upstream.

So This, and we're just not seeing it.

Now that hot did happen, the software was running absolutely fine.

But we're not seeing it here in the tracing.

So we know that the API gateway did call another service.

And it would actually be theoretically, theoretically possible to sort of manually continue the tracing, I could switch the service here to be the API gateway, and then go down to the bottom and click find traces.

And now I'm getting as a result of that 20 traces returned.

Well, the reason for that is, although I'm not actually clicking anything on the web app, of course, there is still a lot of activity going on inside the system, we are getting updates for the vehicles.

And it looks like therefore, that is triggering calls to the API gateway.

So I've got all of these 20 traces.


And I know, probably one of these traces is the trace that I'm interested in.

But how do I work out which one.

And so really, the point I'm making here is that without the automatic header propagation, this whole tracing system is very much less useful than it was mean, don't get me wrong, we can still get some information from this trace.

But it's very much truncated.

So I hope you're not too disappointed with that.

Well, I have to admit that I am because one of the great features of Istio, as I've said many times is that most of what we get from Istio requires absolutely no changes to the applications that were running on the platform.

This, however, is the exception.

If you want to get full tracing, then you do have to propagate those specific headers from service to service to service.

Now, it is entirely up to you how you do that.

But however you do it, there is going to be an invasion NCR application.

And of course, it means you have to do it everywhere.

Because if you miss it in one particular service, then you're going to have what I'm going to call broken traces.

So in this video, I just wanted to show you one technique, I realised that's only relevant if you're working on spring boots, and you happen to be using the fain libraries.

But I know a lot of you are using that.

And the joy of my solution really is that you just drop a class into your system and you don't need to change anything else.

Anyway, I've said enough about that.

I do promise that for the rest of this course, the features from Istio will be non invasive.

I'll see you in the next video.

이 헤더를 전파하지 않으면 어떻게 되는지 보여드리는 것이 도움이 될 것 같아서요.

이런 이유로, 카메라 밖에서는, 여기 있는 모든 마이크로 서비스들을 위한 새로운 이미지 세트를 만들었습니다.

제가 한 모든 작업은 전파 헤더 인터셉터 파일을 삭제하고 다시 만든 다음, 증분 번호를 사용하여 이 과정을 진행하면서 이전 데모는 모두 태그에 기반했습니다. 6개입니다. 이제 6개 대시라는 다른 버전을 만들었습니다. 헤더 전파는 없습니다.

이 기능을 사용하려면 여기를 따라갈 필요가 없습니다.

하지만 만약 그렇다면, 우리는 5개의 어플리케이션을 Istio dot yaml을 제외한 5개의 어플리케이션을 Kubectl로 삭제할 수 있습니다.

그리고 나서 저는 별도의 폴더를 넣었습니다. 방해가 되지 않도록 하기 위해서, 저는 당신의 코스트 코스에 있는 파일들을 다운로드 하는데 헤더 전파 데모 금지라고 불리는 폴더를 가지고 있습니다.

그리고 제가 단순히 이 새로운 이미지를 사용하고 있는 그 파일의 새로운 버전이 있습니다. 여러분은 왜 우리가 이 새로운 파일을 그냥 집어넣지 않았는지 궁금하실 것입니다. 아마 쿠버네티스가 모든 실행 중인 포드를 종료하고 나면 우리는 새로운 포드를 시작할 것입니다.

문제는 우리가 여기 밍크 튜브의 공간을 위해 매우 빡빡하게 달리고 있다는 것이다.

그리고 만약 여러분이 그것을 시도한다면, 모든 것이 잠길 가능성이 매우 높습니다. 왜냐하면 그것은 들어오는 팟들과 나가는 팟들을 동시에 작동시킬 것이기 때문입니다.

그리고 나는 모든 것이 추락하게 될까봐 두렵다.

그래서 저는 kubectl PL이 어떤 자원도 찾지 못하기를 기다리고 있습니다.

그러면 이 새 파일을 적용할 수 있습니다.

그리고 그것이 작동되고 있는 동안, 제가 그 파일을 보여드리겠습니다.

텍스트 편집기에 있습니다.

제가 한 일은 이미지의 태그를 헤더 전파 없이 바꾼 것뿐입니다.

다시 말씀드리지만, 저는 마이크로 서비스 하나 하나 하나에서 하나의 클래스 전파 헤더 인터셉터를 제거하는 것 외에는 아무것도 하지 않았습니다.

언제나 그렇듯이, 우리는 단지 이 새로운 부분들이 시작될 때까지 기다리면 될 것이다.

그래서 결국, 저는 제 꼬투리들이 이 새로운 이미지들을 백업하고 실행하게 됩니다. 그 때 기억나는 것은 자동 헤더 전파를 하지 않는다는 것입니다.

이제 이 이미지들의 차이점을 알아보겠습니다.

그리고 이전 비디오에서 했던 데모를 다시 한 번 보여드리겠습니다. 기억하실지 모르겠지만, 저는 Jaeger UI에 들어가서 룩백 기간을 사용자 지정 시간 범위로 설정했습니다.

제 PC시계에 따르면, 저는 시작 시간과 날짜를 현재 시간으로 설정할 것입니다.

그리고 당신은 그것의 목적이 내가 지금 훌륭한 추적을 하는 것이라는 것을 기억할 것이다.

아, 그리고 네, 저도 종료 시간을 정해야 해요.

전과 마찬가지로, 나는 그냥 내일의 어느 정도의 시간을 갖도록 할 것이다.

그래서 미래에는 언제든지, 우리는 지금 그 시스템을 가지고 아무것도 하지 않을 것입니다.

그리고 그것은 아무런 결과도 주지 못합니다.

서비스를 웹 앱으로 선택했다는 점도 언급해야 합니다.

이제 이전과 같은 데모를 반복하여 웹 앱으로 전환하겠습니다.

그리고 저는 런던 리버사이드(London Riverse)의 어떤 차량도 클릭하겠습니다. Jaeger UI로 돌아가겠습니다. 저는 흔적을 찾는 것 외에는 아무것도 하지 않겠습니다.

그리고 이전의 데모에서와 같이, 우리는 그 결과로 세 개의 흔적을 갖게 되었습니다.

하지만 이제 저는 여러분에게 큰 차이를 보여드리고자 합니다.

단 한 개의 스판으로도 지루한 흔적을 찾을 수 있습니다.

하지만 슬프게도, 다른 두 개의 흔적은 이제 겨우 세 개의 길이만 있습니다. 이전 비디오에서 기억하실지 모르겠지만, 우리는 그 전에 세 개 이상의 길이를 가지고 있었습니다.

둘 중 하나를 고르자.

그리고 실제로 선택하기 전에 각 요청이 방문한 서비스 목록을 살펴보도록 하겠습니다.

만약 기억하실지 모르겠지만, 이전에, 이 흔적들 중 하나가 직원 근무로 귀결되고 또 다른 흔적이 있었는데, 제 생각에 그것은 위치 추적기였던 것 같습니다. 뭔가 다른 것이었습니다.

그리고 우리는 그들을 즉시 구별할 수 있었습니다.

하지만 이번에는 두 가지 서비스만 등장하고 있습니다.

서비스 중 하나는 웹 앱에서 시작한 원본 서비스입니다.

API 게이트웨이도 표시됩니다.

자, 이제 이 중 하나를 클릭하면 되겠습니다.

그리고 여러분은 기본적으로 단 하나의 홉을 가지고 있다는 것을 알게 될 것입니다. 우리는 웹 앱에서 API 게이트웨이로 이동합니다.

이전에 3개의 길이만 보았던 것과 마찬가지로, 추적에 웹 앱에서 나온 프록시도 있기 때문입니다.

하지만 이전 비디오에서 알 수 있듯이 API 게이트웨이는 끝이 아닙니다. 적어도 한 번 더 업스트림으로 이동할 수 있는 또 다른 희망이 있습니다.

이것은, 우리는 단지 그것을 볼 수 없습니다.

그 핫한 일이 일어났고, 소프트웨어는 아주 잘 작동하고 있었습니다.

하지만 우리는 이것을 추적에서 보고 있지 않습니다.

따라서 API 게이트웨이가 다른 서비스를 호출했다는 것을 알 수 있습니다.

이론적으로, 이론적으로 추적을 계속하는 것이 가능할 것입니다. 여기서 서비스를 API 게이트웨이로 전환한 다음, 맨 아래로 내려가서 추적 찾기를 클릭할 수 있습니다.

그리고 이제 저는 20개의 흔적을 돌려받은 결과물을 얻고 있습니다.


그리고, 아마 이 흔적들 중 하나는 제가 관심있는 흔적일 겁니다.

하지만 어떤 걸 어떻게 해결해야 할까요?

그래서 제가 여기서 말하고자 하는 것은 자동 헤더 전파 없이는 이 전체 추적 시스템이 평균보다 훨씬 덜 유용하다는 것입니다. 오해하지 마세요. 우리는 여전히 이 추적으로부터 정보를 얻을 수 있습니다.

하지만 그것은 매우 잘렸습니다.

그래서 나는 당신이 그것에 너무 실망하지 않기를 바랍니다.

글쎄요, 저는 Istio의 훌륭한 특징들 중 하나라는 것을 인정해야 합니다. 제가 여러 번 말했듯이, 우리가 Istio로부터 얻는 대부분의 것들은 플랫폼에서 실행되는 애플리케이션에 전혀 변화가 필요하지 않습니다.

그러나 이것은 예외이다.

전체 추적을 수행하려면 특정 헤더를 서비스에서 서비스로 전파해야 합니다.

이제, 어떻게 하느냐에 전적으로 달려있다.

하지만 당신이 어떻게 하든 NCR을 침범하는 애플리케이션이 있을 겁니다.

그리고 물론, 이것은 여러분이 어디에서나 그것을 해야 한다는 것을 의미합니다.

왜냐하면 한 특정한 서비스 안에서 그것을 놓치면, 제가 '깨진 흔적'이라고 부르는 것을 갖게 될 것이기 때문입니다.

그래서 이 비디오에서, 저는 여러분께 한가지 기술을 보여드리고자 했습니다. 스프링 부츠를 다룰 때에만 관련이 있다는 것을 깨달았습니다. 그리고 우연히 훌륭한 도서관을 사용하게 되었습니다.

하지만 나는 여러분 중 많은 사람들이 그것을 사용하고 있다는 것을 안다.

그리고 제 해결책의 즐거움은 당신이 당신의 시스템에 수업을 빼놓기만 하면 당신은 다른 어떤 것도 바꿀 필요가 없다는 것입니다.

어쨌든, 난 그것에 대해 충분히 말했다.

이 과정의 나머지 기간 동안, Istio의 특징들은 비침습적일 것이라고 약속합니다.

다음 영상에서 뵙겠습니다.

  • No labels
Write a comment…