安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

运维自动化之nacos,apollo,k8s常用API汇总

2月2日 飞凤谷投稿
  1。NacosAPI
  本代码包括列出service列表,列出指定服务下实例列表,服务上下线,实例注册,服务信息修改等方法,更多关于nacosapi的详细信息,请参考https:nacos。iozhcndocsopenapi。html,importrequestsclassNacosAPI(object):definit(self,url,username,password):self。auth,self。url{username:username,password:password},urlself。responserequests。post(snacosv1authuserslogin(self。url),dataself。auth,verifyFalse)。json()self。params((accessToken,self。response〔accessToken〕),)defservicesList(self):列出service列表datarequests。get(snacosv1nscatalogservices?pageNo1pageSize100self。url,paramsself。params)。textprint(data)definstanceList(self,service):列出指定服务下实例列表datarequests。get(snacosv1nsinstancelist?serviceNames(self。url,service),paramsself。params)。textprint(data)defchangeStatus(self,serviceName,ip,port,enabled):实例上下线enabled:true上线,false下线self。data{serviceName:serviceName,ip:ip,port:port,enabled:enabled}datarequests。put(snacosv1nsinstance(self。url),paramsself。params,dataself。data,verifyFalse)。textprint(data)defregister(self,serviceName,ip,port):实例注册urlsnacosv1nsinstance(self。url)datarequests。post(url,data{ip:ip,port:port,serviceName:serviceName})print(data。text)definstanceChange(self):修改实例信息data{serviceName:merchantorder,ip:10。42。4。129,port:8080,clusterName:DEFAULT,weight:1,enabled:False}responserequests。put(urlsnacosv1nsinstance(self。url),datadata)print(response。text)ifnamemain:nacosNacosAPI(http:192。168。3。160:8848,nacos,NACOS)nacos。register()
  2。Apollo前台界面API
  因开放平台未支持授权,故抓取了前台界面的api实现批量授权功能,开放平台的管理需要提前授权才能管理importrequestsclassapolloweb():definit(self,potalurl,username,password):self。potalurl,self。username,self。passwordpotalurl,username,passworddata{username:username,password:password}responserequests。post(f{self。potalurl}signin,datadata,allowredirectsFalse)self。SESSIONdict(response。cookies)〔SESSION〕defAuthorizeApp(self,Token,app:str):授权应用给用户cookies{NGTRANSLATELANGKEY:zhCN,SESSION:self。SESSION}params((envs,〔DEV,SIT〕),(type,AppRole))headers{ContentType:applicationjson}data{appId:s}appresponserequests。post(f{self。potalurl}consumers{Token}assignrole,paramsparams,headersheaders,cookiescookies,datadata,verifyFalse)print(response。text)ifnamemain:apolloapolloweb()apollo。AuthorizeApp(Token,sms)
  3。Apollo开放平台API
  本代码包含获取配置,修改配置,发布配置,批量发布配置等功能,在我的日常工作中,批量发布用的很频繁,importrequests,jsonfromloguruimportloggerclassApolloAPI(object):definit(self,apolloenv):apolloinfo{aliyun:{url:http:apollo。ali。cn,token:a2814e7476b64fbdb08d9e9ec0b2d2d76e621cac},local:{url:http:apollo。tenx。cn,token:a2814e7476b64fbdb08d9e9ec0b2d2d76e621cac}}self。apollourlapolloinfo〔apolloenv〕。get(url)self。apps〔zuul,omc,oms,omss〕self。headers{Authorization:apolloinfo〔apolloenv〕。get(token),ContentType:charsetUTF8}defGetnamespaceName(self,env,appid,clusterNamedefault):获取某集群下,指定appid的所有namespaceurlsopenapiv1envssappssclusterssnamespaces(self。apollourl,env,appid,clusterName)datarequests。get(url,headersself。headers)。json()result〔x〔namespaceName〕forxindata〕returnresultdefAddAppConfig(self,env,appId,namespaceName,key,value,comment,clusterNamedefault):添加配置urlsopenapiv1envssappssclusterssnamespacessitems(self。apollourl,env,appId,clusterName,namespaceName)data{key:key,value:value,comment:comment,dataChangeCreatedBy:apollo}resposerequests。post(url,jsondata,headersself。headers)print(新增配置:环境:s,appId:s,namespaceName:s,key:s,value:s,新增配置结果:s(env,appId,namespaceName,key,value,respose。text))defReleasesAppOneNamespaceName(self,env,appId,namespaceName,clusterNamedefault):发布指定appid下指定的namespaceurlsopenapiv1envssappssclusterssnamespacessreleases(self。apollourl,env,appId,clusterName,namespaceName)data{releaseTitle:releaseTitle,releaseComment:releaseComment,releasedBy:apollo}resposerequests。post(url,jsondata,headersself。headers)logger。info(ReleasesAppOneNamespaceName:respose:s(respose。text))ifrespose。statuscode200:return发布成功else:return发布失败,HTTP状态码:srespose。statuscodedefReleasesAppAllNamespaceName(self,env,appId,clusterNamedefault):发布指定appid下所有namespaceresult〔〕namespaceNamesself。GetnamespaceName(env,appId,clusterName)fornamespaceNameinnamespaceNames:logger。info(ReleasesAppAllNamespaceName:app:s,namespaceName:s(appId,namespaceName))result。append(self。ReleasesAppOneNamespaceName(env,appId,namespaceName,clusterName))returnresultdefReleasesAllApps(self,envFINDEV):发布指定环境的所有应用forappinself。apps:try:resultself。ReleasesAppAllNamespaceName(env,app)logger。info(app:s,s(app,result))exceptExceptionase:logger。info(ReleasesAllApps:s,error:s(app,e))defBeforeReleasesDetailAll(self,env,appId,clusterNamedefault):获取即将发布后的配置信息result{}urlsopenapiv1envssappssclusterssnamespaces(self。apollourl,env,appId,clusterName)try:resposerequests。get(url,headersself。headers)。json()forxinrespose:result〔x〔namespaceName〕〕{}foriinx〔items〕:result〔x〔namespaceName〕〕〔i〔key〕〕i〔value〕returnresultexceptExceptionase:print(BeforeReleasesDetailAll:s:s(env,appId))raiseException(sdsdsdsd)defCurrentReleasesedDetailAll(self,env,appId,clusterNamedefault):获取发布前的配置信息result{}namespaceNamesself。GetnamespaceName(env,appId,clusterName)fornamespaceNameinnamespaceNames:urlsopenapiv1envssappssclusterssnamespacessreleaseslatest(self。apollourl,env,appId,clusterName,namespaceName)resposerequests。get(url,headersself。headers)ifrespose。text:resposejsonrespose。json()result〔resposejson〔namespaceName〕〕resposejson〔configurations〕returnresultifnamemain:apolloApolloAPI(ali)apollo。ReleasesAllApps(PRE)
  4。K8SAPI
  本代码支持文件和文本认证信息,方便根据实际情况开发fromkubernetesimportclient,configfromkubernetes。client。restimportApiExceptionclassKubernetesAPI:definit(self,kubeconf):文件config。loadkubeconfig(kubeconf)definit(self,kubeconftext):文本yamldatayaml。load(kubeconftext,Loaderyaml。Loader)k8loaderkubeconfig。KubeConfigLoader(yamldata)callconfigtype。call(Configuration)k8loader。loadandset(callconfig)Configuration。setdefault(callconfig)deflistnode(self):列出nodev1client。CoreV1Api()try:retv1。listnode(watchFalse)result{code:200,data::〔{uid:x。metadata。uid,name:x。metadata。name,creattime:x。metadata。creationtimestamp,podcidrs:x。spec。podcidrs,podcidr:x。spec。podcidr,unschedulable:x。spec。unschedulable}forxinret。items〕}exceptApiExceptionase:result{code:500,msg:e}returnresultdeflistnamespace(self):列出namespacev1client。CoreV1Api()try:retv1。listnamespace(watchFalse)result{code:200,data::〔{uid:x。metadata。uid,name:x。metadata。name,creattime:x。metadata。creationtimestamp}forxinret。items〕}exceptApiExceptionase:result{code:500,msg:e}returnresultdeflistdeploymet(self,namespaces):列出指定namespaces的deploymetv1client。AppsV1Api()try:retv1。listnamespaceddeployment(namespaces,watchFalse)result{code:200,data:〔{uid:x。metadata。uid,name:x。metadata。name,namespace:x。metadata。namespace,replicas:x。spec。replicas,status:x。status。availablereplicas,creattime:x。metadata。creationtimestamp}forxinret。items〕}exceptApiExceptionase:result{code:500,msg:e}returnresultdeflistpods(self,namespace):v1client。CoreV1Api()try:retv1。listnamespacedpod(namespace)result{code:200,data:〔{uid:x。metadata。uid,name:x。metadata。name,podip:x。status。podip,hostip:x。status。hostip,creattime:x。metadata。creationtimestamp}forxinret。items〕}exceptApiExceptionase:result{code:500,msg:e}returnresultdeflistpodsdeployment(self,namespace,deployment):查询deployment的podsv1client。CoreV1Api()try:retv1。listnamespacedpod(namespace,labelselectorapp。kubernetes。ionamesdeployment)result{code:200,data:〔{uid:x。metadata。uid,name:x。metadata。name,podip:x。status。podip,hostip:x。status。hostip,creattime:x。metadata。creationtimestamp}forxinret。items〕}exceptApiExceptionase:result{code:500,msg:e}returnresultdefquerypodstdoutlogs(self,namespaces,pod):查看podstdout日志v1client。CoreV1Api()try:result{code:200,data:v1。readnamespacedpodlog(pod,namespaces)}exceptApiExceptionase:result{code:500,msg:e}returnresultdefquerydeploymentstdoutlogs(self,namespace,deployment):查看deployment下pod的日志result〔〕querypodsself。listpodsdeployment(namespace,deployment)ifquerypods〔code〕200:forxinquerypods〔data〕:result。append({name:x〔name〕,logs:self。querypodstdoutlogs(namespace,x〔name〕)})else:result{code:500,msg:查询pod出错:squerypods〔msg〕}returnresultdefremovepod(self,namespace,podname):删除podv1client。CoreV1Api()try:v1。deletenamespacedpod(podname,namespace)return{code:200,msg:删除成功}exceptApiExceptionase:return{code:500,msg:str(e)}defdeploymentsetvar(self,namespace,deployment,key,value):设置deployment变量v1client。AppsV1Api()body{spec:{template:{spec:{containers:〔{env:〔{name:key,value:value}〕,name:deployment}〕}}}}try:v1。patchnamespaceddeployment(namedeployment,namespacenamespace,bodybody)return{code:200,msg:设置成功}exceptApiExceptionase:return{code:500,msg:str(e)}ifnamemain:ssKubernetesAPI(D:Softwareconfig)sssss。querydeploymentstdoutlogs(dev,qtz)print(sss)
