Skip to content

Commit

Permalink
[zh] sync and improve install-method-selection k8s-sidecar-injection-…
Browse files Browse the repository at this point in the history
…not-working cors (istio#15217)

Signed-off-by: xin.li <[email protected]>
  • Loading branch information
my-git9 authored Jun 1, 2024
1 parent ff83b60 commit 40907c5
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 51 deletions.
69 changes: 29 additions & 40 deletions content/zh/about/faq/setup/install-method-selection.md
Original file line number Diff line number Diff line change
@@ -1,86 +1,75 @@
---
title: 我应该使用哪种方式安装 Istio ?
title: 我应该使用哪种方式安装 Istio
weight: 10
---

除了简单地[入门](/zh//docs/setup/getting-started)评估版安装之外,您还可以使用几种不同的方式安装 Istio 。您应该根据您的生产要求来选择安装方式。

除了简单地[入门](/zh//docs/setup/getting-started)评估版安装之外,
还有其它几种不同的方式安装 Istio,您应该根据您的生产要求来选择安装方式。
下面列出了每种安装方式的优缺点:

1. [使用 istioctl 安装](/zh/docs/setup/install/istioctl/)

具有高安全性的简单、合格的安装和管理方法。这是社区推荐的安装方法
具有高安全性的简单、合格的安装和管理方法,这也是社区推荐的安装方法

优点:
优点

- 完整的配置和运行状态的验证。
- 使用提供了扩展的配置、自定义选项的 `IstioOperator` API。
- 不需要集群内的高权限 Pod通过执行 `istioctl` 命令修改。
- 不需要在集群内运行特权 Pod通过执行 `istioctl` 命令修改。

缺点:
缺点

- 需要维护多个 Istio 次要版本的二进制文件。
- `istioctl` 命令可能根据您的运行环境设置诸如 `JWT_POLICY` 之类的值,从而能够在不同的 Kubernetes 环境中进行不同的安装。
- `istioctl` 命令可能根据您的运行环境设置诸如 `JWT_POLICY` 之类的值,从而能够在不同的
Kubernetes 环境中进行不同的安装。

1. [使用 Istio Operator 安装](/zh/docs/setup/install/operator/)
1. [使用 istioctl 生成清单](/zh/docs/setup/install/istioctl/#generate-a-manifest-before-installation)

没有 `istioctl` 二进制文件的简单安装方式。这是推荐的方法。用于简单升级工作,无需考虑运行集群内的高权限 Controller。
生成 Kubernetes 的配置清单,并通过 `kubectl apply --prune` 应用到集群中,
该方法适用于需要严格审查或者增加配置清单的情况。

优点:
优点

- 具有与 `istioctl install` 相同的 API ,但是通过集群中具有高权限的 Controller Pod 通过完全声明的方式进行操作
- 资源是由与 `istioctl install` 和 Operator 里使用的相同的 `IstioOperator` API 生成的
- 使用提供了扩展的配置、自定义选项的 `IstioOperator` API。
- 不需要管理多个 `istioctl` 的二进制文件。

缺点:

- 在集群内运行高权限的 Controller 会带来安全问题。

1. [使用 istioctl manifest generate 安装](/zh/docs/setup/install/istioctl/#generate-a-manifest-before-installation)

生成 Kubernetes 的配置清单,并通过 `kubectl apply --prune` 应用到集群中。该方法适用于需要严格审查或者增加配置清单的情况。

优点:
缺点:

- Chart 是由与 `istioctl install` 和 Operator 里使用的相同的 `IstioOperator` API 生成的。
- 使用提供了扩展的配置、自定义选项的 `IstioOperator` API。

缺点:

- 一些在 `istioctl install` 和 Operator 中会进行的检查将不会执行。
- 一些在 `istioctl install` 和 Operator 中执行的未完成的检查将不会执行。
-`istioctl install` 相比,UX 的精简程度较低。
- 错误报告没有 `istioctl install` 的错误报告详细、全面。
- 错误报告不如 `istioctl install` 的错误报告详细、全面。

1. [使用 Helm 安装](/zh/docs/setup/install/helm/)

使用 Helm Chart 可以通过 Helm 的工作流程轻松的完成,并在升级的过程中自动清理资源。
使用 Helm Chart 可以通过 Helm 的工作流程轻松的完成,并在升级的过程中自动清理资源。

优点:
优点

- 使用熟悉、常用的行业标准工具。
- Helm 原生的版本、升级管理。

缺点:
缺点

- 相比于 `istioctl install` 和 Operator 相比,检查较少。
- 一些高权限任务需要更多步骤,并且具有更高的复杂性。

1. [Istio Operator](/zh/docs/setup/install/operator/)

{{< warning >}}
不建议在新安装时使用 Operator虽然 Operator 将继续得到支持,新特性请求将不会被优先化
不建议在新安装时使用 Operator虽然 Operator 将继续得到支持,但新特性请求将不会被优先化
{{< /warning >}}

Istio 操作符提供了一个安装路径,而不需要 `istioctl` 二进制文件。这可以用于简化升级工作流,其中不需要考虑集群内特权控制器的运行。此方法适用于不需要严格审计或增加输出清单的情况。
Istio Operator 提供了一个不需要 `istioctl` 二进制文件的安装方式。这可以用于简化升级工作流,
其中不需要考虑集群内特权控制器的运行,此方法适用于不需要严格审计或增加输出清单的情况。

优点:
优点

-`istioctl install` 相同的 API,但驱动是通过集群中的一个带有完全声明式操作的控制器。
- `IstioOperator` API 提供了广泛的配置/定制选项
-`istioctl install` 使用相同的 API,但驱动是通过集群中的一个带有完全声明式操作的控制器。
- 使用提供了扩展的配置、自定义选项的 `IstioOperator` API。
- 不需要管理多个 `istioctl` 二进制文件。

缺点:
缺点

- 集群中运行的高权限控制器存在安全风险
- 集群中运行的特权控制器存在安全风险

这些安装方式的安装向导在 [Istio 安装页](/zh/docs/setup/install)中。
这些安装方式的安装向导在 [Istio 安装页面](/zh/docs/setup/install)中。
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
---
title: Kubernetes - 我该如何调试 sidecar 自动注入的问题?
title: Kubernetes - 我该如何调试 Sidecar 自动注入的问题?
weight: 20
---

为了支持 sidecar 自动注入,请确保你的集群符合此[前提条件](/zh/docs/setup/additional-setup/sidecar-injection/#automatic-sidecar-injection)。如果你的微服务是部署在 `kube-system``kube-public` 或者 `istio-system` 这些命名空间,那么就会被免除 sidecar 自动注入。请使用其他命名空间替代。
为了支持 Sidecar 自动注入,请确保你的集群符合此
[前提条件](/zh/docs/setup/additional-setup/sidecar-injection/#automatic-sidecar-injection)
如果您的微服务是部署在 `kube-system``kube-public` 或者 `istio-system`
这些命名空间,那么就会被免除 Sidecar 自动注入,请使用其他命名空间替代。
25 changes: 16 additions & 9 deletions content/zh/about/faq/traffic-management/cors.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,19 @@ title: 为什么我的 CORS 配置不起作用?
weight: 40
---

当应用了 [CORS 配置](/zh/docs/reference/config/networking/virtual-service/#CorsPolicy)后,您可能会发现看似什么也没发生,并想知道哪里出了问题。
当应用了 [CORS 配置](/zh/docs/reference/config/networking/virtual-service/#CorsPolicy)后,
您可能会发现看似什么也没发生,并想知道哪里出了问题。
CORS 是一个经常被误解的 HTTP 概念,在配置时经常会导致混淆。

要弄明白这个问题,有必要退后一步,看看 [CORS 是什么](https://developer.mozilla.org/zh/docs/Web/HTTP/CORS),以及何时应该使用它。
默认情况下,浏览器对脚本发起的 "cross origin" 请求有限制。
例如,这可以防止网站 `attack.example.com``bank.example.com` 发出 JavaScript 请求,从而窃取用户的敏感信息。
要弄明白这个问题,有必要退后一步,看看
[CORS 是什么](https://developer.mozilla.org/zh/docs/Web/HTTP/CORS)
以及何时应该使用它。默认情况下,浏览器对脚本发起的 "cross origin" 请求有限制。
例如,这可以防止网站 `attack.example.com``bank.example.com` 发出 JavaScript 请求,
从而窃取用户的敏感信息。

为了允许这个请求, `bank.example.com` 必须允许 `attack.example.com` 执行跨源请求。
这就是 CORS 的作用所在。如果我们想在一个启用了 Istio 的集群内提供 `bank.example.com` 服务,我们可以通过配置一个 `corsPolicy` 来允许这样做:
为了允许这个请求,`bank.example.com` 必须允许 `attack.example.com` 执行跨域请求。
这就是 CORS 的作用所在。如果我们想在一个启用了 Istio 的集群内提供 `bank.example.com`
服务,我们可以通过配置一个 `corsPolicy` 来允许这样做:

{{< text yaml >}}
apiVersion: networking.istio.io/v1beta1
Expand All @@ -30,7 +34,10 @@ spec:

在这种情况下,我们明确地允许一个单一的起源;通配符通常用于不敏感的页面。

一旦我们这样做了,一个常见的错误就是发送一个请求,比如 `curl bank.example.com -H "Origin: https://attack.example.com"`,然后期望这个请求被拒绝。
一旦我们这样做了,一个常见的错误就是发送一个请求,比如
`curl bank.example.com -H "Origin: https://attack.example.com"`
然后期望这个请求被拒绝。
但是,curl 和许多其他客户端不会看到被拒绝的请求,因为 CORS 是一个浏览器约束。
CORS 配置只是在响应中添加 `Access-Control-*` 头;如果响应不令人满意,则由客户端(浏览器)来拒绝请求。
在浏览器中,这是通过[预检请求](https://developer.mozilla.org/zh/docs/Web/HTTP/CORS#preflighted_requests)来完成的。
CORS 配置只是在响应中添加 `Access-Control-*` 头;如果响应不令人满意,
则由客户端(浏览器)来拒绝请求。在浏览器中,
这是通过[预检请求](https://developer.mozilla.org/zh/docs/Web/HTTP/CORS#preflighted_requests)来完成的。

0 comments on commit 40907c5

Please sign in to comment.