mirror of https://github.com/istio/istio.io.git
190 lines
90 KiB
HTML
190 lines
90 KiB
HTML
<!doctype html><html lang=zh itemscope itemtype=https://schema.org/WebPage><head><meta charset=utf-8><meta http-equiv=x-ua-compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=theme-color content="#466BB0"><meta name=title content="共享的控制平面(多网络)"><meta name=description content="跨多个 Kubernetes 集群安装一个 Istio 网格,使互不联通的集群网络共享同一个控制平面。"><meta name=keywords content="microservices,services,mesh,kubernetes,multicluster"><meta property="og:title" content="共享的控制平面(多网络)"><meta property="og:type" content="website"><meta property="og:description" content="跨多个 Kubernetes 集群安装一个 Istio 网格,使互不联通的集群网络共享同一个控制平面。"><meta property="og:url" content="/v1.5/zh/docs/setup/install/multicluster/shared-gateways/"><meta property="og:image" content="/v1.5/img/istio-whitelogo-bluebackground-framed.svg"><meta property="og:image:alt" content="Istio Logo"><meta property="og:image:width" content="112"><meta property="og:image:height" content="150"><meta property="og:site_name" content="Istio"><meta name=twitter:card content="summary"><meta name=twitter:site content="@IstioMesh"><title>Istioldie 1.5 / 共享的控制平面(多网络)</title><script async src="https://www.googletagmanager.com/gtag/js?id=UA-98480406-2"></script><script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}
|
||
gtag('js',new Date());gtag('config','UA-98480406-2');</script><link rel=alternate type=application/rss+xml title="Istio Blog" href=/v1.5/blog/feed.xml><link rel=alternate type=application/rss+xml title="Istio News" href=/v1.5/news/feed.xml><link rel=alternate type=application/rss+xml title="Istio Blog and News" href=/v1.5/feed.xml><link rel="shortcut icon" href=/v1.5/favicons/favicon.ico><link rel=apple-touch-icon href=/v1.5/favicons/apple-touch-icon-180x180.png sizes=180x180><link rel=icon type=image/png href=/v1.5/favicons/favicon-16x16.png sizes=16x16><link rel=icon type=image/png href=/v1.5/favicons/favicon-32x32.png sizes=32x32><link rel=icon type=image/png href=/v1.5/favicons/android-36x36.png sizes=36x36><link rel=icon type=image/png href=/v1.5/favicons/android-48x48.png sizes=48x48><link rel=icon type=image/png href=/v1.5/favicons/android-72x72.png sizes=72x72><link rel=icon type=image/png href=/v1.5/favicons/android-96x96.png sizes=96xW96><link rel=icon type=image/png href=/v1.5/favicons/android-144x144.png sizes=144x144><link rel=icon type=image/png href=/v1.5/favicons/android-192x192.png sizes=192x192><link rel=manifest href=/v1.5/manifest.json><meta name=apple-mobile-web-app-title content="Istio"><meta name=application-name content="Istio"><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Work+Sans:400|Chivo:400|Work+Sans:500,300,600,300italic,400italic,500italic,600italic|Chivo:500,300,600,300italic,400italic,500italic,600italic"><link rel=stylesheet href=/v1.5/css/all.css><script src=/v1.5/js/themes_init.min.js></script></head><body class="language-unknown archive-site"><script>const branchName="release-1.5";const docTitle="共享的控制平面(多网络)";const iconFile="\/v1.5/img/icons.svg";const buttonCopy='复制到剪切板';const buttonPrint='打印';const buttonDownload='下载';</script><script src="https://www.google.com/cse/brand?form=search-form" defer></script><script src=/v1.5/js/all.min.js data-manual defer></script><header><nav><a id=brand href=/v1.5/zh/><span class=logo><svg viewBox="0 0 300 300"><circle cx="150" cy="150" r="146" stroke-width="2"/><polygon points="65 240 225 240 125 270"/><polygon points="65 230 125 220 125 110"/><polygon points="135 220 225 230 135 30"/></svg></span><span class=name>Istioldie 1.5</span></a><div id=hamburger><svg class="icon"><use xlink:href="/v1.5/img/icons.svg#hamburger"/></svg></div><div id=header-links><a class=current title="了解如何部署、使用和运维 Istio。" href=/v1.5/zh/docs/>文档</a>
|
||
<a title="关于使用 Istio 的博客文章。" href=/v1.5/zh/blog/2020/>博客<i class=dot data-prefix=/blog></i></a>
|
||
<a title="关于 Istio 项目的最新报道。" href=/v1.5/zh/news/>新闻<i class=dot data-prefix=/news></i></a>
|
||
<a title="关于 Istio 的常见问题。" href=/v1.5/zh/faq/>FAQ</a>
|
||
<a title="关于 Istio 项目的说明。" href=/v1.5/zh/about/>关于</a><div class=menu><button id=gearDropdownButton class=menu-trigger title=选项和设置 aria-label="Options and Settings" aria-controls=gearDropdownContent><svg class="icon"><use xlink:href="/v1.5/img/icons.svg#gear"/></svg></button><div id=gearDropdownContent class=menu-content aria-labelledby=gearDropdownButton role=menu><a tabindex=-1 role=menuitem lang=en id=switch-lang-en>English</a>
|
||
<a tabindex=-1 role=menuitem lang=zh id=switch-lang-zh class=active>中文</a><div role=separator></div><a tabindex=-1 role=menuitem class=active id=light-theme-item>亮主题</a>
|
||
<a tabindex=-1 role=menuitem id=dark-theme-item>暗主题</a><div role=separator></div><a tabindex=-1 role=menuitem id=syntax-coloring-item>代码高亮</a><div role=separator></div><h6>本站的其它版本</h6><a tabindex=-1 role=menuitem onclick="navigateToUrlOrRoot('https://istio.io/docs\/setup\/install\/multicluster\/shared-gateways\/');return false;">当前版本</a>
|
||
<a tabindex=-1 role=menuitem onclick="navigateToUrlOrRoot('https://preliminary.istio.io/docs\/setup\/install\/multicluster\/shared-gateways\/');return false;">下个版本</a>
|
||
<a tabindex=-1 role=menuitem href=https://istio.io/archive>旧版本</a></div></div><button id=search-show title="搜索 istio.io" aria-label=搜索><svg class="icon"><use xlink:href="/v1.5/img/icons.svg#magnifier"/></svg></button></div><form id=search-form name=cse role=search><input type=hidden name=cx value=002184991200833970123:iwwf17ikgf4>
|
||
<input type=hidden name=ie value=utf-8>
|
||
<input type=hidden name=hl value=en>
|
||
<input type=hidden id=search-page-url value=/v1.5/search>
|
||
<input id=search-textbox class=form-control name=q type=search aria-label="搜索 istio.io">
|
||
<button id=search-close title=取消搜索 type=reset aria-label=取消搜索><svg class="icon"><use xlink:href="/v1.5/img/icons.svg#cancel-x"/></svg></button></form></nav></header><div class=banner-container></div><main class=primary><div id=sidebar-container class="sidebar-container sidebar-offcanvas"><nav id=sidebar aria-label="Section Navigation"><div class=directory><div class=card><button class="header dynamic" id=card34 title="一些概念,理解它们有助于您更好地了解 Istio 系统的不同部分及其使用的抽象。" aria-controls=card34-body><svg class="icon"><use xlink:href="/v1.5/img/icons.svg#concepts"/></svg>概念</button><div class=body aria-labelledby=card34 role=region id=card34-body><ul role=tree aria-expanded=true class=leaf-section aria-labelledby=card34><li role=none><a role=treeitem title="介绍 Istio,它要解决的问题,高层面的架构和设计目标。" href=/v1.5/zh/docs/concepts/what-is-istio/>Istio 是什么?</a></li><li role=none><a role=treeitem title="描述 Istio 多样的流量路由和控制特性。" href=/v1.5/zh/docs/concepts/traffic-management/>流量管理</a></li><li role=none><a role=treeitem title="讲述 Istio 的 WebAssembly 插件系统。" href=/v1.5/zh/docs/concepts/wasm/>扩展性</a></li><li role=none><a role=treeitem title="描述 Istio 的授权与认证功能。" href=/v1.5/zh/docs/concepts/security/>安全</a></li><li role=none><a role=treeitem title="描述 Istio 提供的遥测和监控特性。" href=/v1.5/zh/docs/concepts/observability/>可观察性</a></li></ul></div></div><div class=card><button class="header dynamic" id=card50 title="关于如何在 Kubernetes 集群中安装 Istio 控制平面和添加虚拟机到 mesh 中的说明。" aria-controls=card50-body><svg class="icon"><use xlink:href="/v1.5/img/icons.svg#setup"/></svg>安装</button><div class="body default" aria-labelledby=card50 role=region id=card50-body><ul role=tree aria-expanded=true aria-labelledby=card50><li role=none><a role=treeitem title="下载、安装并学习如何快速使用 Istio 的基本特性。" href=/v1.5/zh/docs/setup/getting-started/>开始</a></li><li role=treeitem aria-label=平台安装><button aria-hidden=true></button><a title="在安装 Istio 之前如何准备各种 Kubernetes 平台。" href=/v1.5/zh/docs/setup/platform-setup/>平台安装</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="对阿里云 Kubernetes 集群进行配置以便安装运行 Istio。" href=/v1.5/zh/docs/setup/platform-setup/alicloud/>阿里云</a></li><li role=none><a role=treeitem title="为 Istio 设置一个 Azure 集群的指令。" href=/v1.5/zh/docs/setup/platform-setup/azure/>Azure</a></li><li role=none><a role=treeitem title="在 Docker Desktop 中运行 Istio 的设置说明。" href=/v1.5/zh/docs/setup/platform-setup/docker/>Docker Desktop</a></li><li role=none><a role=treeitem title="在 Google Kubernetes Engine (GKE) 上快速搭建 Istio 服务。" href=/v1.5/zh/docs/setup/platform-setup/gke/>使用 Google Kubernetes Engine 快速开始</a></li><li role=none><a role=treeitem title="在 IBM 公有云或私有云上快速搭建 Istio 服务。" href=/v1.5/zh/docs/setup/platform-setup/ibm/>IBM Cloud 快速开始</a></li><li role=none><a role=treeitem title="为 Istio 设置 kind 的说明。" href=/v1.5/zh/docs/setup/platform-setup/kind/>kind</a></li><li role=none><a role=treeitem title="使用 Gardener 快速搭建 Istio 服务。" href=/v1.5/zh/docs/setup/platform-setup/gardener/>Kubernetes Gardener 快速开始</a></li><li role=none><a role=treeitem title="配置 MicroK8s 以便使用 Istio。" href=/v1.5/zh/docs/setup/platform-setup/microk8s/>MicroK8s</a></li><li role=none><a role=treeitem title="在 Minikube 上配置 Istio。" href=/v1.5/zh/docs/setup/platform-setup/minikube/>Minikube</a></li><li role=none><a role=treeitem title="对 OpenShift 集群进行配置以便安装运行 Istio。" href=/v1.5/zh/docs/setup/platform-setup/openshift/>OpenShift</a></li><li role=none><a role=treeitem title="为 Istio 配置 OKE 集群环境的说明。" href=/v1.5/zh/docs/setup/platform-setup/oci/>Oracle Cloud Infrastructure</a></li></ul></li><li role=treeitem aria-label=安装><button class=show aria-hidden=true></button><a title=选择最适合您的需求和平台的指南。 href=/v1.5/zh/docs/setup/install/>安装</a><ul role=group aria-expanded=true><li role=none><a role=treeitem title="安装和自定义任何 Istio 配置文件以进行深入评估或用于生产。" href=/v1.5/zh/docs/setup/install/istioctl/>使用 Istioctl 安装</a></li><li role=none><a role=treeitem title="安装和配置 Istio 以进行深入评估或用于生产。" href=/v1.5/zh/docs/setup/install/helm/>使用 Helm 自定义安装</a></li><li role=none><a role=treeitem title="使用 Istio operator 在 Kubernetes 集群中安装 Istio 指南。" href=/v1.5/zh/docs/setup/install/standalone-operator/>安装独立 Operator [实验]</a></li><li role=treeitem aria-label=多集群安装><button class=show aria-hidden=true></button><a title="配置跨越多个 Kubernetes 集群的 Istio 服务网格。" href=/v1.5/zh/docs/setup/install/multicluster/>多集群安装</a><ul role=group aria-expanded=true class=leaf-section><li role=none><a role=treeitem title="配置一个跨多个 Kubernetes 集群的 Istio 网格。" href=/v1.5/zh/docs/setup/install/multicluster/simplified/>简化地多集群安装[实验性]</a></li><li role=none><a role=treeitem title="通过控制平面副本集实例,在多个 Kubernetes 集群上安装 Istio 网格。" href=/v1.5/zh/docs/setup/install/multicluster/gateways/>控制平面副本集</a></li><li role=none><a role=treeitem title="安装一个跨多个 Kubernetes 集群的 Istio 网格,多集群共享控制平面,并且集群间通过 VPN 互连。" href=/v1.5/zh/docs/setup/install/multicluster/shared-vpn/>共享控制平面(单一网络)</a></li><li role=none><span role=treeitem class=current title="跨多个 Kubernetes 集群安装一个 Istio 网格,使互不联通的集群网络共享同一个控制平面。">共享的控制平面(多网络)</span></li></ul></li></ul></li><li role=treeitem aria-label=升级><button aria-hidden=true></button><a title="选择与您先前用于安装 Istio 的方法相对应的升级指南。" href=/v1.5/zh/docs/setup/upgrade/>升级</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="使用 istioctl 命令来升级或降级 Istio。" href=/v1.5/zh/docs/setup/upgrade/istioctl-upgrade/>使用 istioctl 命令升级 Istio [实验中]</a></li><li role=none><a role=treeitem title="升级 Istio 控制平面,可以选择使用 Helm 升级 CNI 插件。" href=/v1.5/zh/docs/setup/upgrade/cni-helm-upgrade/>使用 Helm 升级</a></li></ul></li><li role=treeitem aria-label=更多指南><button aria-hidden=true></button><a title=有关其他设置任务的更多信息。 href=/v1.5/zh/docs/setup/additional-setup/>更多指南</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="描述 Istio 内置的安装配置文件。" href=/v1.5/zh/docs/setup/additional-setup/config-profiles/>安装配置</a></li><li role=none><a role=treeitem title="在应用程序 Pod 中使用 sidecar injector webhook 自动安装或使用 istioctl CLI 手动安装 Istio sidecar。" href=/v1.5/zh/docs/setup/additional-setup/sidecar-injection/>设置 Sidecar</a></li><li role=none><a role=treeitem title="安装并使用 Istio CNI 插件,可以让运维人员用更低的权限来部署服务。" href=/v1.5/zh/docs/setup/additional-setup/cni/>安装 Istio CNI 插件</a></li></ul></li></ul></div></div><div class=card><button class="header dynamic" id=card66 title="如何用 Istio 系统实现特定目标的行为。" aria-controls=card66-body><svg class="icon"><use xlink:href="/v1.5/img/icons.svg#tasks"/></svg>任务</button><div class=body aria-labelledby=card66 role=region id=card66-body><ul role=tree aria-expanded=true aria-labelledby=card66><li role=treeitem aria-label=流量管理><button aria-hidden=true></button><a title="演示 Istio 的流量路由功能的任务。" href=/v1.5/zh/docs/tasks/traffic-management/>流量管理</a><ul role=group aria-expanded=false><li role=none><a role=treeitem title=此任务将展示如何将请求动态路由到微服务的多个版本。 href=/v1.5/zh/docs/tasks/traffic-management/request-routing/>配置请求路由</a></li><li role=none><a role=treeitem title=此任务说明如何注入故障并测试应用程序的弹性。 href=/v1.5/zh/docs/tasks/traffic-management/fault-injection/>故障注入</a></li><li role=none><a role=treeitem title=展示如何将流量从旧版本迁移到新版本的服务。 href=/v1.5/zh/docs/tasks/traffic-management/traffic-shifting/>流量转移</a></li><li role=none><a role=treeitem title="展示如何将一个服务的 TCP 流量从旧版本迁移到新版本。" href=/v1.5/zh/docs/tasks/traffic-management/tcp-traffic-shifting/>TCP 流量转移</a></li><li role=none><a role=treeitem title="本任务用于示范如何使用 Istio 在 Envoy 中设置请求超时。" href=/v1.5/zh/docs/tasks/traffic-management/request-timeouts/>设置请求超时</a></li><li role=none><a role=treeitem title=本任务展示如何为连接、请求以及异常检测配置熔断。 href=/v1.5/zh/docs/tasks/traffic-management/circuit-breaking/>熔断</a></li><li role=none><a role=treeitem title="此任务演示了 Istio 的流量镜像/影子功能。" href=/v1.5/zh/docs/tasks/traffic-management/mirroring/>镜像</a></li><li role=treeitem aria-label=Ingress><button aria-hidden=true></button><a title="控制 Istio 服务网格的入口流量。" href=/v1.5/zh/docs/tasks/traffic-management/ingress/>Ingress</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="描述如何配置 Istio gateway,以将服务暴露至服务网格之外。" href=/v1.5/zh/docs/tasks/traffic-management/ingress/ingress-control/>Ingress Gateway</a></li><li role=none><a role=treeitem title="使用文件挂载的证书并通过 TLS 或 mTLS 将服务暴露至服务网格之外。" href=/v1.5/zh/docs/tasks/traffic-management/ingress/secure-ingress-mount/>安全网关(文件挂载)</a></li><li role=none><a role=treeitem title="使用 Secret 发现服务(SDS) 通过 TLS 或者 mTLS 把服务暴露给服务网格外部。" href=/v1.5/zh/docs/tasks/traffic-management/ingress/secure-ingress-sds/>使用 SDS 为 Gateway 提供 HTTPS 加密支持</a></li><li role=none><a role=treeitem title="说明了如何为一个 ingress gateway 配置 SNI 透传。" href=/v1.5/zh/docs/tasks/traffic-management/ingress/ingress-sni-passthrough/>无 TLS 终止的 Ingress Gateway</a></li><li role=none><a role=treeitem title="演示如何使用 Cert-Manager 为 Kubernetes Ingress 自动获取 Let's Encrypt TLS 证书。" href=/v1.5/zh/docs/tasks/traffic-management/ingress/ingress-certmgr/>使用 Cert-Manager 加密 Kubernetes Ingress</a></li></ul></li><li role=treeitem aria-label=Egress><button aria-hidden=true></button><a title="控制 Istio 服务网格的出口流量。" href=/v1.5/zh/docs/tasks/traffic-management/egress/>Egress</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="描述如何配置 Istio 以将流量从网格中的服务路由到外部服务。" href=/v1.5/zh/docs/tasks/traffic-management/egress/egress-control/>访问外部服务</a></li><li role=none><a role=treeitem title="描述如何配置 Istio 对来自外部服务的流量执行 TLS 发起。" href=/v1.5/zh/docs/tasks/traffic-management/egress/egress-tls-origination/>Egress TLS Origination</a></li><li role=none><a role=treeitem title="描述如何配置 Istio 通过专用网关服务将流量定向到外部服务。" href=/v1.5/zh/docs/tasks/traffic-management/egress/egress-gateway/>Egress Gateway</a></li><li role=none><a role=treeitem title="描述如何配置一个 Egress 网关,来向外部服务发起 TLS 连接。" href=/v1.5/zh/docs/tasks/traffic-management/egress/egress-gateway-tls-origination/>Egress 网关的 TLS 发起过程</a></li><li role=none><a role=treeitem title="描述如何开启通用域中一组主机的 egress,无需单独配置每一台主机。" href=/v1.5/zh/docs/tasks/traffic-management/egress/wildcard-egress-hosts/>Wildcard 主机的 egress</a></li><li role=none><a role=treeitem title="描述如何在 TLS Egress 上配置 SNI 监控和策略。" href=/v1.5/zh/docs/tasks/traffic-management/egress/egress_sni_monitoring_and_policies/>TLS Egress 监控和策略配置</a></li><li role=none><a role=treeitem title="展示如何配置 Istio Kubernetes 外部服务。" href=/v1.5/zh/docs/tasks/traffic-management/egress/egress-kubernetes-services/>Kubernetes Egress 流量服务</a></li><li role=none><a role=treeitem title="描述如何配置 Istio 以允许应用程序使用外部 HTTPS 代理。" href=/v1.5/zh/docs/tasks/traffic-management/egress/http-proxy/>使用外部 HTTPS 代理</a></li></ul></li></ul></li><li role=treeitem aria-label=安全><button aria-hidden=true></button><a title=演示如何保护网格。 href=/v1.5/zh/docs/tasks/security/>安全</a><ul role=group aria-expanded=false><li role=treeitem aria-label=认证><button aria-hidden=true></button><a title="管控网格服务间的双向 TLS 和终端用户的身份认证。" href=/v1.5/zh/docs/tasks/security/authentication/>认证</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="通过一个简化的工作流和最小化配置实现双向 TLS。" href=/v1.5/zh/docs/tasks/security/authentication/auto-mtls/>自动双向 TLS</a></li><li role=none><a role=treeitem title="为您展示如何使用 Istio 认证策略设置双向 TLS 和基础终端用户认证。" href=/v1.5/zh/docs/tasks/security/authentication/authn-policy/>认证策略</a></li><li role=none><a role=treeitem title="对 Istio 双向 TLS 认证功能进行体验和测试。" href=/v1.5/zh/docs/tasks/security/authentication/mutual-tls/>深入了解双向 TLS</a></li><li role=none><a role=treeitem title="展示如何在 HTTPS 服务上启用双向 TLS。" href=/v1.5/zh/docs/tasks/security/authentication/https-overlay/>通过 HTTPS 进行 TLS</a></li><li role=none><a role=treeitem title="阐述如何将 Istio 服务逐步迁移至双向 TLS 通信模式。" href=/v1.5/zh/docs/tasks/security/authentication/mtls-migration/>双向 TLS 迁移</a></li></ul></li><li role=treeitem aria-label="Citadel 配置"><button aria-hidden=true></button><a title="定制 Citadel 证书颁发机构。" href=/v1.5/zh/docs/tasks/security/citadel-config/>Citadel 配置</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="运维人员如何使用现有根证书配置 Citadel 进行证书以及密钥的签发。" href=/v1.5/zh/docs/tasks/security/citadel-config/plugin-ca-cert/>插入外部 CA 密钥和证书</a></li><li role=none><a role=treeitem title="如何在 Kubernetes 中启用 Citadel 的健康检查。" href=/v1.5/zh/docs/tasks/security/citadel-config/health-check/>Citadel 的健康检查</a></li><li role=none><a role=treeitem title="Istio 中如何通过启用 SDS (密钥发现服务)来进行身份认证。" href=/v1.5/zh/docs/tasks/security/citadel-config/auth-sds/>通过 SDS 进行身份认证</a></li><li role=none><a role=treeitem title="配置 Citadel 应该为哪一个命名空间生成 service account secret。" href=/v1.5/zh/docs/tasks/security/citadel-config/ca-namespace-targeting/>配置 Citadel 的 Service Account Secret 生成</a></li></ul></li><li role=treeitem aria-label=授权><button aria-hidden=true></button><a title="展示如何控制到 Istio 服务的访问。" href=/v1.5/zh/docs/tasks/security/authorization/>授权</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="有关如何在 Istio 中配置基于组的授权和列表类型声明的授权的教程。" href=/v1.5/zh/docs/tasks/security/authorization/rbac-groups/>基于组和列表声明的授权</a></li><li role=none><a role=treeitem title="展示如何设置基于角色的 HTTP 流量访问控制。" href=/v1.5/zh/docs/tasks/security/authorization/authz-http/>HTTP 流量授权</a></li><li role=none><a role=treeitem title="展示如何设置 TCP 流量的访问控制。" href=/v1.5/zh/docs/tasks/security/authorization/authz-tcp/>TCP 流量的授权</a></li><li role=none><a role=treeitem title=阐述如何在不更改授权策略的前提下从一个信任域迁移到另一个。 href=/v1.5/zh/docs/tasks/security/authorization/authz-td-migration/>授权策略信任域迁移</a></li></ul></li><li role=none><a role=treeitem title="展示如何准备和管理 Istio DNS 证书。" href=/v1.5/zh/docs/tasks/security/dns-cert/>Istio DNS 证书管理</a></li></ul></li><li role=treeitem aria-label=策略><button aria-hidden=true></button><a title=演示策略执行功能。 href=/v1.5/zh/docs/tasks/policy-enforcement/>策略</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="这个任务将告诉你如何开启 Istio 的策略检查功能。" href=/v1.5/zh/docs/tasks/policy-enforcement/enabling-policy/>启用策略检查功能</a></li><li role=none><a role=treeitem title="这部分内容将向您展示如何使用 Istio 去动态限制服务间的流量。" href=/v1.5/zh/docs/tasks/policy-enforcement/rate-limiting/>启用速率限制</a></li><li role=none><a role=treeitem title=演示如何使用策略适配器修改请求头和路由。 href=/v1.5/zh/docs/tasks/policy-enforcement/control-headers/>请求头和路由控制</a></li><li role=none><a role=treeitem title="描述如何使用简单的 denials 或黑白名单来控制对服务的访问。" href=/v1.5/zh/docs/tasks/policy-enforcement/denial-and-list/>Denials 和黑白名单</a></li></ul></li><li role=treeitem aria-label=可观察性><button aria-hidden=true></button><a title=演示如何从网格收集遥测信息。 href=/v1.5/zh/docs/tasks/observability/>可观察性</a><ul role=group aria-expanded=false><li role=treeitem aria-label=指标度量><button aria-hidden=true></button><a title="演示 Istio 网格指标度量的配置、收集和处理。" href=/v1.5/zh/docs/tasks/observability/metrics/>指标度量</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="此任务向您展示如何配置 Istio 以采集和自定义指标。" href=/v1.5/zh/docs/tasks/observability/metrics/collecting-metrics/>采集指标</a></li><li role=none><a role=treeitem title="本任务展示了如何配置 Istio 进行 TCP 服务的指标收集。" href=/v1.5/zh/docs/tasks/observability/metrics/tcp-metrics/>收集 TCP 服务指标</a></li><li role=none><a role=treeitem title="本任务介绍如何通过 Prometheus 查询 Istio 度量指标。" href=/v1.5/zh/docs/tasks/observability/metrics/querying-metrics/>通过 Prometheus 查询度量指标</a></li><li role=none><a role=treeitem title="此任务展示了如何设置和使用 Istio Dashboard 监控网格流量。" href=/v1.5/zh/docs/tasks/observability/metrics/using-istio-dashboard/>使用 Grafana 可视化指标</a></li></ul></li><li role=treeitem aria-label=日志><button aria-hidden=true></button><a title="演示 Istio 网格日志的配置、收集和处理。" href=/v1.5/zh/docs/tasks/observability/logs/>日志</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="此任务向您展示如何配置 Envoy 代理将访问日志打印到其标准输出。" href=/v1.5/zh/docs/tasks/observability/logs/access-log/>获取 Envoy 访问日志</a></li><li role=none><a role=treeitem title="本任务向您展示如何配置 Istio 来收集和定制日志。" href=/v1.5/zh/docs/tasks/observability/logs/collecting-logs/>收集日志</a></li><li role=none><a role=treeitem title="此任务向您展示如何配置 Istio 以连接到 Fluentd 守护程序进行日志收集。" href=/v1.5/zh/docs/tasks/observability/logs/fluentd/>使用 Fluentd 进行日志收集</a></li></ul></li><li role=treeitem aria-label=分布式追踪><button aria-hidden=true></button><a title="该任务展示了如何为启用了 Istio 支持的应用进行追踪。" href=/v1.5/zh/docs/tasks/observability/distributed-tracing/>分布式追踪</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="Istio 分布式追踪的概述。" href=/v1.5/zh/docs/tasks/observability/distributed-tracing/overview/>概述</a></li><li role=none><a role=treeitem title="了解如何通过配置代理以将追踪请求发送到 Zipkin。" href=/v1.5/zh/docs/tasks/observability/distributed-tracing/zipkin/>Zipkin</a></li><li role=none><a role=treeitem title="了解如何配置代理以向 Jaeger 发送追踪请求。" href=/v1.5/zh/docs/tasks/observability/distributed-tracing/jaeger/>Jaeger</a></li><li role=none><a role=treeitem title="怎样配置代理才能把追踪请求发送到 LightStep。" href=/v1.5/zh/docs/tasks/observability/distributed-tracing/lightstep/>LightStep</a></li></ul></li><li role=none><a role=treeitem title="此任务向您展示如何在 Istio 网格中可视化服务。" href=/v1.5/zh/docs/tasks/observability/kiali/>网络可视化</a></li><li role=none><a role=treeitem title="此任务向您展示如何配置从外部访问 Istio 遥测插件。" href=/v1.5/zh/docs/tasks/observability/gateways/>远程访问遥测插件</a></li></ul></li></ul></div></div><div class=card><button class="header dynamic" id=card118 title="这里包括多个可供 Istio 使用的可完整工作的示例,你可以用来亲自部署和体验这些示例。" aria-controls=card118-body><svg class="icon"><use xlink:href="/v1.5/img/icons.svg#examples"/></svg>示例</button><div class=body aria-labelledby=card118 role=region id=card118-body><ul role=tree aria-expanded=true aria-labelledby=card118><li role=none><a role=treeitem title="部署一个用于演示多种 Istio 特性的应用,由四个单独的微服务构成。" href=/v1.5/zh/docs/examples/bookinfo/>Bookinfo 应用</a></li><li role=treeitem aria-label=虚拟机><button aria-hidden=true></button><a title="将虚拟机中运行的工作负载添加到 Istio 网格的示例。" href=/v1.5/zh/docs/examples/virtual-machines/>虚拟机</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="学习如何新增一个服务,使其运行在单网络 Istio 网格的虚拟机上。" href=/v1.5/zh/docs/examples/virtual-machines/single-network/>单个网络网格中的虚拟机</a></li><li role=none><a role=treeitem title="学习怎样添加运行在虚拟机上的服务到您的多网络 Istio 网格中。" href=/v1.5/zh/docs/examples/virtual-machines/multi-network/>多网络网格中的虚拟机</a></li><li role=none><a role=treeitem title="使用在网格内的虚拟机上运行的 MySQL 服务运行 Bookinfo 应用程序。" href=/v1.5/zh/docs/examples/virtual-machines/bookinfo/>在虚拟机上部署 Bookinfo 应用程序</a></li></ul></li><li role=treeitem aria-label="使用 Kubernetes 和 Istio 学习微服务"><button aria-hidden=true></button><a title="该模块化教程为新用户提供了一步步将 Istio 应用于常见微服务场景的动手经验。" href=/v1.5/zh/docs/examples/microservices-istio/>使用 Kubernetes 和 Istio 学习微服务</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem href=/v1.5/zh/docs/examples/microservices-istio/prereq/>前提条件</a></li><li role=none><a role=treeitem href=/v1.5/zh/docs/examples/microservices-istio/setup-kubernetes-cluster/>设置 Kubernetes 集群</a></li><li role=none><a role=treeitem href=/v1.5/zh/docs/examples/microservices-istio/setup-local-computer/>设置本地计算机</a></li><li role=none><a role=treeitem href=/v1.5/zh/docs/examples/microservices-istio/single/>本地运行微服务</a></li><li role=none><a role=treeitem href=/v1.5/zh/docs/examples/microservices-istio/package-service/>在 Docker 中运行 ratings 服务</a></li><li role=none><a role=treeitem href=/v1.5/zh/docs/examples/microservices-istio/bookinfo-kubernetes/>使用 Kubernetes 运行 Bookinfo</a></li><li role=none><a role=treeitem href=/v1.5/zh/docs/examples/microservices-istio/production-testing/>生产测试</a></li></ul></li></ul></div></div><div class=card><button class="header dynamic" id=card125 title="关于部署和管理 Istio 网格的概念、工具和技术。" aria-controls=card125-body><svg class="icon"><use xlink:href="/v1.5/img/icons.svg#guide"/></svg>运维</button><div class=body aria-labelledby=card125 role=region id=card125-body><ul role=tree aria-expanded=true aria-labelledby=card125><li role=treeitem aria-label=部署><button aria-hidden=true></button><a title="设置 Istio 部署的要求、概念和注意事项。" href=/v1.5/zh/docs/ops/deployment/>部署</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="描述 Istio 的整体架构与设计目标。" href=/v1.5/zh/docs/ops/deployment/architecture/>架构</a></li><li role=none><a role=treeitem title="描述 Istio 部署中的选择和建议。" href=/v1.5/zh/docs/ops/deployment/deployment-models/>部署模型</a></li><li role=none><a role=treeitem title="介绍 Istio 的性能和可扩展性。" href=/v1.5/zh/docs/ops/deployment/performance-and-scalability/>性能和可扩展性</a></li><li role=none><a role=treeitem title="在启用了 Istio 的集群中运行 Kubernetes 的 Pod 和 Service,您需要做些准备。" href=/v1.5/zh/docs/ops/deployment/requirements/>Pod 和 Service</a></li></ul></li><li role=treeitem aria-label=配置><button aria-hidden=true></button><a title="配置运行中的 Istio 网格的高级概念和功能。" href=/v1.5/zh/docs/ops/configuration/>配置</a><ul role=group aria-expanded=false><li role=treeitem aria-label=网格配置><button aria-hidden=true></button><a title=帮助您管理全局网格配置。 href=/v1.5/zh/docs/ops/configuration/mesh/>网格配置</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="简要描述 Istio 对 Kubernetes webhook 的使用以及可能出现的相关问题。" href=/v1.5/zh/docs/ops/configuration/mesh/webhook/>动态准入 Webhook 概述</a></li><li role=none><a role=treeitem title="介绍 Istio 是如何通过 Kubernetes 的 webhooks 机制来实现 Sidecar 自动注入。" href=/v1.5/zh/docs/ops/configuration/mesh/injection-concepts/>Sidecar 自动注入</a></li><li role=none><a role=treeitem title="描述 Citadel 如何确定是否创建服务账号 secret。" href=/v1.5/zh/docs/ops/configuration/mesh/secret-creation/>创建服务账号 Secret</a></li><li role=none><a role=treeitem title="为您展示如何对 Istio 服务做健康检查。" href=/v1.5/zh/docs/ops/configuration/mesh/app-health-check/>Istio 服务的健康检查</a></li></ul></li><li role=treeitem aria-label=流量管理><button aria-hidden=true></button><a title=帮助您管理正在运行的网格的网络方面。 href=/v1.5/zh/docs/ops/configuration/traffic-management/>流量管理</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title=关于怎么声明协议的信息。 href=/v1.5/zh/docs/ops/configuration/traffic-management/protocol-selection/>协议选择</a></li><li role=none><a role=treeitem title=有关如何启用和理解地域负载平衡。 href=/v1.5/zh/docs/ops/configuration/traffic-management/locality-load-balancing/>地域负载均衡</a></li></ul></li><li role=treeitem aria-label=安全><button aria-hidden=true></button><a title=帮助您管理正在运行的网格的安全性方面。 href=/v1.5/zh/docs/ops/configuration/security/>安全</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="使用加固的容器镜像来减小 Istio 的攻击面。" href=/v1.5/zh/docs/ops/configuration/security/harden-docker-images/>加固 Docker 容器镜像</a></li><li role=none><a role=treeitem title="学习如何延长 Istio 自签名根证书的寿命。" href=/v1.5/zh/docs/ops/configuration/security/root-transition/>延长自签名证书的寿命</a></li></ul></li><li role=treeitem aria-label=可观测性><button aria-hidden=true></button><a title=帮助您管理正在运行的网格中的遥测收集和可视化。 href=/v1.5/zh/docs/ops/configuration/telemetry/>可观测性</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="精细化控制 Envoy 的统计信息。" href=/v1.5/zh/docs/ops/configuration/telemetry/envoy-stats/>Envoy 的统计信息</a></li><li role=none><a role=treeitem title=怎样使用代理生成服务级别的指标。 href=/v1.5/zh/docs/ops/configuration/telemetry/in-proxy-service-telemetry/>不使用 Mixer 生成 Istio 指标 [Alpha]</a></li></ul></li></ul></li><li role=treeitem aria-label=最佳实践><button aria-hidden=true></button><a title="设置和管理 Istio 服务网格的最佳实践。" href=/v1.5/zh/docs/ops/best-practices/>最佳实践</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="设置 Istio 服务网格时的最佳实践。" href=/v1.5/zh/docs/ops/best-practices/deployment/>Deployment 最佳实践</a></li><li role=none><a role=treeitem title=避免网络或流量管理问题的配置最佳实践。 href=/v1.5/zh/docs/ops/best-practices/traffic-management/>流量管理最佳实践</a></li><li role=none><a role=treeitem title="使用 Istio 保护应用的最佳实践。" href=/v1.5/zh/docs/ops/best-practices/security/>安全最佳实践</a></li></ul></li><li role=treeitem aria-label=常见问题><button aria-hidden=true></button><a title="描述如何辨认和解决 Istio 中的常见问题。" href=/v1.5/zh/docs/ops/common-problems/>常见问题</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="定位常见的 Istio 流量管理和网络问题的技术。" href=/v1.5/zh/docs/ops/common-problems/network-issues/>流量管理问题</a></li><li role=none><a role=treeitem title="定位常见 Istio 认证、授权、安全相关问题的技巧。" href=/v1.5/zh/docs/ops/common-problems/security-issues/>安全问题</a></li><li role=none><a role=treeitem title="处理 Telemetry 收集问题。" href=/v1.5/zh/docs/ops/common-problems/observability-issues/>可观测性问题</a></li><li role=none><a role=treeitem title="解决 Istio 使用 Kubernetes Webhooks 进行 sidecar 自动注入的常见问题。" href=/v1.5/zh/docs/ops/common-problems/injection/>Sidecar 自动注入问题</a></li><li role=none><a role=treeitem title=如何解决配置验证的问题。 href=/v1.5/zh/docs/ops/common-problems/validation/>配置验证的问题</a></li></ul></li><li role=treeitem aria-label=诊断工具><button aria-hidden=true></button><a title="帮助解决 Istio 网格问题的工具和技术。" href=/v1.5/zh/docs/ops/diagnostic-tools/>诊断工具</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="Istio 自带的一个可以为服务网格部署提供调试和诊断的补充工具。" href=/v1.5/zh/docs/ops/diagnostic-tools/istioctl/>使用 Istioctl 命令行工具</a></li><li role=none><a role=treeitem title="描述诊断与流量管理相关的 Envoy 配置问题的工具和技术。" href=/v1.5/zh/docs/ops/diagnostic-tools/proxy-cmd/>调试 Envoy 和 Pilot</a></li><li role=none><a role=treeitem title="向您展示如何使用 istioctl describe 来验证您的网格中的 pod 的配置。" href=/v1.5/zh/docs/ops/diagnostic-tools/istioctl-describe/>通过 Istioctl Describe 理解您的网格</a></li><li role=none><a role=treeitem title="演示如何使用 istioctl analyze 来识别配置中的潜在问题。" href=/v1.5/zh/docs/ops/diagnostic-tools/istioctl-analyze/>使用 Istioctl Analyze 诊断配置</a></li><li role=none><a role=treeitem title="介绍如何使用 ControlZ 深入了解各个运行组件。" href=/v1.5/zh/docs/ops/diagnostic-tools/controlz/>组件自检</a></li><li role=none><a role=treeitem title=如何使用组件的级别日志来记录正在运行中的组件的行为。 href=/v1.5/zh/docs/ops/diagnostic-tools/component-logging/>组件日志记录</a></li></ul></li></ul></div></div><div class=card><button class="header dynamic" id=card162 title="参考部分包含详细的权威参考资料,如命令行选项、配置选项和 API 调用参数。" aria-controls=card162-body><svg class="icon"><use xlink:href="/v1.5/img/icons.svg#reference"/></svg>参考</button><div class=body aria-labelledby=card162 role=region id=card162-body><ul role=tree aria-expanded=true aria-labelledby=card162><li role=treeitem aria-label=配置><button aria-hidden=true></button><a title=关于配置选项的详细信息。 href=/v1.5/zh/docs/reference/config/>配置</a><ul role=group aria-expanded=false><li role=none><a role=treeitem title="Configuration affecting the service mesh as a whole." href=/v1.5/zh/docs/reference/config/istio.mesh.v1alpha1/>Service Mesh</a></li><li role=none><a role=treeitem title="Configuration for Istio control plane installation through the Operator." href=/v1.5/zh/docs/reference/config/istio.operator.v1alpha12.pb/>Operator Installation</a></li><li role=none><a role=treeitem title="描述使用 Helm chart 安装 Istio 时的可选项。" href=/v1.5/zh/docs/reference/config/installation-options/>安装选项(Helm)</a></li><li role=none><a role=treeitem title="Configuration affecting Istio control plane installation version and shape." href=/v1.5/zh/docs/reference/config/istio.operator.v1alpha1/>IstioOperator Options</a></li><li role=none><a role=treeitem title="Resource annotations used by Istio." href=/v1.5/zh/docs/reference/config/annotations/>Resource Annotations</a></li><li role=treeitem aria-label=流量管理><button aria-hidden=true></button><a title="描述如何配置 HTTP/TCP 路由功能。" href=/v1.5/zh/docs/reference/config/networking/>流量管理</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="Configuration affecting load balancing, outlier detection, etc." href=/v1.5/zh/docs/reference/config/networking/destination-rule/>Destination Rule</a></li><li role=none><a role=treeitem title="Customizing Envoy configuration generated by Istio." href=/v1.5/zh/docs/reference/config/networking/envoy-filter/>Envoy Filter</a></li><li role=none><a role=treeitem title="Configuration affecting edge load balancer." href=/v1.5/zh/docs/reference/config/networking/gateway/>Gateway</a></li><li role=none><a role=treeitem title="Configuration affecting label/content routing, sni routing, etc." href=/v1.5/zh/docs/reference/config/networking/virtual-service/>Virtual Service</a></li><li role=none><a role=treeitem title="Configuration affecting network reachability of a sidecar." href=/v1.5/zh/docs/reference/config/networking/sidecar/>Sidecar</a></li><li role=none><a role=treeitem title="Configuration affecting service registry." href=/v1.5/zh/docs/reference/config/networking/service-entry/>Service Entry</a></li></ul></li><li role=treeitem aria-label=Security><button aria-hidden=true></button><a title="如何配置 Istio 的安全功能。" href=/v1.5/zh/docs/reference/config/security/>Security</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="Configuration to validate JWT." href=/v1.5/zh/docs/reference/config/security/jwt/>JWTRule</a></li><li role=none><a role=treeitem title="Request authentication configuration for workloads." href=/v1.5/zh/docs/reference/config/security/request_authentication/>RequestAuthentication</a></li><li role=none><a role=treeitem title="Peer authentication configuration for workloads." href=/v1.5/zh/docs/reference/config/security/peer_authentication/>PeerAuthentication</a></li><li role=none><a role=treeitem title="Authentication policy for Istio services." href=/v1.5/zh/docs/reference/config/security/istio.authentication.v1alpha1/>Authentication Policy</a></li><li role=none><a role=treeitem title="Configuration for access control on workloads." href=/v1.5/zh/docs/reference/config/security/authorization-policy/>Authorization Policy</a></li><li role=none><a role=treeitem title=授权策略中支持的条件。 href=/v1.5/zh/docs/reference/config/security/conditions/>授权策略</a></li><li role=none><a role=treeitem title="Configuration for Role Based Access Control." href=/v1.5/zh/docs/reference/config/security/istio.rbac.v1alpha1/>RBAC (deprecated)</a></li><li role=none><a role=treeitem title=受支持的约束条件和属性。 href=/v1.5/zh/docs/reference/config/security/constraints-and-properties/>RBAC 约束和属性(不建议使用)</a></li></ul></li><li role=treeitem aria-label="Telemetry V2"><button aria-hidden=true></button><a title="Describes how to configure Istio telemetry V2." href=/v1.5/zh/docs/reference/config/telemetry/>Telemetry V2</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="Istio standard metrics exported by Istio telemetry." href=/v1.5/zh/docs/reference/config/telemetry/metrics/>Istio Standard Metrics</a></li><li role=none><a role=treeitem title="How to configure v2 metrics (experimental)." href=/v1.5/zh/docs/reference/config/telemetry/configurable_metrics/>Configurable Metrics (Experimental)</a></li><li role=none><a role=treeitem title="How to enable Telemetry V2 with Wasm runtime (experimental)." href=/v1.5/zh/docs/reference/config/telemetry/telemetry_v2_with_wasm/>Telemetry V2 with Wasm runtime (Experimental)</a></li></ul></li><li role=treeitem aria-label=策略和遥测><button aria-hidden=true></button><a title="描述如何配置 Istio 的策略和遥测功能。" href=/v1.5/zh/docs/reference/config/policy-and-telemetry/>策略和遥测</a><ul role=group aria-expanded=false><li role=none><a role=treeitem title="Configuration state for the Mixer client library." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/istio.mixer.v1.config.client/>Mixer Client</a></li><li role=none><a role=treeitem title="Describes the rules used to configure Mixer's policy and telemetry features." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/istio.policy.v1beta1/>Rules</a></li><li role=none><a role=treeitem title="描述 Istio 策略执行和遥测机制的配置模型。" href=/v1.5/zh/docs/reference/config/policy-and-telemetry/mixer-overview/>Mixer 配置模型</a></li><li role=none><a role=treeitem title=描述用于策略和控制的基本属性词汇表。 href=/v1.5/zh/docs/reference/config/policy-and-telemetry/attribute-vocabulary/>属性词汇</a></li><li role=none><a role=treeitem title="Mixer 配置表达式语言手册。" href=/v1.5/zh/docs/reference/config/policy-and-telemetry/expression-language/>表达式语言</a></li><li role=treeitem aria-label=适配器><button aria-hidden=true></button><a title="Mixer 适配器能够让 Istio 连接各种基础设施后端以完成类似指标和日志这样的功能。" href=/v1.5/zh/docs/reference/config/policy-and-telemetry/adapters/>适配器</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="Adapter to deliver metrics to Apache SkyWalking." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/adapters/apache-skywalking/>Apache SkyWalking</a></li><li role=none><a role=treeitem title="Adapter for Apigee's distributed policy checks and analytics." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/adapters/apigee/>Apigee</a></li><li role=none><a role=treeitem title="Adapter to enforce authentication and authorization policies for web apps and APIs." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/adapters/app-identity-access-adapter/>App Identity and Access</a></li><li role=none><a role=treeitem title="Adapter for circonus.com's monitoring solution." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/adapters/circonus/>Circonus</a></li><li role=none><a role=treeitem title="Adapter for cloudmonitor metrics." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/adapters/cloudmonitor/>CloudMonitor</a></li><li role=none><a role=treeitem title="Adapter for cloudwatch metrics." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/adapters/cloudwatch/>CloudWatch</a></li><li role=none><a role=treeitem title="Adapter to deliver metrics to a dogstatsd agent for delivery to DataDog." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/adapters/datadog/>Datadog</a></li><li role=none><a role=treeitem title="Adapter to deliver tracing data to Zipkin." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/adapters/zipkin/>Zipkin</a></li><li role=none><a role=treeitem title="Adapter that always returns a precondition denial." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/adapters/denier/>Denier</a></li><li role=none><a role=treeitem title="Adapter that delivers logs to a Fluentd daemon." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/adapters/fluentd/>Fluentd</a></li><li role=none><a role=treeitem title="Adapter that extracts information from a Kubernetes environment." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/adapters/kubernetesenv/>Kubernetes Env</a></li><li role=none><a role=treeitem title="Adapter that performs whitelist or blacklist checks." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/adapters/list/>List</a></li><li role=none><a role=treeitem title="Adapter for a simple in-memory quota management system." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/adapters/memquota/>Memory quota</a></li><li role=none><a role=treeitem title="An Istio Mixer adapter to send telemetry data to New Relic." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/adapters/newrelic/>New Relic</a></li><li role=none><a role=treeitem title="Adapter to deliver metrics to Wavefront by VMware." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/adapters/wavefront/>Wavefront by VMware</a></li><li role=none><a role=treeitem title="Adapter to locally output logs and metrics." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/adapters/stdio/>Stdio</a></li><li role=none><a role=treeitem title="Adapter to deliver metrics to a StatsD backend." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/adapters/statsd/>StatsD</a></li><li role=none><a role=treeitem title="Adapter to deliver logs, metrics, and traces to Stackdriver." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/adapters/stackdriver/>Stackdriver</a></li><li role=none><a role=treeitem title="Adapter to deliver logs and metrics to Papertrail and AppOptics backends." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/adapters/solarwinds/>SolarWinds</a></li><li role=none><a role=treeitem title="Adapter for a Redis-based quota management system." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/adapters/redisquota/>Redis Quota</a></li><li role=none><a role=treeitem title="Adapter that exposes Istio metrics for ingestion by a Prometheus harvester." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/adapters/prometheus/>Prometheus</a></li><li role=none><a role=treeitem title="Adapter that implements an Open Policy Agent engine." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/adapters/opa/>OPA</a></li></ul></li><li role=none><a role=treeitem title="通过 Mixer 从 Istio 导出的默认监控指标。" href=/v1.5/zh/docs/reference/config/policy-and-telemetry/metrics/>默认监控指标</a></li><li role=treeitem aria-label=模板><button aria-hidden=true></button><a title="Mixer 模板用于将数据发送到各个适配器。" href=/v1.5/zh/docs/reference/config/policy-and-telemetry/templates/>模板</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="The Analytics template is used to dispatch runtime telemetry to Apigee." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/templates/analytics/>Analytics</a></li><li role=none><a role=treeitem title="A template that represents a single API key." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/templates/apikey/>API Key</a></li><li role=none><a role=treeitem title="A template used to represent an access control query." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/templates/authorization/>Authorization</a></li><li role=none><a role=treeitem title="A template that carries no data, useful for testing." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/templates/checknothing/>Check Nothing</a></li><li role=none><a role=treeitem title="A template designed to report observed communication edges between workloads." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/templates/edge/>Edge</a></li><li role=none><a role=treeitem title="A template that is used to control the production of Kubernetes-specific attributes." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/templates/kubernetes/>Kubernetes</a></li><li role=none><a role=treeitem title="A template designed to let you perform list checking operations." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/templates/listentry/>List Entry</a></li><li role=none><a role=treeitem title="A template that represents a single runtime log entry." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/templates/logentry/>Log Entry</a></li><li role=none><a role=treeitem title="A template that represents a single runtime metric." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/templates/metric/>Metric</a></li><li role=none><a role=treeitem title="A template that represents an individual span within a distributed trace." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/templates/tracespan/>Trace Span</a></li><li role=none><a role=treeitem title="A template that carries no data, useful for testing." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/templates/reportnothing/>Report Nothing</a></li><li role=none><a role=treeitem title="A template that represents a quota allocation request." href=/v1.5/zh/docs/reference/config/policy-and-telemetry/templates/quota/>Quota</a></li></ul></li></ul></li><li role=treeitem aria-label=配置分析消息><button aria-hidden=true></button><a title=记录配置分析期间产生的各个错误和警告消息。 href=/v1.5/zh/docs/reference/config/analysis/>配置分析消息</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem href=/v1.5/zh/docs/reference/config/analysis/message-format/>Analyzer Message Format</a></li><li role=none><a role=treeitem href=/v1.5/zh/docs/reference/config/analysis/ist0109/>ConflictingMeshGatewayVirtualServiceHosts</a></li><li role=none><a role=treeitem href=/v1.5/zh/docs/reference/config/analysis/ist0110/>ConflictingSidecarWorkloadSelectors</a></li><li role=none><a role=treeitem href=/v1.5/zh/docs/reference/config/analysis/ist0002/>Deprecated</a></li><li role=none><a role=treeitem href=/v1.5/zh/docs/reference/config/analysis/ist0104/>GatewayPortNotOnWorkload</a></li><li role=none><a role=treeitem href=/v1.5/zh/docs/reference/config/analysis/ist0001/>InternalError</a></li><li role=none><a role=treeitem href=/v1.5/zh/docs/reference/config/analysis/ist0105/>IstioProxyImageMismatch</a></li><li role=none><a role=treeitem href=/v1.5/zh/docs/reference/config/analysis/ist0119/>JwtFailureDueToInvalidServicePortPrefix</a></li><li role=none><a role=treeitem href=/v1.5/zh/docs/reference/config/analysis/ist0107/>MisplacedAnnotation</a></li><li role=none><a role=treeitem href=/v1.5/zh/docs/reference/config/analysis/ist0113/>MTLSPolicyConflict</a></li><li role=none><a role=treeitem href=/v1.5/zh/docs/reference/config/analysis/ist0111/>MultipleSidecarsWithoutWorkloadSelectors</a></li><li role=none><a role=treeitem href=/v1.5/zh/docs/reference/config/analysis/ist0102/>NamespaceNotInjected</a></li><li role=none><a role=treeitem href=/v1.5/zh/docs/reference/config/analysis/ist0106/>SchemaValidationError</a></li><li role=none><a role=treeitem href=/v1.5/zh/docs/reference/config/analysis/ist0112/>VirtualServiceDestinationPortSelectorRequired</a></li><li role=none><a role=treeitem href=/v1.5/zh/docs/reference/config/analysis/ist0108/>UnknownAnnotation</a></li><li role=none><a role=treeitem href=/v1.5/zh/docs/reference/config/analysis/ist0101/>ReferencedResourceNotFound</a></li><li role=none><a role=treeitem href=/v1.5/zh/docs/reference/config/analysis/ist0118/>PortNameIsNotUnderNamingConvention</a></li><li role=none><a role=treeitem href=/v1.5/zh/docs/reference/config/analysis/ist0103/>PodMissingProxy</a></li></ul></li></ul></li><li role=treeitem aria-label=命令><button aria-hidden=true></button><a title="描述 Istio 命令和工具的用法及选项。" href=/v1.5/zh/docs/reference/commands/>命令</a><ul role=group aria-expanded=false class=leaf-section><li role=none><a role=treeitem title="Galley provides configuration management services for Istio." href=/v1.5/zh/docs/reference/commands/galley/>galley</a></li><li role=none><a role=treeitem title="Istio Certificate Authority (CA)." href=/v1.5/zh/docs/reference/commands/istio_ca/>istio_ca</a></li><li role=none><a role=treeitem title="Istio control interface." href=/v1.5/zh/docs/reference/commands/istioctl/>istioctl</a></li><li role=none><a role=treeitem title="Mixer is Istio's abstraction on top of infrastructure backends." href=/v1.5/zh/docs/reference/commands/mixs/>mixs</a></li><li role=none><a role=treeitem title="Istio security per-node agent." href=/v1.5/zh/docs/reference/commands/node_agent/>node_agent</a></li><li role=none><a role=treeitem title="Kubernetes webhook for automatic Istio sidecar injection." href=/v1.5/zh/docs/reference/commands/sidecar-injector/>sidecar-injector</a></li><li role=none><a role=treeitem title="The Istio operator." href=/v1.5/zh/docs/reference/commands/operator/>operator</a></li><li role=none><a role=treeitem title="Istio Pilot." href=/v1.5/zh/docs/reference/commands/pilot-discovery/>pilot-discovery</a></li><li role=none><a role=treeitem title="Istio Pilot agent." href=/v1.5/zh/docs/reference/commands/pilot-agent/>pilot-agent</a></li></ul></li><li role=none><a role=treeitem title="Istio 常用术语的词汇表。" href=/v1.5/zh/docs/reference/glossary/>术语表</a></li></ul></div></div></div></nav></div><div class=article-container><button tabindex=-1 id=sidebar-toggler title=折叠导航栏><svg class="icon"><use xlink:href="/v1.5/img/icons.svg#pull"/></svg></button><nav aria-label=Breadcrumb><ol><li><a href=/v1.5/zh/ title=用于连接、保护、控制和观测服务。>Istio</a></li><li><a href=/v1.5/zh/docs/ title="了解如何部署、使用和运维 Istio。">文档</a></li><li><a href=/v1.5/zh/docs/setup/ title="关于如何在 Kubernetes 集群中安装 Istio 控制平面和添加虚拟机到 mesh 中的说明。">安装</a></li><li><a href=/v1.5/zh/docs/setup/install/ title=选择最适合您的需求和平台的指南。>安装</a></li><li><a href=/v1.5/zh/docs/setup/install/multicluster/ title="配置跨越多个 Kubernetes 集群的 Istio 服务网格。">多集群安装</a></li><li>共享的控制平面(多网络)</li></ol></nav><article aria-labelledby=title><div class=title-area><div style=width:100%><h1 id=title>共享的控制平面(多网络)</h1><p class=byline><span title="1313 字"><svg class="icon"><use xlink:href="/v1.5/img/icons.svg#clock"/></svg><span> </span>阅读大约需要 7 分钟</span></p></div></div><nav class=toc-inlined aria-label="Table of Contents"><div><hr><ol><li role=none aria-label=前提条件><a href=#prerequisites>前提条件</a><li role=none aria-label=安装多集群网格><a href=#setup-the-multicluster-mesh>安装多集群网格</a><ol><li role=none aria-label="安装集群 1(主集群)"><a href=#setup-cluster-1-primary>安装集群 1(主集群)</a><li role=none aria-label="安装集群 2"><a href=#setup-cluster-2>安装集群 2</a><li role=none aria-label="启动 watching 集群 2{start-watching-cluster-2}"><a href=#%e5%90%af%e5%8a%a8-watching-%e9%9b%86%e7%be%a4-2-start-watching-cluster-2>启动 watching 集群 2{start-watching-cluster-2}</a></ol></li><li role=none aria-label=部署案例服务><a href=#deploy-example-service>部署案例服务</a><ol><li role=none aria-label="在集群 2 中部署 helloworld v2"><a href=#deploy-helloworld-v2-in-cluster-2>在集群 2 中部署 helloworld v2</a><li role=none aria-label="在集群 1 中部署 helloworld v1"><a href=#deploy-helloworld-v1-in-cluster-1>在集群 1 中部署 helloworld v1</a><li role=none aria-label=跨集群路由实践><a href=#cross-cluster-routing-in-action>跨集群路由实践</a></ol></li><li role=none aria-label=清除><a href=#cleanup>清除</a><li role=none aria-label=相关内容><a href=#see-also>相关内容</a></li></ol><hr></div></nav><p>遵循本指南配置一个多集群网格,使用共享的
|
||
<a href=/v1.5/zh/docs/ops/deployment/deployment-models/#control-plane-models>控制平面</a>,并通过网关连通彼此网络隔离的集群。
|
||
Istio 位置感知的服务路由特性,可以根据请求源所在的位置将请求路由至不同的 endpoints。</p><p>遵循本指南中的说明,将安装一个两集群网格,如下图所示:</p><figure style=width:80%><div class=wrapper-with-intrinsic-ratio style=padding-bottom:59.05156410387077%><a data-skipendnotes=true href=/v1.5/zh/docs/setup/install/multicluster/shared-gateways/diagram.svg title="Shared Istio control plane topology spanning multiple Kubernetes clusters using gateways"><img class=element-to-stretch src=/v1.5/zh/docs/setup/install/multicluster/shared-gateways/diagram.svg alt="Shared Istio control plane topology spanning multiple Kubernetes clusters using gateways"></a></div><figcaption>Shared Istio control plane topology spanning multiple Kubernetes clusters using gateways</figcaption></figure><p>主集群 <code>cluster1</code> 运行全部的 Istio 控制平面组件集,而 <code>cluster2</code> 只运行 Istio Citadel、Sidecar 注入器以及 Ingress 网关。
|
||
不同集群的工作负载之间既不要求 VPN 连接也不要求直接网络访问。</p><h2 id=prerequisites>前提条件</h2><ul><li><p>两个或多个 Kubernetes 集群,版本为: 1.14, 1.15, 1.16。</p></li><li><p>有权限<a href=/v1.5/zh/docs/setup/install/istioctl/>部署 Istio 控制平面</a></p></li><li><p>两个 Kubernetes 集群(称为 <code>cluster1</code> 和 <code>cluster2</code>)。</p><div><aside class="callout warning"><div class=type><svg class="large-icon"><use xlink:href="/v1.5/img/icons.svg#callout-warning"/></svg></div><div class=content>为了运行本配置,<code>cluster1</code> 必须能够访问 <code>cluster2</code> 的 Kubernetes API server。</div></aside></div></li></ul><ul><li><p>你可以使用 <code>kubectl</code> 命令带上 <code>--context</code> 参数去访问集群 <code>cluster1</code> 和 <code>cluster2</code>,
|
||
例如 <code>kubectl get pods --context cluster1</code>。
|
||
使用如下命令列出你的上下文:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl config get-contexts
|
||
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
|
||
* cluster1 cluster1 user@foo.com default
|
||
cluster2 cluster2 user@foo.com default
|
||
</code></pre></li><li><p>保存集群的上下文到环境变量:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ export CTX_CLUSTER1=$(kubectl config view -o jsonpath='{.contexts[0].name}')
|
||
$ export CTX_CLUSTER2=$(kubectl config view -o jsonpath='{.contexts[1].name}')
|
||
$ echo CTX_CLUSTER1 = ${CTX_CLUSTER1}, CTX_CLUSTER2 = ${CTX_CLUSTER2}
|
||
CTX_CLUSTER1 = cluster1, CTX_CLUSTER2 = cluster2
|
||
</code></pre><div><aside class="callout tip"><div class=type><svg class="large-icon"><use xlink:href="/v1.5/img/icons.svg#callout-tip"/></svg></div><div class=content>如果你有超过两个集群的上下文并且你想要使用前两个以外的集群配置你的网格,你需要手动将环境变量设置为你需要的上下文名称。</div></aside></div></li></ul><h2 id=setup-the-multicluster-mesh>安装多集群网格</h2><p>在本配置中,安装 Istio 时同时开启控制平面和应用 pods 的双向 TLS。
|
||
对于共享的根 CA,使用 Istio 示例目录下相同的 Istio 证书,在 <code>cluster1</code> 和 <code>cluster2</code> 中都创建相同的 <code>cacerts</code> secret。</p><p>下文命令安装 <code>cluster2</code> 时,创建一个无 selector 的服务,并为 <code>istio-pilot.istio-system</code> 创建一个 endpoint,其地址为 <code>cluster1</code> 的 Istio ingress gateway。
|
||
它们用于通过 ingress gateway 安全地访问 <code>cluster1</code> 中的 pilot,无需双向 TLS 终端。</p><h3 id=setup-cluster-1-primary>安装集群 1(主集群)</h3><ol><li><p>在 <code>cluster1</code> 中部署 Istio:</p><div><aside class="callout warning"><div class=type><svg class="large-icon"><use xlink:href="/v1.5/img/icons.svg#callout-warning"/></svg></div><div class=content>当启用多集群所需的附加组件时,Istio 控制平面的资源占用量可能会增长,甚至超过 Kubernetes 集群安装<a href=/v1.5/zh/docs/setup/platform-setup/>平台安装</a>步骤中的默认容量。
|
||
如果因 CPU 或内存资源不足导致 Istio 服务无法调度,可以考虑在集群中添加更多节点,或按需升级为更大内存容量的实例。</div></aside></div><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl create --context=$CTX_CLUSTER1 ns istio-system
|
||
$ kubectl create --context=$CTX_CLUSTER1 secret generic cacerts -n istio-system --from-file=samples/certs/ca-cert.pem --from-file=samples/certs/ca-key.pem --from-file=samples/certs/root-cert.pem --from-file=samples/certs/cert-chain.pem
|
||
$ istioctl manifest apply --context=$CTX_CLUSTER1 \
|
||
-f install/kubernetes/operator/examples/multicluster/values-istio-multicluster-primary.yaml
|
||
</code></pre><div><aside class="callout warning"><div class=type><svg class="large-icon"><use xlink:href="/v1.5/img/icons.svg#callout-warning"/></svg></div><div class=content>注意网关地址设置为 <code>0.0.0.0</code>。这些是临时的占位值,在下文章节集群部署后,将被更新为 <code>cluster1</code> 和 <code>cluster2</code> 的网关公网 IP。</div></aside></div><p>等待 <code>cluster1</code> 中的 Istio pods 就绪:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl get pods --context=$CTX_CLUSTER1 -n istio-system
|
||
NAME READY STATUS RESTARTS AGE
|
||
istio-citadel-55d8b59798-6hnx4 1/1 Running 0 83s
|
||
istio-galley-c74b77787-lrtr5 2/2 Running 0 82s
|
||
istio-ingressgateway-684f5df677-shzhm 1/1 Running 0 83s
|
||
istio-pilot-5495bc8885-2rgmf 2/2 Running 0 82s
|
||
istio-policy-69cdf5db4c-x4sct 2/2 Running 2 83s
|
||
istio-sidecar-injector-5749cf7cfc-pgd95 1/1 Running 0 82s
|
||
istio-telemetry-646db5ddbd-gvp6l 2/2 Running 1 83s
|
||
prometheus-685585888b-4tvf7 1/1 Running 0 83s
|
||
</code></pre></li><li><p>创建一个 ingress 网关访问 <code>cluster2</code> 中的服务:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl apply --context=$CTX_CLUSTER1 -f - <<EOF
|
||
apiVersion: networking.istio.io/v1alpha3
|
||
kind: Gateway
|
||
metadata:
|
||
name: cluster-aware-gateway
|
||
namespace: istio-system
|
||
spec:
|
||
selector:
|
||
istio: ingressgateway
|
||
servers:
|
||
- port:
|
||
number: 443
|
||
name: tls
|
||
protocol: TLS
|
||
tls:
|
||
mode: AUTO_PASSTHROUGH
|
||
hosts:
|
||
- "*.local"
|
||
EOF
|
||
</code></pre><p>本例 <code>Gateway</code> 配置 443 端口来将流经的入口流量导向请求 SNI 头中指明的目标服务,其中 SNI 的顶级域名为 _local_(譬如: <a href=https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/>Kubernetes DNS 域名</a>)。
|
||
从源至目标 sidecar,始终使用双向 TLS 连接。</p><p>尽管应用于 <code>cluster1</code>,该网关实例也会影响 <code>cluster2</code>,因为两个集群通过同一个 Pilot 通信。</p></li><li><p>确定 <code>cluster1</code> 的 ingress IP 和端口。</p><ol><li><p>设置 <code>kubectl</code> 的当前上下文为 <code>CTX_CLUSTER1</code></p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ export ORIGINAL_CONTEXT=$(kubectl config current-context)
|
||
$ kubectl config use-context $CTX_CLUSTER1
|
||
</code></pre></li><li><p>按照<a href=/v1.5/zh/docs/tasks/traffic-management/ingress/ingress-control/#determining-the-ingress-i-p-and-ports>确定 ingress IP 和端口</a>中的说明,设置环境变量 <code>INGRESS_HOST</code> 及 <code>SECURE_INGRESS_PORT</code>。</p></li><li><p>恢复之前的 <code>kubectl</code> 上下文:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl config use-context $ORIGINAL_CONTEXT
|
||
$ unset ORIGINAL_CONTEXT
|
||
</code></pre></li><li><p>打印 <code>INGRESS_HOST</code> 及 <code>SECURE_INGRESS_PORT</code>:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ echo The ingress gateway of cluster1: address=$INGRESS_HOST, port=$SECURE_INGRESS_PORT
|
||
</code></pre></li></ol></li><li><p>更新网格网络配置中的网关地址。编辑 <code>istio</code> <code>ConfigMap</code>:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl edit cm -n istio-system --context=$CTX_CLUSTER1 istio
|
||
</code></pre><p>将网关地址和 <code>network1</code> 的端口分别更新为 <code>cluster1</code> 的 ingress 主机和端口,然后保存并退出。注意该地址在配置文件中出现两次,第二次位于 <code>values.yaml:</code> 下方。</p><p>一旦保存,Pilot 将自动读取更新后的网络配置。</p></li></ol><h3 id=setup-cluster-2>安装集群 2</h3><ol><li><p>输出 <code>cluster1</code> 的网关地址:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ export LOCAL_GW_ADDR=$(kubectl get --context=$CTX_CLUSTER1 svc --selector=app=istio-ingressgateway \
|
||
-n istio-system -o jsonpath='{.items[0].status.loadBalancer.ingress[0].ip}') && echo ${LOCAL_GW_ADDR}
|
||
</code></pre><p>该命令将网关地址设置为网关的公共 IP 并显示。</p><div><aside class="callout warning"><div class=type><svg class="large-icon"><use xlink:href="/v1.5/img/icons.svg#callout-warning"/></svg></div><div class=content>若负载均衡配置没有设置 IP 地址,命令将执行失败。DNS 域名支持尚未实现,亟待解决。</div></aside></div></li><li><p>在 <code>cluster2</code> 中部署 Istio:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl create --context=$CTX_CLUSTER2 ns istio-system
|
||
$ kubectl create --context=$CTX_CLUSTER2 secret generic cacerts -n istio-system --from-file=samples/certs/ca-cert.pem --from-file=samples/certs/ca-key.pem --from-file=samples/certs/root-cert.pem --from-file=samples/certs/cert-chain.pem
|
||
$ CLUSTER_NAME=$(kubectl --context=$CTX_CLUSTER2 config view --minify=true -o jsonpath='{.clusters[].name}')
|
||
$ istioctl manifest apply --context=$CTX_CLUSTER2 \
|
||
--set profile=remote \
|
||
--set values.global.mtls.enabled=true \
|
||
--set values.gateways.enabled=true \
|
||
--set values.security.selfSigned=false \
|
||
--set values.global.createRemoteSvcEndpoints=true \
|
||
--set values.global.remotePilotCreateSvcEndpoint=true \
|
||
--set values.global.remotePilotAddress=${LOCAL_GW_ADDR} \
|
||
--set values.global.remotePolicyAddress=${LOCAL_GW_ADDR} \
|
||
--set values.global.remoteTelemetryAddress=${LOCAL_GW_ADDR} \
|
||
--set values.gateways.istio-ingressgateway.env.ISTIO_META_NETWORK="network2" \
|
||
--set values.global.network="network2" \
|
||
--set values.global.multiCluster.clusterName=${CLUSTER_NAME} \
|
||
--set autoInjection.enabled=true
|
||
</code></pre><p>等待 <code>cluster2</code> 中的 Istio pods 就绪,<code>istio-ingressgateway</code> 除外。</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl get pods --context=$CTX_CLUSTER2 -n istio-system -l istio!=ingressgateway
|
||
NAME READY STATUS RESTARTS AGE
|
||
istio-citadel-55d8b59798-nlk2z 1/1 Running 0 26s
|
||
istio-sidecar-injector-5749cf7cfc-s6r7p 1/1 Running 0 25s
|
||
</code></pre><div><aside class="callout warning"><div class=type><svg class="large-icon"><use xlink:href="/v1.5/img/icons.svg#callout-warning"/></svg></div><div class=content><code>istio-ingressgateway</code> 无法就绪,直到在 <code>cluster1</code> 的 Istio 控制面板中配置好 watch <code>cluster2</code>。下一节执行该操作。</div></aside></div></li><li><p>确定 <code>cluster2</code> 的 ingress IP 和口。</p><ol><li><p>设置 <code>kubectl</code> 的当前上下文为 <code>CTX_CLUSTER2</code></p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ export ORIGINAL_CONTEXT=$(kubectl config current-context)
|
||
$ kubectl config use-context $CTX_CLUSTER2
|
||
</code></pre></li><li><p>按照<a href=/v1.5/zh/docs/tasks/traffic-management/ingress/ingress-control/#determining-the-ingress-i-p-and-ports>确定 ingress IP 和端口</a>中的说明,设置环境变量 <code>INGRESS_HOST</code> 和 <code>SECURE_INGRESS_PORT</code>。</p></li><li><p>恢复之前的 <code>kubectl</code> 上下文:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl config use-context $ORIGINAL_CONTEXT
|
||
$ unset ORIGINAL_CONTEXT
|
||
</code></pre></li><li><p>打印 <code>INGRESS_HOST</code> 和 <code>SECURE_INGRESS_PORT</code>:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ echo The ingress gateway of cluster2: address=$INGRESS_HOST, port=$SECURE_INGRESS_PORT
|
||
</code></pre></li></ol></li><li><p>更新网格网络配置中的网关地址。 编辑 <code>istio</code> <code>ConfigMap</code>:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl edit cm -n istio-system --context=$CTX_CLUSTER1 istio
|
||
</code></pre><p>将 <code>network2</code> 的网关地址和端口分别更新为 <code>cluster2</code> 的 ingress 主机和端口,然后保存并退出。注意该地址在配置文件中出现两次,第二次位于 <code>values.yaml:</code> 下方。</p><p>一旦保存,Pilot 将自动读取更新后的网络配置。</p></li><li><p>准备环境变量,构建服务账户 <code>istio-reader-service-account</code> 的配置文件 <code>n2-k8s-config</code>:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ CLUSTER_NAME=$(kubectl --context=$CTX_CLUSTER2 config view --minify=true -o jsonpath='{.clusters[].name}')
|
||
$ SERVER=$(kubectl --context=$CTX_CLUSTER2 config view --minify=true -o jsonpath='{.clusters[].cluster.server}')
|
||
$ SECRET_NAME=$(kubectl --context=$CTX_CLUSTER2 get sa istio-reader-service-account -n istio-system -o jsonpath='{.secrets[].name}')
|
||
$ CA_DATA=$(kubectl get --context=$CTX_CLUSTER2 secret ${SECRET_NAME} -n istio-system -o jsonpath="{.data['ca\.crt']}")
|
||
$ TOKEN=$(kubectl get --context=$CTX_CLUSTER2 secret ${SECRET_NAME} -n istio-system -o jsonpath="{.data['token']}" | base64 --decode)
|
||
</code></pre><div><aside class="callout idea"><div class=type><svg class="large-icon"><use xlink:href="/v1.5/img/icons.svg#callout-idea"/></svg></div><div class=content>在许多系统中,<code>base64 --decode</code> 可以替换为 <code>openssl enc -d -base64 -A</code>。</div></aside></div></li><li><p>在工作目录中创建文件 <code>n2-k8s-config</code>:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ cat <<EOF > n2-k8s-config
|
||
apiVersion: v1
|
||
kind: Config
|
||
clusters:
|
||
- cluster:
|
||
certificate-authority-data: ${CA_DATA}
|
||
server: ${SERVER}
|
||
name: ${CLUSTER_NAME}
|
||
contexts:
|
||
- context:
|
||
cluster: ${CLUSTER_NAME}
|
||
user: ${CLUSTER_NAME}
|
||
name: ${CLUSTER_NAME}
|
||
current-context: ${CLUSTER_NAME}
|
||
users:
|
||
- name: ${CLUSTER_NAME}
|
||
user:
|
||
token: ${TOKEN}
|
||
EOF
|
||
</code></pre></li></ol><h3 id=启动-watching-集群-2-start-watching-cluster-2>启动 watching 集群 2{start-watching-cluster-2}</h3><ol><li><p>执行下面命令,添加并标记 Kubernetes <code>cluster2</code> 的 secret。
|
||
执行完这些命令,<code>cluster1</code> 中的 Istio Pilot 将开始 watching <code>cluster2</code> 的服务和实例,如同对待 <code>cluster1</code> 一样。</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl create --context=$CTX_CLUSTER1 secret generic n2-k8s-secret --from-file n2-k8s-config -n istio-system
|
||
$ kubectl label --context=$CTX_CLUSTER1 secret n2-k8s-secret istio/multiCluster=true -n istio-system
|
||
</code></pre></li><li><p>等待 <code>istio-ingressgateway</code> 就绪:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl get pods --context=$CTX_CLUSTER2 -n istio-system -l istio=ingressgateway
|
||
NAME READY STATUS RESTARTS AGE
|
||
istio-ingressgateway-5c667f4f84-bscff 1/1 Running 0 16m
|
||
</code></pre></li></ol><p>现在,<code>cluster1</code> 和 <code>cluster2</code> 均已安装完成,可以部署一个案例服务。</p><h2 id=deploy-example-service>部署案例服务</h2><p>如上图所示,部署两个 <code>helloworld</code> 服务,一个运行在 <code>cluster1</code> 中,另一个运行在 <code>cluster2</code> 中。
|
||
二者的区别是 <code>helloworld</code> 镜像的版本不同。</p><h3 id=deploy-helloworld-v2-in-cluster-2>在集群 2 中部署 helloworld v2</h3><ol><li><p>创建一个 <code>sample</code> 命名空间,用 label 标识开启 sidecar 自动注入:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl create --context=$CTX_CLUSTER2 ns sample
|
||
$ kubectl label --context=$CTX_CLUSTER2 namespace sample istio-injection=enabled
|
||
</code></pre></li><li><p>部署 <code>helloworld v2</code>:</p><div><a data-skipendnotes=true style=display:none href=https://raw.githubusercontent.com/istio/istio/release-1.5/samples/helloworld/helloworld.yaml>Zip</a><a data-skipendnotes=true style=display:none href=https://raw.githubusercontent.com/istio/istio/release-1.5/samples/helloworld/helloworld.yaml>Zip</a><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl create --context=$CTX_CLUSTER2 -f @samples/helloworld/helloworld.yaml@ -l app=helloworld -n sample
|
||
$ kubectl create --context=$CTX_CLUSTER2 -f @samples/helloworld/helloworld.yaml@ -l version=v2 -n sample
|
||
</code></pre></div></li><li><p>确认 <code>helloworld v2</code> 正在运行:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl get po --context=$CTX_CLUSTER2 -n sample
|
||
NAME READY STATUS RESTARTS AGE
|
||
helloworld-v2-7dd57c44c4-f56gq 2/2 Running 0 35s
|
||
</code></pre></li></ol><h3 id=deploy-helloworld-v1-in-cluster-1>在集群 1 中部署 helloworld v1</h3><ol><li><p>创建一个 <code>sample</code> 命名空间,用 label 标识开启 sidecar 自动注入:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl create --context=$CTX_CLUSTER1 ns sample
|
||
$ kubectl label --context=$CTX_CLUSTER1 namespace sample istio-injection=enabled
|
||
</code></pre></li><li><p>部署 <code>helloworld v1</code>:</p><div><a data-skipendnotes=true style=display:none href=https://raw.githubusercontent.com/istio/istio/release-1.5/samples/helloworld/helloworld.yaml>Zip</a><a data-skipendnotes=true style=display:none href=https://raw.githubusercontent.com/istio/istio/release-1.5/samples/helloworld/helloworld.yaml>Zip</a><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl create --context=$CTX_CLUSTER1 -f @samples/helloworld/helloworld.yaml@ -l app=helloworld -n sample
|
||
$ kubectl create --context=$CTX_CLUSTER1 -f @samples/helloworld/helloworld.yaml@ -l version=v1 -n sample
|
||
</code></pre></div></li><li><p>确认 <code>helloworld v1</code> 正在运行:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl get po --context=$CTX_CLUSTER1 -n sample
|
||
NAME READY STATUS RESTARTS AGE
|
||
helloworld-v1-d4557d97b-pv2hr 2/2 Running 0 40s
|
||
</code></pre></li></ol><h3 id=cross-cluster-routing-in-action>跨集群路由实践</h3><p>为了演示访问 <code>helloworld</code> 服务的流量如何跨两个集群进行分发,我们从网格内的另一个 <code>sleep</code> 服务请求 <code>helloworld</code> 服务。</p><ol><li><p>在两个集群中均部署 <code>sleep</code> 服务:</p><div><a data-skipendnotes=true style=display:none href=https://raw.githubusercontent.com/istio/istio/release-1.5/samples/sleep/sleep.yaml>Zip</a><a data-skipendnotes=true style=display:none href=https://raw.githubusercontent.com/istio/istio/release-1.5/samples/sleep/sleep.yaml>Zip</a><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl apply --context=$CTX_CLUSTER1 -f @samples/sleep/sleep.yaml@ -n sample
|
||
$ kubectl apply --context=$CTX_CLUSTER2 -f @samples/sleep/sleep.yaml@ -n sample
|
||
</code></pre></div></li><li><p>等待 <code>sleep</code> 服务启动:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl get po --context=$CTX_CLUSTER1 -n sample -l app=sleep
|
||
sleep-754684654f-n6bzf 2/2 Running 0 5s
|
||
</code></pre><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl get po --context=$CTX_CLUSTER2 -n sample -l app=sleep
|
||
sleep-754684654f-dzl9j 2/2 Running 0 5s
|
||
</code></pre></li><li><p>从 <code>cluster1</code> 请求 <code>helloworld.sample</code> 服务若干次:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl exec --context=$CTX_CLUSTER1 -it -n sample -c sleep $(kubectl get pod --context=$CTX_CLUSTER1 -n sample -l app=sleep -o jsonpath='{.items[0].metadata.name}') -- curl helloworld.sample:5000/hello
|
||
</code></pre></li><li><p>从 <code>cluster2</code> 请求 <code>helloworld.sample</code> 服务若干次:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl exec --context=$CTX_CLUSTER2 -it -n sample -c sleep $(kubectl get pod --context=$CTX_CLUSTER2 -n sample -l app=sleep -o jsonpath='{.items[0].metadata.name}') -- curl helloworld.sample:5000/hello
|
||
</code></pre></li></ol><p>如果设置正确,访问 <code>helloworld.sample</code> 的流量将在 <code>cluster1</code> 和 <code>cluster2</code> 之间分发,返回的响应结果或者为 <code>v1</code> 或者为 <code>v2</code>:</p><pre><code class=language-plain data-expandlinks=true data-repo=istio>Hello version: v2, instance: helloworld-v2-758dd55874-6x4t8
|
||
Hello version: v1, instance: helloworld-v1-86f77cd7bd-cpxhv
|
||
</code></pre><p>也可以通过打印 sleep 的 <code>istio-proxy</code> 容器日志,验证访问 endpoints 的 IP 地址。</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl logs --context=$CTX_CLUSTER1 -n sample $(kubectl get pod --context=$CTX_CLUSTER1 -n sample -l app=sleep -o jsonpath='{.items[0].metadata.name}') istio-proxy
|
||
[2018-11-25T12:37:52.077Z] "GET /hello HTTP/1.1" 200 - 0 60 190 189 "-" "curl/7.60.0" "6e096efe-f550-4dfa-8c8c-ba164baf4679" "helloworld.sample:5000" "192.23.120.32:15443" outbound|5000||helloworld.sample.svc.cluster.local - 10.20.194.146:5000 10.10.0.89:59496 -
|
||
[2018-11-25T12:38:06.745Z] "GET /hello HTTP/1.1" 200 - 0 60 171 170 "-" "curl/7.60.0" "6f93c9cc-d32a-4878-b56a-086a740045d2" "helloworld.sample:5000" "10.10.0.90:5000" outbound|5000||helloworld.sample.svc.cluster.local - 10.20.194.146:5000 10.10.0.89:59646 -
|
||
</code></pre><p>在 <code>cluster1</code> 中,当请求分发给 v2 时,<code>cluster2</code> 的网关 IP(<code>192.23.120.32:15443</code>)被记录,当请求分发给 v1 时,<code>cluster1</code> 的实例 IP(<code>10.10.0.90:5000</code>)被记录。</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ kubectl logs --context=$CTX_CLUSTER2 -n sample $(kubectl get pod --context=$CTX_CLUSTER2 -n sample -l app=sleep -o jsonpath='{.items[0].metadata.name}') istio-proxy
|
||
[2019-05-25T08:06:11.468Z] "GET /hello HTTP/1.1" 200 - "-" 0 60 177 176 "-" "curl/7.60.0" "58cfb92b-b217-4602-af67-7de8f63543d8" "helloworld.sample:5000" "192.168.1.246:15443" outbound|5000||helloworld.sample.svc.cluster.local - 10.107.117.235:5000 10.32.0.10:36840 -
|
||
[2019-05-25T08:06:12.834Z] "GET /hello HTTP/1.1" 200 - "-" 0 60 181 180 "-" "curl/7.60.0" "ce480b56-fafd-468b-9996-9fea5257cb1e" "helloworld.sample:5000" "10.32.0.9:5000" outbound|5000||helloworld.sample.svc.cluster.local - 10.107.117.235:5000 10.32.0.10:36886 -
|
||
</code></pre><p>在 <code>cluster2</code> 中,当请求分发给 v1 时,<code>cluster1</code> 的网关 IP (<code>192.168.1.246:15443</code>)被记录,当请求分发给 v2 时,<code>cluster2</code> 的网关 IP(<code>10.32.0.9:5000</code>)被记录。</p><h2 id=cleanup>清除</h2><p>执行如下命令清除示例服务<strong>以及</strong> Istio 组件。</p><p>清除集群 <code>cluster2</code>:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ istioctl manifest generate --context=$CTX_CLUSTER2 \
|
||
--set profile=remote \
|
||
--set values.global.mtls.enabled=true \
|
||
--set values.gateways.enabled=true \
|
||
--set values.security.selfSigned=false \
|
||
--set values.global.createRemoteSvcEndpoints=true \
|
||
--set values.global.remotePilotCreateSvcEndpoint=true \
|
||
--set values.global.remotePilotAddress=${LOCAL_GW_ADDR} \
|
||
--set values.global.remotePolicyAddress=${LOCAL_GW_ADDR} \
|
||
--set values.global.remoteTelemetryAddress=${LOCAL_GW_ADDR} \
|
||
--set values.gateways.istio-ingressgateway.env.ISTIO_META_NETWORK="network2" \
|
||
--set values.global.network="network2" \
|
||
--set autoInjection.enabled=true | kubectl --context=$CTX_CLUSTER2 delete -f -
|
||
$ kubectl delete --context=$CTX_CLUSTER2 ns sample
|
||
$ rm n2-k8s-config
|
||
$ unset CTX_CLUSTER2 CLUSTER_NAME SERVER SECRET_NAME CA_DATA TOKEN INGRESS_HOST SECURE_INGRESS_PORT INGRESS_PORT LOCAL_GW_ADDR
|
||
</code></pre><p>清除集群 <code>cluster1</code>:</p><pre><code class=language-bash data-expandlinks=true data-repo=istio>$ istioctl manifest generate --context=$CTX_CLUSTER1 \
|
||
-f install/kubernetes/operator/examples/multicluster/values-istio-multicluster-primary.yaml | kubectl --context=$CTX_CLUSTER1 delete -f -
|
||
$ kubectl delete --context=$CTX_CLUSTER1 ns sample
|
||
$ unset CTX_CLUSTER1
|
||
$ rm n2-k8s-config
|
||
</code></pre><nav id=see-also><h2>相关内容</h2><div class=see-also><div class=entry><p class=link><a data-skipendnotes=true href=/v1.5/zh/docs/setup/install/multicluster/shared-vpn/>共享控制平面(单一网络)</a></p><p class=desc>安装一个跨多个 Kubernetes 集群的 Istio 网格,多集群共享控制平面,并且集群间通过 VPN 互连。</p></div><div class=entry><p class=link><a data-skipendnotes=true href=/v1.5/zh/docs/setup/install/multicluster/gateways/>控制平面副本集</a></p><p class=desc>通过控制平面副本集实例,在多个 Kubernetes 集群上安装 Istio 网格。</p></div><div class=entry><p class=link><a data-skipendnotes=true href=/v1.5/zh/docs/setup/install/multicluster/simplified/>简化地多集群安装[实验性]</a></p><p class=desc>配置一个跨多个 Kubernetes 集群的 Istio 网格。</p></div><div class=entry><p class=link><a data-skipendnotes=true href=/v1.5/zh/blog/2020/multi-cluster-mesh-automation/>使用 Admiral 管理 Istio 多集群的配置和服务发现</a></p><p class=desc>为 Istio deployment(cluster)提供自动化 Istio 配置,并让其像单个网格一样工作。</p></div><div class=entry><p class=link><a data-skipendnotes=true href=/v1.5/zh/blog/2019/dns-cert/>DNS 证书管理</a></p><p class=desc>在 Istio 中配置和管理 DNS 证书。</p></div><div class=entry><p class=link><a data-skipendnotes=true href=/v1.5/zh/blog/2019/webhook/>安全管理 Webhook</a></p><p class=desc>一种更安全管理 Istio webhook 的方法。</p></div></div></nav></article><nav class=pagenav><div class=left><a title="安装一个跨多个 Kubernetes 集群的 Istio 网格,多集群共享控制平面,并且集群间通过 VPN 互连。" href=/v1.5/zh/docs/setup/install/multicluster/shared-vpn/><svg class="icon"><use xlink:href="/v1.5/img/icons.svg#left-arrow"/></svg>共享控制平面(单一网络)</a></div><div class=right></div></nav><div id=feedback><div id=feedback-initial>这些信息有用吗?<br><button class="btn feedback" onclick="sendFeedback('zh',1)">是的</button>
|
||
<button class="btn feedback" onclick="sendFeedback('zh',0)">没有</button></div><div id=feedback-comment>Do you have any suggestions for improvement?<br><br><input id=feedback-textbox type=text placeholder="Help us improve..." data-lang=zh></div><div id=feedback-thankyou>Thanks for your feedback!</div></div><div id=endnotes-container aria-hidden=true><h2>链接</h2><ol id=endnotes></ol></div></div><div class=toc-container><nav class=toc aria-label="Table of Contents"><div id=toc><ol><li role=none aria-label=前提条件><a href=#prerequisites>前提条件</a><li role=none aria-label=安装多集群网格><a href=#setup-the-multicluster-mesh>安装多集群网格</a><ol><li role=none aria-label="安装集群 1(主集群)"><a href=#setup-cluster-1-primary>安装集群 1(主集群)</a><li role=none aria-label="安装集群 2"><a href=#setup-cluster-2>安装集群 2</a><li role=none aria-label="启动 watching 集群 2{start-watching-cluster-2}"><a href=#%e5%90%af%e5%8a%a8-watching-%e9%9b%86%e7%be%a4-2-start-watching-cluster-2>启动 watching 集群 2{start-watching-cluster-2}</a></ol></li><li role=none aria-label=部署案例服务><a href=#deploy-example-service>部署案例服务</a><ol><li role=none aria-label="在集群 2 中部署 helloworld v2"><a href=#deploy-helloworld-v2-in-cluster-2>在集群 2 中部署 helloworld v2</a><li role=none aria-label="在集群 1 中部署 helloworld v1"><a href=#deploy-helloworld-v1-in-cluster-1>在集群 1 中部署 helloworld v1</a><li role=none aria-label=跨集群路由实践><a href=#cross-cluster-routing-in-action>跨集群路由实践</a></ol></li><li role=none aria-label=清除><a href=#cleanup>清除</a><li role=none aria-label=相关内容><a href=#see-also>相关内容</a></li></ol></div></nav></div></main><footer><div class=user-links><a class=channel title="立刻下载 Istio 1.5.4" href=/v1.5/docs/setup/getting-started/#download aria-label="Download Istio"><span>download</span><svg class="icon"><use xlink:href="/v1.5/img/icons.svg#download"/></svg>
|
||
</a><a class=channel title="加入 Istio discussion board 参与讨论获取帮助" href=https://discuss.istio.io aria-label="Istio discussion board"><span>discuss</span><svg class="icon"><use xlink:href="/v1.5/img/icons.svg#discourse"/></svg></a>
|
||
<a class=channel title="Stack Overflow 中列举了针对实际问题以及部署、配置和使用 Istio 的各项回答" href=https://stackoverflow.com/questions/tagged/istio aria-label="Stack Overflow"><span>stack overflow</span><svg class="icon"><use xlink:href="/v1.5/img/icons.svg#stackoverflow"/></svg></a>
|
||
<a class=channel title="在 Slack 上与 Istio 社区交互讨论开发问题(仅限邀请)" href=https://istio.slack.com aria-label=slack><span>slack</span><svg class="icon"><use xlink:href="/v1.5/img/icons.svg#slack"/></svg></a>
|
||
<a class=channel title="关注我们的 Twitter 来获取最新信息" href=https://twitter.com/IstioMesh aria-label=Twitter><span>twitter</span><svg class="icon"><use xlink:href="/v1.5/img/icons.svg#twitter"/></svg></a><div class=tag>对于用户</div></div><div class=info><p class=copyright>中文内容由 ServiceMesher 社区维护,部分文档可能稍微滞后于英文版本,同步工作持续进行中<br>Istio 归档
|
||
1.5.4<br>© 2020 Istio Authors, <a href=https://policies.google.com/privacy>隐私政策</a><br>归档于 2020年5月21日</p></div><div class=dev-links><a class=channel title="Istio 的代码在 GitHub 上开发" href=https://github.com/istio/community aria-label=GitHub><span>github</span><svg class="icon"><use xlink:href="/v1.5/img/icons.svg#github"/></svg></a>
|
||
<a class=channel title="如果您想深入了解 Istio 的技术细节,请查看我们日益完善的设计文档" href=https://groups.google.com/forum/#!forum/istio-team-drive-access aria-label="team drive"><span>drive</span><svg class="icon"><use xlink:href="/v1.5/img/icons.svg#drive"/></svg></a>
|
||
<a class=channel title="如果您想为 Istio 项目做出贡献,请考虑加入我们的工作组" href=https://github.com/istio/community/blob/master/WORKING-GROUPS.md aria-label="working groups"><span>working groups</span><svg class="icon"><use xlink:href="/v1.5/img/icons.svg#working-groups"/></svg></a><div class=tag>对于开发者</div></div></footer><div id=scroll-to-top-container aria-hidden=true><button id=scroll-to-top title=回到顶部><svg class="icon"><use xlink:href="/v1.5/img/icons.svg#top"/></svg></button></div></body></html> |