Tetrate 概念
组织(Organization)
‘组织’ 是对象层次结构的根。组织包含了租户、用户、团队、集群和工作区的层次结构。组织还是定义了 TSB 全局设置的位置。
在 TSB 中,你可以定义根组织的名称和属性,以反映你的企业层次结构。
在 TSE 中,组织名称是硬编码为 tse
,不可编辑。
组织用户(Organization Users)
TSB 和 TSE 中的组织与身份提供者(IdP)关联。用户和团队代表组织结构,定期从你提供的 IdP 同步,以便进行访问策略配置。
TSB 允许你定义多个团队,并关联具有精细化角色的团队,然后将用户映射到团队成员。
TSE 使用默认的 tse-admin 用户,以及单个团队和角色。其他用户可以从 IdP 同步,它们都继承了单个团队成员和角色。
租户(Tenant)
租户是服务桥对象层次结构中组织内的一个自包含实体。租户可以是业务单元、组织单元或与公司结构匹配的任何逻辑分组。
tse
租户和扁平的层次结构。
工作区(Workspace)
工作区是由平台所有者定义的一组一个或多个命名空间。这些命名空间可以跨多个 K8s 集群。
用户可以为工作区分配配置或策略,然后 TSB/TSE 将这些转化为 Istio 每个命名空间的配置。工作区提供了一个便捷的高级抽象,与组织的应用程序相一致,通常跨越多个命名空间和/或集群。
组(Group)
在工作区的上下文中,组是相关 Istio 配置类型的集合。例如,“安全组”包含与工作区的访问控制、身份验证和授权相关的所有配置。流量组和网关组类似地包含与流量管理和入口网关相关的配置。
工作区中的组通常是可以独立管理的最小自包含配置集合。
- 安全组(Security Group):安全组包含工作区的所有与安全相关的 Istio 配置。这包括 mTLS 和身份验证策略。
- 流量组(Traffic Group):流量组包含工作区的所有与流量管理相关的 Istio 配置。这包括速率限制、金丝雀和流量分割配置。
- 网关组(Gateway Group):网关组定义了工作区的入口网关策略。这些策略适用于管理流向该工作区服务的入口网关。
直接模式和桥接模式
工作区和组配置为直接模式或桥接模式之一。
- 在 直接模式 中,用户使用相应类型的 Istio 配置配置工作区和组。例如,用户可以将 Istio 安全配置分配给工作区和其安全组。然后验证此配置并将其部署到底层网格实例。
- 在 桥接模式 中,用户仅使用 Tetrate 的高级抽象配置工作区和组。这些抽象设计得更简单,更符合常见用例,例如为工作区定义入口。这些抽象会转化为 Istio 配置并部署到底层网格实例。
直接模式和桥接模式以细粒度应用。例如,对于给定的工作区,安全和流量组可以在直接模式下运行,而网关组可以在桥接模式下运行。这是因为工作区的配置完全由三个组覆盖,并且这些组不重叠或干扰彼此。
服务与应用
服务(Service)
服务是一个可识别且具有独立身份验证的网络可寻址目标。此目标由一组服务实例提供,这些实例是承载服务的个体工作负载。
在 Kubernetes 中,服务对应于服务资源类型。在 Kubernetes 之外,服务可以标识其他可寻址的工作负载,例如基于 VM 的工作负载或第三方 API。
服务具有以下属性:
- 身份(Identity):服务的多个实例可以分布在不同的节点上,以提供可伸缩的集体服务。所有实例都使用相同的服务身份进行验证和验证。服务身份是 SPIFFE SVID。
- 端点(Endpoint):服务端点是一个完全限定的域名(FQDN)、URI 路径或具有一组方法的类。
- 端点方法(Endpoint Method):托管端点的服务可以是不同协议的。这些定义了特定于服务提供的协议的动
词集。例如,每个端点的 HTTP 动词可以是用来表达 CRUD 操作的方法,对于 gRPC,它将是 protobuf 类的一部分的方法。
- 类型(Kind):服务类型是服务的类型或类。类型声明为元组 {Protocol, Internal|External},例如 {HTTP, Internal} 或 {SQL, Internal},或 {grpc, External}。‘外部’ 表示通过网关跳跃使用该服务。
- 可见性(Visibility):可见性采用私有、共享或公共的值,并控制通过服务注册表呈现服务的方式
服务身份验证 使用 mTLS 和 SPIFFE 标准。 服务授权 是基于交易中双方的身份验证和定义允许操作的安全策略的许可决策。授权在中心定义,并在每个事务中本地评估。 服务访问控制 是基于权限(允许操作)和其他策略(如速率限制或配额)的访问决策。
工作负载(Workload)
工作负载是个体可寻址的服务组件。
在 Kubernetes 中,工作负载对应于个体 Pod。在其他环境中,“工作负载”可能指的是单个 VM 或在该 VM 中运行的应用程序。
服务注册表(Service Registry)
服务注册表是可由机器读取的正在运行的可被其他服务或用户调用的服务列表。这些服务是可发现、可寻址、可路由和可控制的。
Tetrate 管理的网格动态使用服务注册表来发现服务实例,确定如何路由流量,并了解其他访问控制参数。
应用程序(Application)
应用程序是通过一个或多个 API 可访问的服务的逻辑分组。
应用程序资源是 TSE 中的便捷方式,用于定义一组服务以及它们公开的 API,可以供最终用户或其他服务使用。应用程序的内容,就像一个 ‘对象’,是不透明的。
API(API)
API 是为应用程序提供功能的端点。
API 是一种类似于 Ingress 资源的资源。API 资源包装了一个 OAS 定义,如果需要,还包含了 Tetrate 特定的注释。API 资源还包含了包含 API 的应用程序资源(application)、公开 API 的 Ingress 网关,以及实现 API 的 Kubernetes 服务。
API 资源为应用程序所有者提供了一种便捷的方式来公开由应用程序实现的 API。
架构组件
更多信息可在 TSB 架构页面 或 TSE 架构页面 中找到。
管理平面(Management Plane)
管理平面是在 Tetrate 管理的环境中访问所有内容的主要访问点。它配置网络、安全性和可观测性,并公开 UI、CLI 和 API 以进行更新和更改。它在多个控制平面服务网格中提供集中控制。
中央控制平面(Central Control Plane)
中央控制平面是管理平面的一部分。其角色是接受管理平面提供的“配置意图”和由每个受管理网格提供的“运行时状态”,然后将这些协调成 Istio 配置。然后将此配置可靠地分发到每个远程网格。
控制平面(Control Plane)
边缘控制平面部署在每个受管理的 Kubernetes 集群中。它负责在该集群中部署 Istio 实例,接收和应用来自中央控制平面的 Istio 配置,并收集和转发遥测和其他运行时数据到管理平面。
Istio
Istio 是领先的服务网格实现。边缘控制平面在每个已管理(已“登机”的)集群中部署 Istio 实例,并使用 Istio 作为集群内的本地控制点,以管理网络活动。
Istio 通过主动配置集群内网格数据平面提供加密、安全、流量管理等功能。
数据平面(Dataplane)
由 Envoy 驱动,网格数据平面拦截并控制集群内的网络流量,工作在第 7 层。它与处理 Ingress(进入集群)和 Egress(离开集群)事务的各种网关进行交互。数据平面实现为一组 Sidecar 代理。
Sidecar 代理(Sidecar Proxy)
Sidecar 代理是 Envoy 的一个实例,部署在你的应用程序旁边。它透明地拦截进出应用程序的流量,使服务网格能够实现其流量管理、安全性和可观测性功能。这与负载均衡器或网关不同,后者是单独部署在应用程序之外的。
网关
网关是位于网格边缘的代理,用于接收进入或离开的 HTTP/TCP 连接。网关通常使用 L7 代理(Envoy)实现,并执行安全性和流量管理功能(身份验证、TLS 终止、负载平衡等)。它们是策略执行的关键控制点。
在部署中,可以找到几种类型的网关。
入口网关(Ingress Gateway)
入口网关部署在工作负载环境的边界,例如一个网格。入口网关的目的是接收流向环境内服务的流量,应用安全性和流量管理策略,并将每个请求转发到目标服务。
入口网关通常部署在每个 Kubernetes / Mesh 集群中,处理来自公共互联网等外部流量,服务于该单个集群内的服务。
边缘网关(Edge Gateway)
边缘网关(有时称为“Tier-1 网关”)部署在客户运营基础设施的外部边界。边缘网关的目的是接收流向基础设施内服务的流量,应用策略,然后将每个请求转发到基础设施内的下一跳。
边缘网关通常部署在多个工作负载环境前面,例如多个 EKS 集群。它负载平衡跨这些集群的流入流量,实现高可用性和负载分发。
东西网关(EastWest Gateway)
东西网关部署在工作负载环境的边界,例如一个网格。与入口网关不同,东西网关的目的不是处理外部流量;相反,东西网关处理来自对等环境(例如其他网格)的流量。
东西网关可用于连接内部网格网络,以便一个集群中的服务可以访问另一个集群中的服务,而不需要将这些服务中的任何一个暴露给公共访问。它在 Tetrate 的内部服务的高可用性解决方案中使用。
出口网关(Egress Gateway)
出口网关部署在工作负载环境的边界,例如一个网格。它的目的是处理离开网格的流量,即来自希望使用外部(例如公共)服务和 API 的内部服务。
出口网关在访问外部服务时提供了一个控制点。它可以用于应用访问控制策略,或者添加使用外部服务所需的身份验证令牌。
过渡网关(Transit Gateway)
过渡网关位于非网格工作负载旁边,例如虚拟机。它用于将网格边界扩展到更靠近外部工作负载的地方。
API 网关(API Gateway)
API 网关是一种配置用于传送 API 流量的 Ingress 网关形式。API 网关通常使用 API 规范(例如 OpenAPI 规范)进行配置,而不是使用完全限定域名和路径,它们通常允许用户配置特定于 API 的策略,如速率限制、身份验证和 CORS 头管理。