## 策略与遥测

- **Kiali**。Service Graph 已经被[弃用](https://github.com/istio/istio/issues/9066)，推荐使用 [Kiali](https://www.kiali.io)。查看 [Kiali 任务](/zh/docs/tasks/telemetry/kiali/)了解更多关于 Kiali 的信息。

## 安全

- 弃用的 `RbacConfig` 被 `ClusterRbacConfig` 代替，以正确实现针对集群范围。
  参考我们的指南 [迁移 `RbacConfig` 到 `ClusterRbacConfig`](https://archive.istio.io/v1.1/docs/setup/kubernetes/upgrade/steps/#migrating-from-rbacconfig-to-clusterrbacconfig) 中的迁移说明。

## `istioctl`

- 弃用 `istioctl create`，`istioctl replace`， `istioctl get` 和 `istioctl delete`。使用 `kubectl` 代替（参考<https://kubernetes.io/docs/tasks/tools/install-kubectl>）。下个版本（1.2）将删除这些弃用的命令。
- 弃用 `istioctl gen-deploy`。使用 [`helm template`](/zh/docs/setup/kubernetes/install/helm/#方案-1-使用-helm-template-进行安装) 代替。下个版本（1.2）将删除这些弃用的命令。

- 为 Istio Kubernetes 资源的离线校验增加 [`istioctl validate`](/docs/reference/commands/istioctl/#istioctl-validate)。其目的是代替已经弃用的 `istioctl create` 命令。

- 增加 [`istioctl verify-install`](/docs/reference/commands/istioctl/#istioctl-verify-install)。这个实验命令验证给的 Istio 安装 YAML 文件的安装状态。

## 配置

- 你现在可以使用 Galley 作为 Kubernetes 和其他 Istio 组件（Pilot 和 Mixer）的 Kubernetes 接触点。这个功能处于  [alpha](/zh/about/feature-stages/#功能阶段定义) 版本。后续的 Istio 版本将使用 Galley 作为 Istio 默认的配置管理机制。

## 和 1.0 版不兼容的变化

除了下面列出的新的和增强的功能之外，1.1 中做出了较多的不同于 1.0 版本的变化。[升级通知](/zh/docs/setup/kubernetes/upgrade/notice)中对这些变化做了个列表。

## 升级

我们推荐用手工方式对控制平面进行 1.1 版本的升级工作。在[升级文档](/zh/docs/setup/kubernetes/upgrade/)中包含更多这方面的信息。

{{< warning >}}
在进行 1.1 的升级之前，务必阅读[升级通知](/zh/docs/setup/kubernetes/upgrade/notice)中的内容。
{{< /warning >}}

## 安装

- **从 Istio 安装中拆分 CRD 安装过程**：Istio 的 CRD 被移入 `istio-init` Helm chart。CRD 独立到自己的 Helm chart 中，能够在升级过程中以及未来 Istio 使用 Helm 之外的安装方式的情况下，保证 CRD 资源的连续性。

- **预配置安装方案**：加入了多个安装配置方案，其中提供了知名的、经过测试的模式，简化安装过程的定制工作。[配置方案](/zh/docs/setup/kubernetes/additional-setup/config-profiles/)为用户提供了更好的安装体验。

- **增强了多集群支持**：Istio 1.0 中使用 `istio-remote` 进行 [VPN 模式](/zh/docs/setup/kubernetes/install/multicluster/vpn/) 以及[水平拆分 eds 模式](/zh/docs/tasks/multicluster/split-horizon-eds/)的多集群风方案，1.1 中进行了整合，简化了安装体验。

## 流量管理

- **新的 `Sidecar` 资源**：[Sidecar](/docs/concepts/traffic-management/#sidecars) 资源为附加到工作负载命名空间内的 Sidecar 提供了更细粒度的控制能力。特别是它提供了将 Sidecar 发出的流量限制在特定服务范围的能力。这一功能能够减少代理服务器计算和传播配置的需要，从而提高启动速度、降低资源消耗，同时也增强了控制面的稳定性。对于大规模集群，我们建议为每个命名空间加入 Sidecar 资源。这一资源还提供了对端口、协议以及流量劫持方面的高级控制。

- **限制服务的可见范围**：加入了新的 `exportTo` 功能，这一功能让服务控制者能够限制访问该服务的命名空间。`ServiceEntry` 和 `VirtualService` 对象都支持这一功能，还可以通过给 Kubernetes 服务加入 `networking.istio.io/exportTo` 注解的方式来进行定义。

- **命名空间范围**：在网关中引用 `VirtualService` 的时候，我们会根据配置模型来使用基于 DNS 匹配的名称。在命名空间不止一个的情况下，这种用法遇到相同的主机名就很容易混淆。为了提供更清晰的使用命名空间来界定引用范围，在 `hosts` 字段中可以使用 **`[{namespace-name}]/{hostname-match}`** 的方式进行了限制。同样的能力也能够在 `Sidecar` 的 egress 用例中使用。

- **`ServiceEntry` 资源的更新**：为服务以及相关的双向 TLS 所需的 SAN 加入了区域性的定义。带有 HTTPS 端口的 `ServiceEntry` 不再需要额外定义 `VirtualService` 来启用基于 SNI 的路由了。

- **区域性路由**：路由会优先选取同一区域内的服务，请参考[区域性负载均衡设置文档](/docs/reference/config/istio.mesh.v1alpha1/#LocalityLoadBalancerSetting)。

- **调整多集群路由**：简化多集群配置，丰富部署模式。现在可以使用自带的 Ingress 网关连接多个集群，不再需要 Pod 级别的 VPN；可以在每个集群都部署控制平面，达到高可用目的；能够创建跨越多个集群的全局命名空间。在高可用控制平面模式下，会缺省启用路由的区域感知功能。

- **弃用 Istio Ingress**：移除了过期的 Istio Ingress。请参照[使用 cert-manager 加密 Kubernetes Ingress](/zh/docs/tasks/traffic-management/edge-traffic/ingress-certmgr/)一文，了解如何使用[网关](/zh/docs/concepts/traffic-management/#gateway)充当 Ingress 控制器。

- **性能和伸缩性的增强**：调整了 Istio 和 Envoy 的性能和弹性。参考[性能和伸缩性](/zh/docs/concepts/performance-and-scalability/)一文，了解更多相关信息。

- **缺省关闭访问日志**：缺省关闭所有 Sidecar 的访问日志以提高性能。

## 安全性

- **存活及就绪检测**：在启用双向 TLS 的情况下，增加 Kubernetes 的 HTTP [存活及就需检测](/zh/faq/security/#k8s-health-checks)支持。

- **集群级的 RBAC 配置**：用 `ClusterRbacConfig` 代替 `RbacConfig`，用于配置集群级别的生效范围。具体升级步骤可以参看[从 `RbacConfig` 迁移到 `ClusterRbacConfig`](https://archive.istio.io/v1.1/docs/setup/kubernetes/upgrade/steps/#migrating-from-rbacconfig-to-clusterrbacconfig)。

- **使用 SDS 提供认证支持**：使用 SDS 提供更强的安全性，在节点生成密钥，动态完成证书轮转而无需重启 Envoy。详情请参见[通过 SDS 提供身份服务](/zh/docs/tasks/security/auth-sds)。

- **为 TCP 服务提供访问控制**：在 HTTP 和 gRPC 服务之外，为 TCP 服务也加入了授权支持。请参看[为 TCP 服务提供访问控制支持](/zh/docs/tasks/security/authz-tcp)。

- **最终用户分组的访问控制**：根据 JWT 中的 `groups` 或者任意列表类型的数据来进行访问控制。参考[基于组和列表类型声明的授权](/zh/docs/tasks/security/rbac-groups/)，获取更多信息。

- **Ingress 网关控制器的外部证书管理**：加入一个控制器，用于为外部证书提供动态加载和轮转支持。

- **自定义 PKI 集成**：加入了 Vault PKI 集成，支持 Vault 保护下的签署密钥以及现存 Vault PKI 的集成能力。

- **自定义域（非 `cluster.local`）**：支持组织或者集群特定的域名。

## 策略和遥测

- **缺省关闭预检**：迎合多数用户场景，缺省关闭策略预检以提高性能。如果有需求，还可以[启用策略检查](/zh/docs/tasks/policy-enforcement/enabling-policy/)。

- **Kiali**：用 [Kiali](https://www.kiali.io) 替代了 [Service Graph](https://github.com/istio/istio/issues/9066)，用于提供更丰富的可视化体验。[Kiali 任务](/docs/tasks/telemetry/kiali/)中进行了更多细节描述。

- **降低开销**：做出了很多性能和伸缩方面的改进：

    - 减少 Envoy 生成的统计信息的采集。

    - Mixer 加入了负载卸载的功能。

    - 增强了 Envoy 和 Mixer 之间的协议。

- **对 Header 和路由施加影响**：可以利用适配器对请求的 Header 和路由进行变更，请参考[控制 Header 和路由](/docs/tasks/policy-enforcement/control-headers)任务获取更多相关信息。

- **进程外适配器**：进程外适配器功能已经可以用于生产环境。这一版中我们开始淘汰进程内适配器。所有的新适配器开发都应该使用进程外模型。

- **增强跟踪**：跟踪方面做出很多改进：

    - Trace ID 扩展为 128 位。
    - 加入了发送跟踪数据到 [LightStep](/zh/docs/tasks/telemetry/distributed-tracing/lightstep/) 的功能。
    - 可以完全禁用 Mixer 服务的跟踪。
    - 可以使用策略来决定跟踪。

- **缺省的 TCP 指标**：为 TCP 连接加入缺省指标。

- **减少插件对负载均衡器的需求**：不再以独立负载均衡服务的方式来开放服务，改为使用 Istio 网关。要使用 HTTP 或 HTTPS 协议开放插件服务，请阅读[遥测插件的外部访问](/zh/docs/tasks/telemetry/gateways/)一节的介绍。

- **加密插件凭据**：插件凭据的保存方式发生了变更。Grafana、Kiali 和 Jaeger 的用户名和密码保存在 [Kubernetes secrets](https://kubernetes.io/docs/concepts/configuration/secret/) 之中，提高了安全性和合规性。

- **更具弹性的 `statsd` 收集器**：移除内置的 `statsd` 收集器。Istio 允许用户自行部署 `statsd`。

## 配置管理

- **Galley**：以 [Galley](/zh/docs/concepts/what-is-istio/#galley) 作为首要的配置接收和分发机制。它提供了一个健壮的模型用于校验、转换和传输配置状态，把 Istio 组件从 Kubernetes 细节中隔离出来。Galley 使用 [Mesh Configuration Protocol (MCP)](https://github.com/istio/api/tree/{{< source_branch_name >}}/mcp) 和各个组件进行交互。

- **监听端口**：Galley 的缺省端口从 9093 改为 15014.

## `istioctl` 和 `kubectl`

- **Validate 命令**：[`istioctl validate`](/docs/reference/commands/istioctl/#istioctl-validate) 命令可以用离线方式校验 Istio 的 Kubernetes 资源。

- **Verify-Install 命令**：新增 [`istioctl verify-install`](/docs/reference/commands/istioctl/#istioctl-verify-install) 命令，根据一个指定的 YAML 文件来检查 Istio 的状态。

- **过期命令**：`istioctl create`、`istioctl replace`、`istioctl get` 和 `istioctl delete` 命令都已过期，改用 [`kubectl`](https://kubernetes.io/docs/tasks/tools/install-kubectl) 命令执行相关任务。`istioctl gen-deploy` 命令也同样过期，使用 [`helm template`](/zh/docs/setup/kubernetes/install/helm/#方案-1-使用-helm-template-进行安装) 命令来替代。1.12 版本中会移除这些命令。

- **短命令**：在 `kubectl` 中包含了 `Gateway`、`VirtualService`、`DestinationRules` 以及 `ServiceEntry` 的短命令。