投诉 评论 转载

让人心烦的支付宝支付宝开始面向市场出现在大众面前的时候,给大家带来了不少方便,随着时间推移,乱七八糟的东西应运而生,推送信息每天不断的骚扰,为什么说它是骚扰呢!其一,信息不是支付方面的信息,也……国产X86CPU的现状研发近10年,市场份额基本为0众所周知,国产一共有6大CPU,分别是华为鲲鹏、龙芯、兆芯、海光、申威、飞腾。其中华为鲲鹏、飞腾采用ARM架构,龙芯采用MIPS架构,申威是alhpa架构,而海光、兆芯使……智能投影涨势喜人会取代电视吗?伴随着互联网的发展,人们的社交与个人娱乐生活完全互联网化,导致由电视媒介的繁荣所造就的客厅娱乐文化被瓦解。伴随着互联网一同成长的Z世代离开客厅,年轻消费者不再需要电视。在……银河电子2022年第一季度净利4702。21万同比减少13。挖贝网4月18日,银河电子(002519)发布2022年第一季度报告,公告显示,本报告期内营业收入270,037,254。84元,同比减少40。70;归属于上市公司股东的净利润……2022备用机选择本人重度手机使用者,加上开宽带又增加了两个号码就想弄台备用机。要求能玩王者刷抖音,CPU最低骁龙660、665、670、675、710、835、845、天玑800U,麒麟……毫末智行完成数亿元A轮融资国家队出手领投,高瓴深耕自动驾驶全近日,毫末智行宣布获得A轮数亿元融资。本轮融资由中银集团投资有限公司(以下简称中银投)领投,首钢基金旗下首程资本跟投,募得资金将持续加强毫末智行的自动驾驶研发投入和人才体系建设……Python中argsargs到底是什么有啥区别怎么用args不定参数,元组,如(1,2,n)kwargs传入键值对,字典(例如:num111,num222)先看示例1:deftest(a,b,c3,args):print(……仅售8499元!索尼Xperia1国行版正式发布点击右上角关注我们,每天给您带来最新最潮的科技资讯,让您足不出户也知道科技圈大事!北京时间5月20日下午,索尼在SonyExpo2021展会上正式发布索尼Xperia1国……来自未来的智能生活Aqara妙控套装体验不知从什么时候开始,智能家居这个词开始在各大数码品牌和装修公司疯狂传播,但功能确良莠不齐,并且很难兼容,在以前,很难有一个品牌能够把所有的智能设备完美的连接到一起,虽然我很想让……运维自动化之nacos,apollo,k8s常用API汇总1。NacosAPI本代码包括列出service列表,列出指定服务下实例列表,服务上下线,实例注册,服务信息修改等方法,更多关于nacosapi的详细信息,请参考http……AppleMusic开始向部分用户提示无损音频与杜比全景声功随着AppleMusicLossless流媒体音乐服务即将于6月的某个时候上线,一些用户也开始率先收到新功能的提示。在距离苹果开发者大会(WWDC2021)只剩一周的时候,个别……冷冻能否杀死寄生虫?冷冻是可以杀死寄生虫的。不过要有一定的温度和冷冻时间。并不是说放进冰箱里放一天就可以了。因为我的特长领域是水族系列的,在这里我就拿鱼类举例。离我们最近的就是日本料理……
果粉有盼头了!2023年,苹果信号问题将彻底解决VivoNEX5曝光,自研芯片骁龙898,屏下镜头加持互联网快报马斯克称自己可能神秘地死亡新出的影视软件App,支持三端缓存下载,高清画质秒播太爽了骁龙895开始流片台积电4nm工艺性能提升20,同样发热严重国内有哪些空调品牌做得比较好?1500元以下真的买不到好手机吗?我反对腾讯又在抢三大运营商的饭碗?智慧能源新赛道哪吒汽车走得很稳!五部门出手,滴滴再次被约谈,10余家网约车平台被拖下水?一直建议大家买4000元以下的手机,三大原因如何在东南亚做反洗钱和KYC?丁娜娜罗海燕专业解答需要谨慎对待的的高考化学细节微信支付密码忘记了怎么办(微信被盗钱会不会被转走)街拍摄影凤皇石私家车有误工费的条件是什么三星e250相关报价及参数介绍祝爱人生日快乐贺词债权转让借贷合同纠纷合并审理的当事人包括谁?米家的首款塔扇产品与落地扇相比究竟有何不同?红魔6氘锋透明版和红魔5G氘锋透明版有什么区别哪个好外媒ASML开始产生了叛逆心理创办“湾仔码头”的臧健和去世了,她把水饺从小摊卖到全球

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利