@@ -7,6 +7,7 @@ keywords: [kubernetes,multicluster]
7
7
test : n/a
8
8
owner : istio/wg-environments-maintainers
9
9
---
10
+
10
11
在开始多集群安装之前,回顾[ 部署模型指南] ( /zh/docs/ops/deployment/deployment-models ) ,
11
12
了解本指南中使用的基本概念。
12
13
@@ -16,44 +17,67 @@ owner: istio/wg-environments-maintainers
16
17
17
18
### 集群 {#cluster}
18
19
19
- 本指南需要您具备两个 Kubernetes 集群,且版本需为[ Kubernetes 支持的版本:] ( /zh/docs/releases/supported-releases#support-status-of-istio-releases ) {{< supported_kubernetes_versions >}}。
20
+ 本指南需要您具备两个 Kubernetes 集群,且版本需为
21
+ [ Kubernetes 支持的版本:] ( /zh/docs/releases/supported-releases#support-status-of-istio-releases ) {{< supported_kubernetes_versions >}}。
22
+
23
+ {{< tip >}}
24
+ 如果您正在 ` kind ` 测试多集群设置,则可以使用脚本
25
+ ` samples/kind-lb/setupkind.sh ` 快速设置具有负载均衡器支持的集群:
26
+
27
+ {{< text bash >}}
28
+ $ @samples/kind-lb /setupkind.sh@ --cluster-name cluster-1 --ip-space 254
29
+ $ @samples/kind-lb /setupkind.sh@ --cluster-name cluster-2 --ip-space 255
30
+ {{< /text >}}
20
31
21
- ### API Server Access
32
+ {{< /tip >}}
33
+
34
+ ### API 服务器访问 {#api-server-access}
22
35
23
36
每个集群中的 API 服务器必须能被网格中其他集群访问。
24
37
很多云服务商通过网络负载均衡器(NLB)开放 API 服务器的公网访问。
25
38
如果 API 服务器不能被直接访问,则需要调整安装流程以放开访问。
26
- 例如,用于多网络、主从架构配置的
27
- [ 东西向] ( https://en.wikipedia.org/wiki/East-west_traffic ) 网关
28
- 就可以用来开启 API 服务器的访问。
39
+ 例如,用于多网络、主从架构配置的[ 东西向] ( https://en.wikipedia.org/wiki/East-west_traffic ) 网关就可以用来开启
40
+ API 服务器的访问。
29
41
30
42
## 环境变量 {#environment-variables}
31
43
32
44
本指南将引用 ` cluster1 ` 和 ` cluster2 ` 两个集群。
33
- 以下环境变量将在整个过程中使用 ,以简化说明:
45
+ 以下环境变量将在整个过程中被使用 ,以简化说明:
34
46
35
- 变量 | 描述
36
- -------- | -----------
37
- ` CTX_CLUSTER1 ` | [ Kubernetes 配置文件] ( https://kubernetes.io/zh-cn/docs/tasks/access-application-cluster/configure-access-multiple-clusters/ ) 中的默认上下文名称,用于访问集群 ` cluster1 ` 。
38
- ` CTX_CLUSTER2 ` | [ Kubernetes 配置文件] ( https://kubernetes.io/zh-cn/docs/tasks/access-application-cluster/configure-access-multiple-clusters/ ) 中的默认上下文名称,用于访问集群 ` cluster2 ` 。
47
+ | 变量 | 描述 |
48
+ | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
49
+ | ` CTX_CLUSTER1 ` | [ Kubernetes 配置文件] ( https://kubernetes.io/zh-cn/docs/tasks/access-application-cluster/configure-access-multiple-clusters/ ) 中的默认上下文名称,用于访问集群 ` cluster1 ` 。 |
50
+ | ` CTX_CLUSTER2 ` | [ Kubernetes 配置文件] ( https://kubernetes.io/zh-cn/docs/tasks/access-application-cluster/configure-access-multiple-clusters/ ) 中的默认上下文名称,用于访问集群 ` cluster2 ` 。 |
39
51
40
- 继续之前,设置这两个变量 :
52
+ 继续之前,设置这两个环境变量 :
41
53
42
54
{{< text syntax=bash snip_id=none >}}
43
55
$ export CTX_CLUSTER1=<your cluster1 context >
44
56
$ export CTX_CLUSTER2=<your cluster2 context >
45
57
{{< /text >}}
46
58
59
+ {{< tip >}}
60
+
61
+ 如果您使用 ` kind ` ,请设置以下上下文:
62
+
63
+ {{< text bash >}}
64
+ $ export CTX_CLUSTER1=$(kubectl config get-contexts -o name | grep kind-cluster-1)
65
+ $ export CTX_CLUSTER2=$(kubectl config get-contexts -o name | grep kind-cluster-2)
66
+ {{< /text >}}
67
+
68
+ {{< /tip >}}
69
+
47
70
## 配置信任关系 {#configure-trust}
48
71
49
72
多集群服务网格部署要求您在网格中的所有集群之间建立信任关系。
50
73
基于您的系统需求,可以有多个建立信任关系的选择。
51
- 参阅[ 证书管理] ( /zh/docs/tasks/security/cert-management/ ) ,以了解所有可用选项的详细描述和说明。
52
- 根据您选择的方式,Istio 的安装说明可能略有变化。
74
+ 参阅[ 证书管理] ( /zh/docs/tasks/security/cert-management/ ) ,
75
+ 以了解所有可用选项的详细描述和说明。根据您选择的方式,
76
+ Istio 的安装说明可能略有变化。
53
77
54
78
{{< tip >}}
55
- 如果您计划仅部署一个主集群(即采用本地——远程部署的方式),您将只有一个 CA
56
- (即使用 ` cluster1 ` 上的 ` istiod ` )为两个集群颁发证书。
79
+ 如果您计划仅部署一个主集群(即采用本地——远程部署的方式),
80
+ 您将只有一个 CA (即使用 ` cluster1 ` 上的 ` istiod ` )为两个集群颁发证书。
57
81
在这种情况下,您可以跳过以下 CA 证书生成步骤,
58
82
并且只需使用默认自签名的 CA 进行安装。
59
83
{{< /tip >}}
@@ -63,13 +87,56 @@ $ export CTX_CLUSTER2=<your cluster2 context>
63
87
生成并分别推送 CA 证书的秘钥给 ` cluster1 ` 和 ` cluster2 ` 。
64
88
65
89
{{< tip >}}
66
- 如果您当前有一个自签名 CA 的独立集群
67
- (就像[ 入门] ( /zh/docs/setup/getting-started/ ) 中描述的那样),
90
+ 如果您当前有一个自签名 CA 的独立集群(就像[ 入门] ( /zh/docs/setup/getting-started/ ) 中描述的那样),
68
91
您需要用一个[ 证书管理] ( /zh/docs/tasks/security/cert-management/ ) 中介绍的方法,来改变 CA。
69
92
改变 CA 通常需要重新安装 Istio。
70
93
以下安装说明可能必须根据您对 CA 的选择进行更改。
71
94
{{< /tip >}}
72
95
96
+ {{< tip >}}
97
+ 如果您使用 ` kind ` ,则可以使用提供的 Makefile
98
+ 为您的集群快速生成自签名 CA 证书:
99
+
100
+ {{< text bash >}}
101
+ $ make -f @tools/certs /Makefile.selfsigned.mk@ \
102
+ ROOTCA_CN="Root CA" \
103
+ ROOTCA_ORG=istio.io \
104
+ root-ca
105
+ $ make -f @tools/certs /Makefile.selfsigned.mk@ \
106
+ INTERMEDIATE_CN="Cluster 1 Intermediate CA" \
107
+ INTERMEDIATE_ORG=istio.io \
108
+ cluster1-cacerts
109
+ $ make -f @tools/certs /Makefile.selfsigned.mk@ \
110
+ INTERMEDIATE_CN="Cluster 2 Intermediate CA" \
111
+ INTERMEDIATE_ORG=istio.io \
112
+ cluster2-cacerts
113
+ {{< /text >}}
114
+
115
+ 这将为每个集群创建一个根 CA 和中间 CA 证书,
116
+ 然后您可以使用它们在集群之间建立信任。
117
+
118
+ 要在每个集群中创建 ` cacerts ` Secret,请在生成证书后使用以下命令:
119
+
120
+ {{< text bash >}}
121
+ $ kubectl --context="${CTX_CLUSTER1}" create namespace istio-system
122
+ $ kubectl --context="${CTX_CLUSTER1}" create secret generic cacerts -n istio-system \
123
+ --from-file=ca-cert.pem=cluster1/ca-cert.pem \
124
+ --from-file=ca-key.pem=cluster1/ca-key.pem \
125
+ --from-file=root-cert.pem=cluster1/root-cert.pem \
126
+ --from-file=cert-chain.pem=cluster1/cert-chain.pem
127
+ $ kubectl --context="${CTX_CLUSTER2}" create namespace istio-system
128
+ $ kubectl --context="${CTX_CLUSTER2}" create secret generic cacerts -n istio-system \
129
+ --from-file=ca-cert.pem=cluster2/ca-cert.pem \
130
+ --from-file=ca-key.pem=cluster2/ca-key.pem \
131
+ --from-file=root-cert.pem=cluster2/root-cert.pem \
132
+ --from-file=cert-chain.pem=cluster2/cert-chain.pem
133
+ {{< /text >}}
134
+
135
+ 这将在每个集群的 ` istio-system ` 命名空间中创建 ` cacerts ` Secret,
136
+ 从而允许 Istio 使用您的自定义 CA 证书。
137
+
138
+ {{< /tip >}}
139
+
73
140
## 后续步骤 {#next-steps}
74
141
75
142
您现在已经准备好,可以跨越多个集群安装 Istio 网格了。
@@ -92,7 +159,7 @@ $ export CTX_CLUSTER2=<your cluster2 context>
92
159
93
160
{{< tip >}}
94
161
对于跨越两个以上集群的网格,您可能需要使用一个以上的选项。
95
- 例如,每个 region 一个主集群(即:多主)。每个 zone 一个从集群,并使用 region 主集群(即:主从)的控制平面。
162
+ 例如,每个 Region 一个主集群(即:多主)。每个 Zone 一个从集群,并使用 Region 主集群(即:主从)的控制平面。
96
163
97
164
更多信息,参阅[ 部署模型] ( /zh/docs/ops/deployment/deployment-models ) 。
98
165
{{< /tip >}}
0 commit comments