当前位置: 首页 > 科技观察

Linkerd2.10—设置服务配置文件

时间:2023-03-13 18:38:12 科技观察

本文转载自微信公众号《黑客下午茶》,作者为邵。转载本文请联系黑客下午茶公众号。Linkerd2.10中文手册正在不断修订和更新中:https://linkerd.hacker-linner.com服务配置文件为Linkerd提供有关服务以及如何处理服务请求的额外信息。当Linkerd代理收到HTTP(而非HTTPS)请求时,它会识别请求的目标服务。如果该目标服务存在服务配置文件,则该服务配置文件用于提供每个路由的指标、重试和超时。请求的目标服务是通过选择第一个标头的值、l5d-dst-override、:authority和Host来计算的。端口组件(如果包含并包含冒号)将被去除。此值映射到完全限定的DNS名称。当目标服务与发送方或接收方命名空间中的服务配置文件名称匹配时,Linkerd将使用它来提供每个路由的指标、重试和超时。有时您可能需要为驻留在您无法控制的名称空间中的服务定义服务配置文件。为此,只需像以前一样创建一个服务配置文件,但将服务配置文件的命名空间编辑为调用该服务的pod的命名空间。当Linkerd代理服务请求时,源命名空间中的服务配置文件将优先于目标命名空间中的服务配置文件。您的目标服务可能是ExternalName服务。在这种情况下,使用spec.metadata.name和spec.metadata.namespace值来命名您的ServiceProfile。例如,apiVersion:v1kind:Servicemetadata:name:my-servicenamespace:prodspec:type:ExternalNameexternalName:my.database.example.com使用名称my-service.prod.svc.cluster.local作为ServiceProfile。请注意,目前您无法在Web仪表板中查看为此服务配置文件中的路由收集的统计信息。您可以使用CLI获取统计信息。有关完整的演示演练,请查看图书演示。有几种不同的方法可以使用linkerd配置文件来创建服务配置文件。`与路由关联的请求将具有rt_route注释。要手动验证请求是否正确关联,请在您自己的部署上运行tap:linkerdviztap-owide|grepreq输出将实时流式传输deploy/webapp正在接收的请求。一个示例是:reqid=0:1proxy=insrc=10.1.3.76:57152dst=10.1.3.74:7000tls=disabled:met相反,如果rt_route不存在,则该请求不与任何路由关联。尝试运行:linkerdviztap-owide|grepreq|grep-vrt_routeSwagger如果您的服务有OpenAPI(Swagger)规范,您可以使用--open-api标志从OpenAPI规范文件生成服务配置文件。linkerdprofile--open-apiwebapp.swaggerwebapp这会从webapp.swaggerOpenAPI规范文件生成webapp服务的服务配置文件。生成的服务配置文件可以直接通过管道传输到kubectlapply并将安装到服务的命名空间中。linkerdprofile--open-apiwebapp.swaggerwebapp|kubectlapply-f-Protobuf如果你的服务有protobuf格式,你可以使用--proto标志来生成服务配置文件。linkerdprofile--protoweb.protoweb-svc这将为web-svc服务从web.proto格式文件生成服务配置文件。生成的服务配置文件可以直接通过管道传输到kubectlapply并将安装到服务的命名空间中。自动创建没有OpenAPI规范或protobuf的格式是很常见的。您还可以通过观看实时流量来生成服务配置文件。这是基于点击数据,是查看服务配置文件可以为您做什么的好方法。要启动此构建过程,您可以使用--tap标志:linkerdvizprofile-nemojivotoweb-svc--tapdeploy/web--tap-duration10s这将在运行服务配置命令的10秒内根据观察到的部署/网络流量生成tapdeploy文件。生成的服务配置文件可以直接通过管道传输到kubectlapply并将安装到服务的命名空间中。模板除了自动创建服务配置文件的所有方法外,您还可以获得一个允许您手动添加路由的模板。要生成模板,请运行:linkerdprofile-nemojivotoweb-svc--template这会生成一个服务配置文件模板,其中包含可以手动更新的示例。更新服务配置文件后,使用kubectlapply将其安装到集群上服务的命名空间中。