嗨 大家好非常开心能够跟大家做一些交流然后今天我看很多牛人都在今天交流然后十多东西都是我们也正在学习 正在用到的我今天介绍的主题是就是在HP One Cloud平台的一个多租户的管理那第一个就是我们介绍一下我们的HP One Cloud平台第二就是介绍一下就是我们进行一些Rate Limit的 对于每一个租户的Rate Limit一些API的数目的限制第三块就讲一下Ossentication Authorization第四个就是对于一些可观察性的增强然后我们主要是一个使用案例谢谢我们的平台就是说我们HP有很多很多很多项目那100个项目然后我们是其实内部项目然后他们会有些common features然后也有一些他们每个项目自己的feature然后HP One Cloud平台因为我们其实我们有很多的云平台在我们的内部然后是我们HP最大的一个云平台那现在已经被作为一个HP的唯一的云平台因为我们平台要进行整合所有的其他的整个平台全部去掉了然后在一到两年里面全都要把它给转成都转向我们HP One Cloud的这个平台我们是继续E-Steal的然后如果你看这里的话你就可以看到我们有一些Cluster像这样的像这边有一些Cog Cluster就是核心的一些Cluster作为一些那些共用的IPI共用的那些Service都会装在这边然后在左边这地方就是说左边这边就是说是一些各个项目的solution那每一个项目都会有一个自己的NAMS base我自己的几个NAMS base进行然后这些核心的这些项目的这些会访问一些通过MTIS通过ECMNAMS另外一个Cluster的核心的Cog Cluster的一些IPI那我们既然这样的话我们就需要它进行一些安全性的认证然后对于不同的Service进行一些IPI限制并且需要对它进行一些可观察性除了这边的左边的左下部的这些Solution Cluster其实我们对于上边的左上部还有一些Solution Cluster就是说对于有一些我们有一些项目它很大它们自己有自己的Cluster所以说我们也是允许你通过来访问我们的这个核心的平台一些共用的一些Service的其实我们关于多作户的用到的EastDial的功能很多时间有限我主要介绍三块第一块就是EastDial Rare LimitRare Limit就是说当你IPI访问量路过你很多很多的时候当你只有一些IPI我们觉得数目合格的我们就允许你访问否则的话我们就给你访问四爱九就是说你这个数目超标主要有两方面的考虑一方面是安全方面的因为我们都知道如果一个Client IP如果发过多的IPI的话我们怀疑它是一种黑客攻击或者说所以说我们需要做一些限制另外如果有一些IP它是一些我们以资本能合作伙伴们的Cluster因为他们Cluster也就是一两个IP或者三个IP我们觉得这些IP是安全的所以我们就把这个东西我们就不要enable它我们就是我们就不要做限制这就是我们的需求然后这个是强制性的一个要求然后从Business考虑的话对于一些付了钱的我们也有内部进行合算内部付了钱的租户的话我们认为我们会给你提高你的IPI的数目会有一个比较高的是对于现在你是试用性的或者说买付钱的那个租户我们会给它限制一些比较低的值当然我这个弹幕比较简单其实还有不同的级别整个级别不同的那个failure然后Project of Ona因为有些设备是它是它觉得它不需要做这种really limit的限制我们也支持你可以选择当然你的这其实我们有很多种解决方案不管是Yamaxuin的WIF的方案来解决really limit的还有我们IPI-G它们反正是这种方案但我们Esteal的一般使用是envoy的solutionenvoy real real limitenvoy field那当你一个service去访问一个后端的Esteal process它会首先进入一个envoy realenvoy field在England Gateway里面然后说去检查一下real limit的service然后real limit service下边的real limit service会访问ridius如果ridius的数目发现你这个数目没有超标那就把ridius的数目加一然后再让你继续访问然后你可以继续往下访问否则的话它就会访问十二九其实我们我看Esteal也有quick start我也是其中的contributor如果你以前没用过你直接走这个走一遍基本上就了解了然后如果你想更深了解我也有提过我自己写了一个sample然后稍微解释得详细一点然后加了一些tenant的相关的东西看不到没关系反正我点出来以后看不到的然后然后第三个就是我把这个打开这样这样可以看到数标刚才没看到数标然后能不能还OK然后就是说我自己提供了一个一些例子然后如果你看这个的话机会感到更详细这个网络有点问题我自己提供了然后我提供了一个反正我们的项目做了一些简单的sample然后你看看我这个就是我们怎么去做这个我们实际项目是怎么做的这就稍微更更加复杂一点我们原理就是说使用一个预处理的mphilter把那些复杂逻辑全部处理掉了那我们mphilter其实我们里面是基于head的所以说所以说我们作为预处理的mphilter会加一些head会加一些额外的head把逻辑全部在那里面处理掉然后在这里面就然后再进行移到下面的一个移到下面的mphilter我们在预处理的里面就于securities的怎么设置呢因为我们所有的client IP我们可以从excel4.4 去拿到拿完以后我们再定义一个列表就是说是partner class IP对于这些IP我们是不做限制的所以说我们把excel4.4 里面IP跟它进行对比发现它对比的以后发现它是一个如果它是安全的IP的话我们就不做限制我们也可以把它作为很高很高的限制相当于就是说就disable否则的话我们就enable它然后根据它的IP我们可以设置一个值我这边为了测试方面就设了一个12然后你可以设10001万这样的值1分钟然后同样的对于business purpose的话对于business purpose的话我们也是在那里预处理再把它那个加了一些头如果enable businessrelimited project项目然后passmaster根据它的tenner ID11然后进行定义一些值那project呢是根据的短漫我们那个不同project不同project是不同的短漫所以我们从那里面得到的根据它的project在一个project list是不是在我们的需要enable list里面决定它enable还是不enable然后pass呢也是我们做一些处理对于UID的pass做一些处理其实也本来就是IPR pass然后master然后tenner ID呢我们从token里面拿到了然后根据这个tenner ID呢我们有一个list就是说哪些是primiantenner ID然后就得到它的level所以说这些东西就是在它前面enable file打到以后然后就组成一个这样的complete map就是说根据这个项目的passmethod然后根据这个tenner ID以下level得到它的一个gallice可以设为一个bar这样的gallice或者设为低的4我们也可以设为不同的级别78个级别那这样呢好处是什么呢就是说如果我们用以前的那个方法就是说如果我们basic practice例子里面的方法的话我们其实要改这个前面五个文件这五个文件会改动很大定义那些key啊定义那些complete map但是如果我这样就做的话我什么都不用改前面五个文件是不用改的就写成模板了就在后面第五个文件里面就是在我们的前置的那个enable file进行处理那改动的东西里面代码逻辑也不用改就是改动一些变量例如说哪些ip我是不做那个secure therelimit的限制的哪些项目我们是要做relimit的限制的哪些项目是primea项目是需要一些高值的或者说哪些项目是级别不同的级别如果你applyapply也比较简单然后测试一下就是说我们包含了不同的测试就是说比如primea tenants有八个对于child tenants或者说或者只是使用只是用enable那个secure的或者第四个是他们两个都买enable的或者第五个是他们两个都enable其实值得一提的是他们两个都如果都enable的话那怎么办呢他们就是说他们会选择哪一个是最低值哪一个哪一个先打到下线然后哪一个就返回4i9这是我这是我自己写的一个例子我反正我很建议大家去看一下如果你们以前用过这个的话我在这边可以看到其实我以前打开了这边打有可能打不开那这是我们的代码然后这是我的例子如果你以前用过Rail Limit的话我觉得也可以参考一下然后跟我一起讨论一下你们的什么做的然后我们这个例子的优缺点然后如果你们买用过呢如果以前买用过Rail Limit的话我建议你Go through这个先Go throughquick start在Force Practice然后在这个我觉得比较有帮助然后讲第二块第二块就是Oscar CajunOscar Cajun其实是主要是意识最强的一块我只是讲一下我们的使用的一些经验或者是用的一些经历那这个图大家都很熟悉让你一个一个API过来回应到Ingress GetawayIngress Getaway的时候你会做一些Galaxy验验证然后在所有的Pod之间全都是MTLS然后是个四辈子之间访问还要进行Oscar Cajun Policy然后包括刚刚说的正数的管理然后其实我这里MTLS肯定是Enabled的Oscar Cajun里面其中有个就是MTLS然后我就不怎么讲了因为它这个配置比较简单就是都是Enabled然后你会disable一些不要的或者说或者说算盘兼容那种我主要是讲的是一个是GalaxyGalaxy Verify我们也另外一个就是Oscar Cajun PolicyGalaxy Verify就RequestOscar CajunOscar Cajun Policy我们有使用的经验就是第一期的时候我们对于所有的Oscar Cajun都是用GalaxyRequestOscar Cajun我们从一八年开始就这样做Oscar Cajun所有的那个四辈子跟四辈子之间访问能不能访问都是根据它的Pod是HOST然后然后根据它的一些Destination根据它的一些甚至它的Token然后来决定它是不是能访问访问四林三湖的说允许访问然后对于额外的其他的对Low-BasedOscar Cajun以及APS Scope甚至那个Blacklist的Token这样的东西我们用Enabled EternalOscar Cajun这样好处就是我们所有的那种情况我觉得Oscar CajunOscar Cajun非常做得好它非常方便然后不需要任何coding什么都可以做然后在我们的甚至我们遇到任何一种情况不能够今天就是要开始处理我觉得它不好的地方就是说项目越来越多特别是Oscar CajunPod是越来越多然后Oscar Cajun它配置的参数有很多然后很灵活然后在这个配置之后如果DevOps我们是DevOps去配的时候多了以后容易发生这种Type或者说错误的配置那为了解决这种Type跟错误的配置以及太多难以管理的我们开发了一个Tour叫Devile Portal然后呢会利用那个Client Go就是ECO Go Library去去生存那些Request on the Caching生存Oscar Cajun生存Board Service以及这种东西但是这个解决了自动化问题那带来一个下一个问题就是哎当你升级的时候你会升级每次意思要升级你要升级两块东西一个是我们的刚刚那个Devile Portal就是它那开发工那个平台第二个呢在升级我们的Clust他们两个总会有一个先一个后嘛对吧然后先后的时候如果你版本跨度不大还好都可以兼容版本跨度大的话那直接就不兼容了这就很麻烦了就是说然后另外一个就是因为我们把所有的配置文件都先存在数据库里面然后通过他们创造的只是生存那个只是生存那些Devile PortalRequestRequest on the CachingOscar Cajun Policy所以说呢它是用那个数据库来进行版本控制肯定不如Get Hub 这种版本控制回顾啊什么都不方便所以最后我们实际使用了最近两年使用的是这种方案就是对于那些Request on the Caching因为它是参数比较少我们还是自动化还是用它然后自动化全都是用Harm Charts 跟Flash然后对于Oscar Cajun Policy这一块呢我们把它全部整合了就是说把所有的Oscar Cajun Policy是写进Oscar Cajun Policy进去了然后这样的Oscar Cajun Policy就包含了以前的所有的Oscar Cajun Policy然后又包含了Token的一些Blacklist的还有一些API ScopeLow-Based它就变为一个方法这样方便就是说从代码轻视找出来的就更轻视了然后最后呢我们以前用的是Envoy Field 一个现在用的是Israel的一个官方比较推荐的一个Customer Action其实他们两个都很像的其实他们的原理是一样的后端Envoy Field 是一样的但是这个包装的更好好处就是刚刚说了我们不用Client Go不用Depark炮弹的工具然后自动化的话对于JWT Verifier 是用Hem然后对于一些Oscar Cajun Policy所有的东西都直接变为一个Oscar Service这样更干净然后对于Israel EternalOscar Action这个东西呢它比原生的Envoy Field会更加的好使用并且更容易的Depark然后还有一个好处它可以说加条件对吧你的Envoy Field里面是不能加条件对于某个Pass对于某个情况下我不要进行一些验证这个要求也是确实是我们这边有人要求所以说我们就用了这个就用这个它的原理其实简单就是说当一个设备是反问它的时候它会反问它是反问下一个设备是之前它会去到外部的一些我允不允许反问如果允许反问那我就继续反问如果不允许反问我就反问反回403或者甚至你可以自定义的它基于什么进行一些决定它能不能反问呢它基于你Request的那些你可以基于Messor的HosterPass你可以基于原来Request的所有的所有的Hats你甚至可以继续它的Body这样的Request所有的东西这里面还有一个好处当你反回它说403跟401的时候453的时候你还可以加一些你自己在这里面加一些你额外的Hats我们就利用这个功能就加了很多额外的Hats就是说就有一些处理直接在这里处理掉检查完以后就反回一些功用的东西然后直接过去就挺方便对于那个Envoy Filter的使用跟Eternal Oscillization的使用我也提供了两个Sample讲技术世界是没时间了所以说我就大家可以下去看一下然后我的Sample我个人感觉写的还是蛮详细的会讲的就像Eternal Oscillation的一些例子一样你一步一步的往下走走一遍就说是了然后每一个参数我也做了一些解释包括这样的参数就在我们实际使用的时候做解释所以说不管是你不管你是使用原来的Envoy Filter还是显示其实因为现在的Eternal我觉得都可以来试一下走一下这个Demo然后哪些参数是不应该使用的因为它很怪的GDP这个东西它是不支持很多东西的但是Http的话就是支持的GDP的性能又要好一些到底使用哪一个反正大家可以走一走然后以后交流讲完这些以后一个就是对可增强可观察性的一个增强包括Logs跟Magicals其实我觉得Logs比较对我们影响特别大因为我们所有的基于API的数目API的是不是反问快还是慢API的它的错误全都是基于XS Logs我不知道别人使用怎么样反正我们使用的是特别特别多然后基于它我们又进行报警然后各种报警那这里面还有一些你这里面并没有TenantID对不对这里面其实还少了一个加PC status所以说TenantID那为什么要把TenantID一个加进去呢因为我们所有的那个成本和算据于每一个设备式的那个每一个Tenant的成本和算是基于这个基于你的Tenant每一个基于你API使用量的所以说我要把这个API使用加进去以后我就能知道基于成本和算这个对于我们比较重要然后因为我们是个中台另外就是说我们一些设备式它要去把一些老的API给去掉但它发现还是被老版本还有人使用那这个时候如果我们有这个APITenantID我们就知道这些就使用老版本的这些这些API到底是哪些Tenant在使用我们就找到那些租户我们就可以通知它最后就是说我们有些时候会发现一些事故但发生事故的时候它会有些API报错然后这个时候我们至少通过这个时候我们就可以知道影响了哪些TenantID哪些Tenant的影响力到底有多大的影响这样的话也变于我们以后跟人交流进去处理事故所以说对我 我觉得这个还是蛮重要的然后它可以从tactalk里面去拿到然后另外一个对于JRPC设备式我不知道意思就是玩玩为什么没有把这个我们的设备式只有百分之六十左右的设备式使用JRPC设备式所以说没有这个东西的话这个日子使用左右就到了这样的折扣所以说我们怎么做呢我觉得很简单第一个就是我们在那个Tenant在那个起了一个mpy filter把那个talk里面的那个talk里面这就是Token解析talk里面的那个decode出来decode出来然后把TenID拿出来拿出来以后加一个head所以我们大部分都是这样去加一个head去加完head以后就加一半加一下韩话就行了Tenant ID然后request的Tenant ID这样加完就行了就JRPC status它本来就有所以说就JRPC status number就把它这样讲就加了这两行然后效果就是如果你去客它一下的话如果这个talk我这个talk这个伪造的talk是JRTIO的一个talk然后里面干好一个Tenant ID的话你去这样去弄一下的话你就会发现它就有两个都两个直转一个Tenant ID一个是那JRPC status这边有个问题要就是说就一个HTTP request应不应该把JRPC status显示出来它这个显示二呢意思是I know会给人一些些confuse然后我提了一个pr给那个m4a把这个去掉了如果只是HTTP的话它就显示now我不是大概过段时间就会应用上去已经摸击进去m5了然后我也也提供了sample code大家有空可以去走一遍最后就是一个metricusmetricus也一样也可以把Tenant ID加进去我们平时使用的那些爆表dashboard都是那个metricus的然后怎么把它加进去呢也很简单就跟刚才一样Tenant ID从那个hide里面去拿拿完以后然后你在addition到configuremapecoecoconfiguremap加一个页外的fieldTenant ID最后就是apply一个tenant match就是你可以定义说哪些加我现在是global全加加这个当然如果测试结果就是你去课堂一下然后它这个值就进去了那这里面其实有一点要小心的就是如果你这个值太多的话它会引起的metricus过多甚至把你plomax就是跑爆掉因为之前甚至还加了一些passhoster进去这个反正就是如果并不是并不可少的话也不一定要做这个事情这个这边同样我提过了sample code在这个Q&A之前我还是highlight一下就是说我对于每一种sample都提供了一个提供了一些例子然后大家有空的话希望大家去go through这些例子然后跟我之间交流好谢谢有没有什么问题好 谢谢大家反正有空上面还可以跟今天交流