译者|李锐审稿人|孙淑娟APIGateway在暴露微服务时起到了至关重要的作用。它们是网络中的一个附加跃点,传入请求必须通过该跃点才能与服务通信。API网关在收到来自客户端的请求后执行路由、组合、协议转换和用户策略实施,然后将它们反向代理到适当的底层API。由于API网关能够执行上述任务,它们还可以配置为将传入的客户端请求发送到外部第三方授权(authz)服务器。然后传入请求的命运取决于此外部身份验证服务器对网关的响应。这就是开放策略代理(OPA)发挥作用的地方。开源的Kubernetes-nativeAPI网关有很多,比如Contour、KongGateway、Traefik、Gloo等,下面我们来详细了解一下EmissaryIngress。什么是使者入口?EmissaryIngress早期被称为AmbassarAPIGateway;它是一个开源的Kubernetes-nativeAPI网关,目前是云原生应用计算基金会(CNCF)的孵化项目。与许多其他Kubernetes网关一样,Emissary是为与Envoy代理一起工作而构建的。它被部署为一个完整的无状态架构,并支持多种插件,例如传统的SSO身份验证协议(例如OAuth、OpenIDConnect)、速率限制、日志记录和跟踪服务。Emissary在AuthService资源中使用其ExtAuth协议来配置传入请求的身份验证和授权。ExtAuth支持两种协议:gRPC和HTTP。对于gRPC接口,外部服务必须实现Envoy的external_auth.proto。OPAOpenPolicyAgent(OPA)是一个众所周知的通用策略引擎,已成为跨堆栈的策略执行器,无论是API网关、服务网格、Kubernetes、微服务、CI/CD还是IAC。OPA将决策制定与策略执行分开,因此每当软件需要对传入请求做出决策时,它都会查询OPA。OPA-Envoy使用gRPC服务器扩展了OPA,实现了Envoy的外部授权API,使其与Emissary的外部授权服务器兼容。将EmissaryIngress与OPA集成上图显示了Emissary和OPA集成的高级架构。当来自客户端的传入请求到达Emissary时,它会使用输入JSON向OPA发送授权请求。OPA根据提供给它的Rego策略评估此JSON并响应Emissary;如果来自OPA的此结果JSON允许为真,则只有客户端请求进一步路由到API,否则请求将被Emissary拒绝并且永远不会到达API。EmissaryIngress将安装并与OPA集成以进行外部授权。(1)入门首先需要启动一个Minikube集群。如果你没有Minikube,你可以从这里安装它。minikubestart通过Helm将EmissaryIngress安装到minikube。#添加Repo:helmrepoadddatawirehttps://app.getambassador.iohelmrepoupdate#创建命名空间并安装:kubectlcreatenamespaceemissary&&\kubectlapply-fhttps://app.getambassador.io/yaml/emissary/2.2.2/emissary-crds.yamlkubectlwait--timeout=90s--for=condition=available部署emissary-apiext-nemissary-systemhelminstallemissary-ingress--namespaceemissarydatawire/emissary-ingress&&\kubectl-nemissarywait--forcondition=available--timeout=90sdeploy-lapp.kubernetes.io/instance=emissary-ingress或参考EmissaryIngress文档以通过KubernetesYAML安装它。(2)为演示应用配置路由不同的网关有自己的一套暴露服务的配置。在Emissary中,路由需要通过地图和监听器来配置。映射资源只是告诉Emissary将传入请求重定向到哪个服务。它像Ingress一样是高度可配置的。将创建一个简单的映射资源,将所有传入请求重定向到演示应用程序的服务demo-svc。猫<
