术语表
A
- Adapters
适配器(adapter)是 Istio 策略和遥测组件 Mixer 的插件,可使其与一组开放式基础架构后端交互, 这些后端可提供核心功能,例如日志记录、监控、配额、ACL 检查等等。运行时所使用的精确的适配器集合是通过配置确定的, 并可以针对新的或定制的基础架构后端轻松扩展。
- Ambient
Ambient 指的是一种数据面模式, 由每个节点以及可选的按命名空间的组件构成。 Ambient 模式是基于 Sidecar 部署的替代方案。
- Annotation
注解(Annotation)指的是附加到 Pod 等某个资源的 Kubernetes 注解。 有关 Istio 专用的有效注解列表,请参见 Resource Annotations。
- Attribute
属性控制着网格中服务运行时的行为,是一堆有名字的、有类型的元数据,它们描述了 Ingress 和 Egress 流量,以及这些流量所在的环境。 一个 Istio 属性包含了一段特定的信息,例如 API 请求的错误代码、API 请求的延迟或 TCP 请求的原始 IP 地址。例如:
request.path: xyz/abc request.size: 234 request.time: 12:34:56.789 04/17/2017 source.ip: 192.168.0.1 destination.workload.name: example
Istio 的策略和遥测功能会用到属性。
C
- Cluster
集群是运行容器化应用程序的一组计算节点。 通常,组成集群的计算节点彼此可以直接连接。 集群通过规则或策略限制外部访问。
- Control Plane
控制平面是一组系统服务,这些服务配置网格或者网格的子网来管理工作负载实例之间的通信。 单个网格中控制平面的所有实例共享相同的配置资源。
- CRD
自定义资源定义 (CRD) 是默认的 Kubernetes API 扩展。Istio 使用 Kubernetes CRD API 来配置,即使是在非 Kubernetes 环境下部署的 Istio 也是如此。
D
E
- Envoy
Envoy 是在 Istio 里使用的高性能代理,用于为所有服务网格里的服务调度进出的流量。 了解更多关于 Envoy。
- External Control Plane
External Control Plane 是从外部管理运行在自己的 Cluster 或者其他基础设施中的网格工作负载的 Control Plane。 Control Plane 可以部署在一个 Cluster 中,尽管不能部署在它所控制的网格的一部分 Cluster 中。 它的目的是将 Control Plane 与网格的 Data Plane 完全分离。
F
- Failure Domain
故障域是计算环境中物理或者逻辑的一部分,当关键设备或服务遇到问题时,它也会受到负面影响。
对于 Istio 部署而言,故障域可能包含平台中的多个可用性区域。
H
- HBONE
基于 HTTP 的上层网络环境(HTTP-Based Overlay Network Environment,HBONE) 是在 Istio 组件之间使用的安全隧道化协议。在 HBONE 中,用户流量通过 mTLS 身份验证加密的 HTTP
CONNECT
隧道进行安全的隧道传输。
I
- Identity
身份是基本的安全基础结构概念。Istio 的身份模型是基于第一阶级的工作负载身份。在服务之间的通信开始时,双方使用身份信息交换证书来实现相互认证的目的。
客户端根据其安全的命名信息检查服务器的身份,以便确定服务器是否被授权运行服务。
服务器检查客户端的身份,以确定客户端可以访问的信息。服务器基于客户端的身份,来确定配置的策略。
通过使用身份,服务器可以审核访问信息的时间和特定客户端访问的信息内容。还可以根据客户使用的服务向他们收费,并拒绝任何未付款的客户访问服务。
Istio 身份模型非常灵活,粒度足以代表单个用户、单个服务,或者一组服务。在没有第一阶级服务身份的平台,Istio 可以使用其他的身份为服务实例进行分组,例如服务名称。
Istio 在不同的平台上支持以下服务身份:
Kubernetes: Kubernetes 服务账户
GKE/GCE: GCP 服务账户
GCP: GCP 服务账户
AWS: AWS IAM 用户/角色 账户
本地 (非 Kubernetes):用户账户、客户服务账户、服务名称、Istio 服务账户或者 GCP 服务账户。 客户服务账户指现有的服务账户,就像客户身份目录中管理的身份。
通常,信任域指定身份所属的网格。
- Injection
注入或 Sidecar 注入是指在创建时使用 动态 Webhook 来修改 Pod 规范。 注入可用于为网格服务添加 Envoy Sidecar 配置或配置网关 的 Envoy 代理。
有关更多信息,请参阅安装 Sidecar。
- IO
- IOP
- Istio Operator Custom Resource
Istio Operator Custom Resource 通常使用缩写
IOP
或IO
来表示, 指的是在使用istioctl install
命令或集群内 Operator 进行安装时用于配置 Istio 安装的自定义资源。- Istiod
Istiod 组件是单体 Control Plane 二进制的组合体,封装了 Pilot、Galley、Citadel 和 Sidecar 注入器的功能。
M
- Managed Control Plane
托管控制平面是一个为客户提供管理的控制平面。 托管控制平面降低了用户部署的复杂性,并通常保证一定水平的性能和可用性。
- Mesh Federation
网格联邦是在网格之间公开服务的一种行为,并且能跨越网格边界进行通信。每一个网格或许会公开其一部分的服务,使一个或多个其他网格使用此公开的服务。 您可以使用网格联邦来启用网格之间的通信,可参阅多个网格部署。
- Micro-Segmentation
Micro-segmentation 是一种安全技术,可在云部署中创建安全区域,使组织能够将工作负载彼此隔离,并分别保证它们的安全。
- Mixer
Mixer 是 Istio 里的一个组件,它负责增强服务网格里的访问控制和使用策略。它还负责收集来自 envoy 和其他服务的遥测数据。 了解更多关于 Mixer。
- Multi-Mesh
Multi-mesh 是由两个或多个服务网格组成的部署模型。 每个网格都有独立的命名管理和身份管理,但是您可以通过网格联邦来暴露网格之间的服务, 最终构成一个多网格部署。
- Multicluster
- Mutual TLS Authentication
双向 TLS 通过内置身份和凭证管理,提供强大的服务到服务身份验证。 了解更多关于双向 TLS 身份验证。
N
O
- Operator
Operator 是打包、部署和管理 Kubernetes 应用程序的一种方法。 有关更多信息,请参见 Operator 模式。
P
- Pilot
Pilot 是 Istio 里的一个组件,它控制 Envoy 代理,负责服务发现、负载均衡和路由分发。
- Pod
Pod 中包含了一个或多个共享存储和网络的容器(例如 Docker 容器), 以及如何运行容器的规范。 Pod 是 Istio 的 Kubernetes 部署中的一个 工作负载实例。
- Primary Cluster
主集群是具有控制平面 的集群。 一个网格可以有一个以上的主集群,以用于 HA 或需要低延迟的场景。 主集群可以充当从集群的控制平面。
- Proxyless
Proxyless(无代理)是指一种不使用代理运行的数据平面模式, 这种模式直接将网格功能移植到应用程序中。 目前,Istio 支持 Proxyless gRPC 模式, 可以在 gRPC 框架中启用网格功能。
R
S
- Secure Naming
Secure Naming 提供一个 service name 到 workload instance principals 的映射,这个工作负载实例被授权运行一个 workload instances,实现一个 service。
- Service
使用服务名称标识一组具有关联行为的服务服务网格,并使用这些名称应用 Istio 策略(例如负载均衡和路由)。 服务通常由一个或多个服务 Endpoint 实现,并且或许包含多个服务版本。
- Service Consumer
服务消费者是使用 service 的代理。
- Service Endpoint
Service Endpoint 是一个 Service 的网络可达表现形式。 Service Endpoint 由工作负载实例暴露,但并不是所有的服务都有 Service Endpoint。
- Service Mesh
服务网格 (简称 网格 )是一个可管理、可观测以及支持工作负载实例之间进行安全通信的基础设施层。
在一个网格中,服务名称与命名空间组合具有唯一性。例如,在一个多集群的网格中,
cluster-1
集群的foo
命名空间中的bar
服务和cluster-2
集群的foo
命名空间中的bar
服务被认为是同一个服务。- Service Name
Service Name 是 Service 唯一的名字, 是 Service 在服务网格里的唯一标识。 一个服务不应该被重命名,或者维护它的标识,每一个服务名都是唯一的。 一个服务有多个版本,但是服务名是与版本独立的。
- Service Operator
Service Operator 是在服务网格里管理 Service 的代理,它们通过操纵配置状态并通过各种仪表板监视服务的运行状况来管理这些服务。
- Service Producer
创建服务的 pilot-agent。
- Service Registry
Istio 维护了一个内部服务注册表 (service registry),它包含在服务网格中运行的一组服务及其相应的服务 endpoints。 Istio 使用服务注册表生成 Envoy 配置。
Istio 不提供服务发现, 尽管大多数服务都是通过 Pilot adapter 自动加入到服务注册表里的, 而且这反映了底层平台(Kubernetes、Consul、plain DNS)的已发现的服务。还有就是,可以使用
ServiceEntry
配置进行手动注册。- Service Version
区分一系列服务,通常通过工作负载二进制文件的不同版本来帮助确定。在一些场景多服务版本是需要的,比如 A/B 测试和金丝雀发布。
- Sidecar
Sidecar 通常是与主应用程序一起运行以提供附加功能的容器。 在 Istio 中,Sidecar 是一个数据面模式,它同时运行一个 Envoy 代理 Pod。
- Source
Source 是 Envoy 代理的下游客户端。 在服务网格里, Source 通常是一个工作负载, 但是入口流量的 Source 有可能包含其他客户端,例如浏览器或移动应用。
- SPIFFE
每个人的安全生产身份框架(SPIFFE)项目定义了一个框架和一套标准,用于识别和保护基于 Web 服务之间的通信。
T
- TLS Origination
TLS 源(TLS Origination)发生于一个被配置为接收内部未加密 HTTP 连接的 Istio 代理(Sidecar 或 Egress Gateway)加密请求并使用简单或双向 TLS 将其转发至安全的 HTTPS 服务器时。 这与 TLS 终止相反,后者发生于一个接受 TLS 连接的 Ingress 代理解密 TLS 并将未加密的请求传递到网格内部的服务时。
- Trust Domain
信任域对应于系统的信任根,并且是工作负载标识的一部分。
Istio 使用信任域在网格中创建所有身份。每个网格都有一个专用的信任域。
例如在
spiffe://mytrustdomain.com/ns/default/sa/myname
中标示网格的子字符串是:mytrustdomain.com
。此子字符串是此网格的信任域。- Trust Domain Migration
更改 Istio 网格的信任域的过程。
W
- Waypoint
Waypoint 指的是 Ambient 数据面模式的 HTTP 代理组件。 Waypoint 在每个服务账号的每个命名空间上运行,处理进入命名空间的所有流量。
- Workload
operators 部署的二进制文件,用于提供服务网格应用的一些功能。 工作负载有自己的名称、命名空间和唯一的 ID。 这些属性可以通过下面的属性被策略配置和遥测配置使用:
source.workload.name
,source.workload.namespace
,source.workload.uid
destination.workload.name
,destination.workload.namespace
,destination.workload.uid
在 Kubernetes 环境中,一个工作负载通常对应一个 Kubernetes Deployment, 并且一个工作负载实例对应一个独立的被 Deployment 管理的 Pod。
- Workload Instance
工作负载实例是工作负载的一个二进制实例化对象。 一个工作负载实例可以开放零个或多个服务 Endpoint, 也可以消费零个或多个服务。
工作负载实例具有许多属性:
- 名称和命名空间
- 唯一的 ID
- IP 地址
- 标签
- 主体
通过访问
source.*
和destination.*
下面的属性,在 Istio 的策略和遥测配置功能中,可以用到这些属性。- Workload Instance Principal
工作负载实例主体是工作负载实例的可验证权限。 Istio 的服务到服务身份验证用于生成工作负载实例主体。默认情况下,工作负载实例主体与 SPIFFE ID 格式兼容。
在
policy
和telemetry
配置中用到了工作负载实例主体,对应的属性是source.principal
和destination.principal
。
自
- 自动 mTLS
自动 mTLS 是 Istio 的一个特性,用以发送 双向 TLS 流量, 其中客户端和服务器都能够处理 Mutual TLS 的流量。 当客户端或服务器无法处理此类流量时,Istio 将其会降级为纯文本。