1
1
---
2
2
title : 使用外部控制平面安装 Istio
3
- description : 安装外部控制平面和从集群 。
4
- weight : 80
3
+ description : 使用外部控制平面和从集群数据平面安装 Istio 。
4
+ weight : 50
5
5
aliases :
6
6
- /zh/docs/setup/additional-setup/external-controlplane/
7
7
- /latest/zh/docs/setup/additional-setup/external-controlplane/
8
8
keywords : [external,control,istiod,remote]
9
9
owner : istio/wg-environments-maintainers
10
- test : no
10
+ test : yes
11
11
---
12
12
13
13
本指南将引导您完成安装{{< gloss "external control plane">}}外部控制平面{{< /gloss >}},
14
- 然后将一个或多个{{< gloss "remote cluster" >}}从集群{{< /gloss >}}连接到该平面的过程。
15
-
14
+ 然后将一个或多个{{< gloss "remote cluster" >}}从集群{{< /gloss >}}连接到这个外部控制平面。
16
15
外部控制平面[ 部署模型] ( /zh/docs/ops/deployment/deployment-models/#control-plane-models )
17
- 允许网格操作员在与组成网格的数据平面集群 (或多个集群)分开的外部集群上安装和管理控制平面。
18
- 这种部署模型可以将网状网络运营商和网状网络管理员明确区分。网格操作员可以安装和管理 Istio 控制平面,
16
+ 允许网格运维人员在与组成网格的数据平面集群 (或多个集群)分开的外部集群上安装和管理控制平面。
17
+ 这种部署模型可以确保网格运维人员和网格管理员有明确的分工。网格运维人员可以安装和管理 Istio 控制平面,
19
18
而网格管理员只需配置网格即可。
20
19
21
20
{{< image width="75%"
@@ -26,10 +25,10 @@ test: no
26
25
在从集群中运行的 Envoy 代理(Sidecar 和 Gateway)通过 Ingress Gateway
27
26
访问外部 Istiod,向外暴露了需要被发现,CA,注入和验证的端点。
28
27
29
- 虽然外部控制平面的配置和管理是由外部集群中的网格操作员完成的 ,
30
- 但连接到外部控制平面的第一个从集群充当了网格本身的配置集群。除了网状服务本身之外 ,
31
- 网格管理员还将使用配置集群来配置网状资源 (Gateway、虚拟服务等)。外部控制平面将从
32
- Kubernetes API Server 远程访问此配置 ,如上图所示。
28
+ 虽然外部控制平面的配置和管理是由外部集群中的网格运维人员完成的 ,
29
+ 但连接到外部控制平面的第一个从集群充当了网格本身的配置集群。除了网格服务本身之外 ,
30
+ 网格管理员还将使用配置集群来配置网格资源 (Gateway、虚拟服务等)。外部控制平面将从
31
+ Kubernetes API 服务器远程访问此配置 ,如上图所示。
33
32
34
33
## 准备开始 {#before-you-begin}
35
34
@@ -38,19 +37,20 @@ Kubernetes API Server 远程访问此配置,如上图所示。
38
37
本指南要求您有任意两个[ 受支持版本的 Kubernetes] ( /zh/docs/releases/supported-releases#support-status-of-istio-releases )
39
38
集群:{{< supported_kubernetes_versions >}}。
40
39
41
- 第一个集群将托管安装在 ` external-istiod ` 命名空间中的{{< gloss "external control plane">}}外部控制平面{{< /gloss >}}。
40
+ 第一个集群将托管安装在 ` external-istiod `
41
+ 命名空间中的{{< gloss "external control plane">}}外部控制平面{{< /gloss >}}。
42
42
Ingress Gateway 也安装在 ` istio-system ` 命名空间中,以提供对外部控制平面的跨集群访问。
43
43
44
- 第二个集群是将运行网格应用程序工作负载的 {{< gloss "remote cluster">}}从集群{{< /gloss >}}。
45
- 它的 Kubernetes API Server 还提供了外部控制平面 (Istiod)用来配置工作负载代理的网状配置 。
44
+ 第二个集群是将运行网格应用工作负载的 {{< gloss "remote cluster">}}从集群{{< /gloss >}}。
45
+ 它的 Kubernetes API 服务器还提供了外部控制平面 (Istiod)用来配置工作负载代理的网格配置 。
46
46
47
- ### API Server 访问 {#API -server-access}
47
+ ### API 服务器访问 {#api -server-access}
48
48
49
- 外部控制平面集群必须可以访问从集群中的 Kubernetes API Server 。
50
- 许多云提供商通过网络负载均衡器(NLB)公开访问 API Server 。
51
- 如果无法直接访问 API Server ,则需要修改安装过程以启用访问权限。
49
+ 外部控制平面集群必须可以访问从集群中的 Kubernetes API 服务器 。
50
+ 许多云提供商通过网络负载均衡器(NLB)公开访问 API 服务器 。
51
+ 如果无法直接访问 API 服务器 ,则需要修改安装过程以启用访问权限。
52
52
例如,在[ 多集群配置] ( #adding-clusters ) 中使用的[ 东西向] ( https://en.wikipedia.org/wiki/East-west_traffic )
53
- Gateway 也可以用于启用对 API Server 的访问 。
53
+ Gateway 也可以用于启用对 API 服务器的访问 。
54
54
55
55
### 环境变量 {#environment-variables}
56
56
@@ -74,9 +74,9 @@ $ export REMOTE_CLUSTER_NAME=<您的从集群名称>
74
74
75
75
## 集群配置 {#cluster-configuration}
76
76
77
- ### 网格操作步骤 {#mesh-operator-steps}
77
+ ### 网格运维人员步骤 {#mesh-operator-steps}
78
78
79
- 网格操作员负责在外部集群上安装和管理外部 Istio 控制平面。
79
+ 网格运维人员负责在外部集群上安装和管理外部 Istio 控制平面。
80
80
这包括在外部集群上配置 Ingress Gateway,允许从集群访问控制平面,并在从集群上安装所需的
81
81
Webhook、ConfigMap 和 Secret,以便使用外部控制平面。
82
82
@@ -135,8 +135,8 @@ Webhook、ConfigMap 和 Secret,以便使用外部控制平面。
135
135
136
136
1 . 使用带有 TLS 的公共主机名配置您的环境来暴露 Istio Ingress Gateway 服务。
137
137
138
- 将 ` EXTERNAL_ISTIOD_ADDR ` 环境变量设置为主机名,将 ` SSL_SECRET_NAME `
139
- 环境变量设置为包含 TLS 证书的 Secret:
138
+ 将 ` EXTERNAL_ISTIOD_ADDR ` 环境变量设置为主机名,将 ` SSL_SECRET_NAME `
139
+ 环境变量设置为包含 TLS 证书的 Secret:
140
140
141
141
{{< text syntax=bash snip_id=none >}}
142
142
$ export EXTERNAL_ISTIOD_ADDR=<您的外部 istiod 主机>
@@ -165,7 +165,7 @@ Webhook、ConfigMap 和 Secret,以便使用外部控制平面。
165
165
这样做还需要对配置进行一些其他更改。请务必按照以下说明中的所有相关步骤进行操作。
166
166
{{< /tip >}}
167
167
168
- #### 设置从集群 {#set-up-the-remote-cluster}
168
+ #### 设置从配置集群 {#set-up-the-remote-config -cluster}
169
169
170
170
1 . 使用 ` remote ` 配置文件配置从集群上安装的 Istio。这将安装一个使用外部控制平面注入器的注入 Webhook,
171
171
而不是本地部署的注入器。因为这个集群也将作为配置集群,所以安装从集群上所需的 Istio CRD 和其他资源时将
@@ -193,7 +193,7 @@ Webhook、ConfigMap 和 Secret,以便使用外部控制平面。
193
193
{{< /text >}}
194
194
195
195
{{< tip >}}
196
- 如果您的集群名称包含` / ` (斜杠)字符,请在 ` injectionURL ` 中将其替换为 ` --slash-- ` ,
196
+ 如果您的集群名称包含 ` / ` (斜杠)字符,请在 ` injectionURL ` 中将其替换为 ` --slash-- ` ,
197
197
例如 ` injectionURL: https://1.2.3.4:15017/inject/cluster/ ` <mark >` cluster--slash--1 ` </mark >` /net/network1 ` 。
198
198
{{< /tip >}}
199
199
@@ -268,7 +268,7 @@ Webhook、ConfigMap 和 Secret,以便使用外部控制平面。
268
268
1 . 创建 Istio 配置以在外部集群的 ` external-istiod ` 命名空间中安装控制平面。
269
269
请注意,istiod 配置为使用本地安装的 ` istio ` ConfigMap,并且 ` SHARED_MESH_CONFIG `
270
270
环境变量设置为 ` istio ` 。这指示 istiod 将网格管理员在配置集群的 ConfigMap
271
- 中设置的值与网格操作员在本地 ConfigMap 中设置的值合并,如果有任何冲突,这将优先考虑:
271
+ 中设置的值与网格运维人员在本地 ConfigMap 中设置的值合并,如果有任何冲突,这将优先考虑:
272
272
273
273
{{< text syntax=bash snip_id=get_external_istiod_iop >}}
274
274
$ cat <<EOF > external-istiod.yaml
@@ -326,11 +326,15 @@ Webhook、ConfigMap 和 Secret,以便使用外部控制平面。
326
326
value: istio
327
327
values:
328
328
global:
329
+ externalIstiod: true
329
330
caAddress: $EXTERNAL_ISTIOD_ADDR:15012
330
331
istioNamespace: external-istiod
331
332
operatorManageWebhooks: true
332
333
configValidation: false
333
334
meshID: mesh1
335
+ multiCluster:
336
+ clusterName: ${REMOTE_CLUSTER_NAME}
337
+ network: network1
334
338
EOF
335
339
{{< /text >}}
336
340
@@ -468,7 +472,7 @@ Webhook、ConfigMap 和 Secret,以便使用外部控制平面。
468
472
$ kubectl apply -f external-istiod-gw.yaml --context="${CTX_EXTERNAL_CLUSTER}"
469
473
{{< /text >}}
470
474
471
- ### 网格管理步骤 {#mesh-admin-steps}
475
+ ### 网格管理员步骤 {#mesh-admin-steps}
472
476
473
477
现在 Istio 已启动并运行,网格管理员只需在网格中部署和配置服务,包括 Gateway(如果需要)。
474
478
@@ -611,7 +615,7 @@ $ helm install istio-egressgateway istio/gateway -n external-istiod --kube-conte
611
615
612
616
{{< tabset category-name="config-api" >}}
613
617
614
- {{< tab name="Istio APIs " category-value="istio-apis" >}}
618
+ {{< tab name="Istio API " category-value="istio-apis" >}}
615
619
616
620
确认 Istio Ingress Gateway 正在运行:
617
621
@@ -641,7 +645,7 @@ $ kubectl get crd gateways.gateway.networking.k8s.io --context="${CTX_REMOTE_CLU
641
645
642
646
{{< tabset category-name="config-api" >}}
643
647
644
- {{< tab name="Istio APIs " category-value="istio-apis" >}}
648
+ {{< tab name="Istio API " category-value="istio-apis" >}}
645
649
646
650
{{< text bash >}}
647
651
$ kubectl apply -f @samples/helloworld /helloworld-gateway.yaml@ -n sample --context="${CTX_REMOTE_CLUSTER}"
@@ -663,7 +667,7 @@ $ kubectl apply -f @samples/helloworld/gateway-api/helloworld-gateway.yaml@ -n s
663
667
664
668
{{< tabset category-name="config-api" >}}
665
669
666
- {{< tab name="Istio APIs " category-value="istio-apis" >}}
670
+ {{< tab name="Istio API " category-value="istio-apis" >}}
667
671
668
672
{{< text bash >}}
669
673
$ export INGRESS_HOST=$(kubectl -n external-istiod --context="${CTX_REMOTE_CLUSTER}" get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[ 0] .ip}')
@@ -695,11 +699,12 @@ $ export GATEWAY_URL=$INGRESS_HOST:80
695
699
## 将集群添加到网格(可选) {#adding-clusters}
696
700
697
701
本节介绍如何通过添加另一个从集群将现有的外部控制平面网格扩展到多集群。
698
- 这使您可以轻松分发服务并使用[ 位置感知路由和故障转移] ( /zh/docs/tasks/traffic-management/locality-load-balancing/ ) ,以支持应用程序的高可用性。
702
+ 这使您可以轻松分发服务并使用[ 位置感知路由和故障转移] ( /zh/docs/tasks/traffic-management/locality-load-balancing/ ) ,
703
+ 以支持应用的高可用性。
699
704
700
705
{{< image width="75%"
701
706
link="external-multicluster.svg"
702
- caption="多从集群的外部控制平面 "
707
+ caption="外部控制平面带多个从集群 "
703
708
>}}
704
709
705
710
与第一个从集群不同,添加到同一外部控制平面的第二个以及后续集群不提供网格配置,而仅提供端点配置的来源,
@@ -733,7 +738,8 @@ $ export SECOND_CLUSTER_NAME=<您的第二个从集群名称>
733
738
EOF
734
739
{{< /text >}}
735
740
736
- 1 . 如果您使用的是 ` EXTERNAL_ISTIOD_ADDR ` 的 IP 地址,而不是合适的 DNS 主机名,请修改配置以指定发现地址和路径,而不是注入 URL:
741
+ 1 . 如果您使用的是 ` EXTERNAL_ISTIOD_ADDR ` 的 IP 地址,而不是合适的 DNS
742
+ 主机名,请修改配置以指定发现地址和路径,而不是注入 URL:
737
743
738
744
{{< warning >}}
739
745
在生产环境中不推荐这样做。
0 commit comments