istio.io/archive/v1.10/zh/blog/2019/announcing-istio-client-go/index.html

62 lines
24 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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="Istio client-go 发布公告"><meta name=description content="正式启用访问 Istio 资源。"><meta name=author content="Neeraj Poddar (Aspen Mesh)"><meta name=keywords content="microservices,services,mesh,client-go,tools,crd"><meta property="og:title" content="Istio client-go 发布公告"><meta property="og:type" content="website"><meta property="og:description" content="正式启用访问 Istio 资源。"><meta property="og:url" content="/v1.10/zh/blog/2019/announcing-istio-client-go/"><meta property="og:image" content="https://raw.githubusercontent.com/istio/istio.io/master/static/img/istio-whitelogo-bluebackground-framed.svg"><meta property="og:image:alt" content="Istio Logo"><meta property="og:image:width" content="1024"><meta property="og:image:height" content="1024"><meta property="og:site_name" content="Istio"><meta name=twitter:card content="summary"><meta name=twitter:site content="@IstioMesh"><title>Istioldie 1.10 / Istio client-go 发布公告</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.10/blog/feed.xml><link rel=alternate type=application/rss+xml title="Istio News" href=/v1.10/news/feed.xml><link rel=alternate type=application/rss+xml title="Istio Blog and News" href=/v1.10/feed.xml><link rel="shortcut icon" href=/v1.10/favicons/favicon.ico><link rel=apple-touch-icon href=/v1.10/favicons/apple-touch-icon-180x180.png sizes=180x180><link rel=icon type=image/png href=/v1.10/favicons/favicon-16x16.png sizes=16x16><link rel=icon type=image/png href=/v1.10/favicons/favicon-32x32.png sizes=32x32><link rel=icon type=image/png href=/v1.10/favicons/android-36x36.png sizes=36x36><link rel=icon type=image/png href=/v1.10/favicons/android-48x48.png sizes=48x48><link rel=icon type=image/png href=/v1.10/favicons/android-72x72.png sizes=72x72><link rel=icon type=image/png href=/v1.10/favicons/android-96x96.png sizes=96xW96><link rel=icon type=image/png href=/v1.10/favicons/android-144x144.png sizes=144x144><link rel=icon type=image/png href=/v1.10/favicons/android-192x192.png sizes=192x192><link rel=manifest href=/v1.10/manifest.json><meta name=apple-mobile-web-app-title content="Istio"><meta name=application-name content="Istio"><link rel=stylesheet href=/v1.10/css/all.css><link rel=preconnect href=https://fonts.gstatic.com><link rel=stylesheet href="https://fonts.googleapis.com/css2?family=Barlow:ital,wght@0,400;0,500;0,600;0,700;1,600&display=swap"><script src=/v1.10/js/themes_init.min.js></script></head><body class="language-unknown archive-site"><script>const branchName="release-1.10";const docTitle="Istio client-go 发布公告";const iconFile="\/v1.10/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.10/js/all.min.js data-manual defer></script><header class=main-navigation><nav class="main-navigation-wrapper container-l"><div class=main-navigation-header><a id=brand href=/v1.10/zh/><span class=logo><svg xmlns="http://www.w3.org/2000/svg" width="128" height="60" viewBox="0 0 128 60"><path d="M58.434 48.823A.441.441.0 0158.3 48.497V22.583a.444.444.0 01.134-.326.446.446.0 01.327-.134h3.527a.447.447.0 01.325.134.447.447.0 01.134.326v25.914a.443.443.0 01-.134.326.444.444.0 01-.325.134h-3.527a.444.444.0 01-.327-.134z"/><path d="m70.969 48.477a6.556 6.556.0 01-2.818-1.955 4.338 4.338.0 01-1-2.78v-.345a.443.443.0 01.134-.326.444.444.0 01.326-.135h3.374a.444.444.0 01.326.135.445.445.0 01.134.326v.077a2.014 2.014.0 001.054 1.667 4.672 4.672.0 002.664.709 4.446 4.446.0 002.492-.633 1.862 1.862.0 00.958-1.591 1.426 1.426.0 00-.786-1.322 12.7 12.7.0 00-2.549-.939l-1.457-.46a21.526 21.526.0 01-3.3-1.227 6.57 6.57.0 01-2.262-1.783 4.435 4.435.0 01-.92-2.894 5.081 5.081.0 012.109-4.275 8.993 8.993.0 015.558-1.591 10.445 10.445.0 014.1.748 6.3 6.3.0 012.722 2.07 5 5 0 01.958 3.009.441.441.0 01-.134.326.441.441.0 01-.325.134h-3.258a.441.441.0 01-.326-.134.443.443.0 01-.134-.326 1.974 1.974.0 00-.978-1.667 4.647 4.647.0 00-2.665-.671 4.741 4.741.0 00-2.435.556 1.724 1.724.0 00-.938 1.553 1.512 1.512.0 00.9 1.4 15.875 15.875.0 003.01 1.055l.843.229a27.368 27.368.0 013.412 1.246 6.67 6.67.0 012.338 1.763 4.387 4.387.0 01.958 2.933 4.988 4.988.0 01-2.146 4.275 9.543 9.543.0 01-5.712 1.552 11.626 11.626.0 01-4.227-.709z"/><path d="m97.039 32.837a.443.443.0 01-.326.135h-3.911a.169.169.0 00-.191.192v9.239a2.951 2.951.0 00.632 2.108 2.7 2.7.0 002.013.652h1.15a.444.444.0 01.325.134.441.441.0 01.134.326v2.875a.471.471.0 01-.459.5l-1.994.039a8 8 0 01-4.524-1.035q-1.495-1.035-1.533-3.91V33.166A.17.17.0 0088.164 32.974H85.978A.441.441.0 0185.652 32.839.441.441.0 0185.518 32.513V29.83a.441.441.0 01.134-.326.444.444.0 01.326-.135h2.186a.169.169.0 00.191-.192v-4.485a.438.438.0 01.134-.326.44.44.0 01.325-.134h3.336a.443.443.0 01.325.134.442.442.0 01.135.326v4.485a.169.169.0 00.191.192h3.911a.446.446.0 01.326.135.446.446.0 01.134.326v2.683a.446.446.0 01-.133.324z"/><path d="m101.694 25.917a2.645 2.645.0 01-.767-1.955 2.65 2.65.0 01.767-1.955 2.65 2.65.0 011.955-.767 2.65 2.65.0 011.955.767 2.652 2.652.0 01.767 1.955 2.647 2.647.0 01-.767 1.955 2.646 2.646.0 01-1.955.767 2.645 2.645.0 01-1.955-.767zm-.211 22.906a.441.441.0 01-.134-.326V29.79a.444.444.0 01.134-.326.446.446.0 01.326-.134h3.527a.446.446.0 01.326.134.445.445.0 01.134.326v18.707a.443.443.0 01-.134.326.443.443.0 01-.326.134h-3.527a.443.443.0 01-.326-.134z"/><path d="m114.019 47.734a8.1 8.1.0 01-3.047-4.255 14.439 14.439.0 01-.652-4.37 14.3 14.3.0 01.614-4.371 7.869 7.869.0 013.066-4.178 9.072 9.072.0 015.252-1.5 8.543 8.543.0 015.041 1.5 7.985 7.985.0 013.009 4.14 12.439 12.439.0 01.69 4.37 13.793 13.793.0 01-.651 4.37 8.255 8.255.0 01-3.028 4.275 8.475 8.475.0 01-5.1 1.553 8.754 8.754.0 01-5.194-1.534zm7.629-3.1a4.536 4.536.0 001.476-2.262 11.335 11.335.0 00.383-3.221 10.618 10.618.0 00-.383-3.22 4.169 4.169.0 00-1.457-2.243 4.066 4.066.0 00-2.531-.785 3.942 3.942.0 00-2.453.785 4.376 4.376.0 00-1.5 2.243 11.839 11.839.0 00-.383 3.22 11.84 11.84.0 00.383 3.221 4.222 4.222.0 001.476 2.262 4.075 4.075.0 002.549.8 3.8 3.8.0 002.44-.809z"/><path d="m15.105 32.057v15.565a.059.059.0 01-.049.059L.069 50.25A.06.06.0 01.005 50.167l14.987-33.47a.06.06.0 01.114.025z"/><path d="m17.631 23.087v24.6a.06.06.0 00.053.059l22.449 2.507a.06.06.0 00.061-.084L17.745.032a.06.06.0 00-.114.024z"/><path d="m39.961 52.548-24.833 7.45a.062.062.0 01-.043.0L.079 52.548a.059.059.0 01.026-.113h39.839a.06.06.0 01.017.113z"/></svg></span></a><button id=hamburger class=main-navigation-toggle aria-label="Open navigation"><svg class="icon menu-hamburger"><use xlink:href="/v1.10/img/icons.svg#menu-hamburger"/></svg></button>
<button id=menu-close class=main-navigation-toggle aria-label="Close navigation"><svg class="icon menu-close"><use xlink:href="/v1.10/img/icons.svg#menu-close"/></svg></button></div><div id=header-links class=main-navigation-links-wrapper><ul class=main-navigation-links><li class=main-navigation-links-item><a class="main-navigation-links-link has-dropdown"><span>关于</span><svg class="icon dropdown-arrow"><use xlink:href="/v1.10/img/icons.svg#dropdown-arrow"/></svg></a><ul class=main-navigation-links-dropdown><li class=main-navigation-links-dropdown-item><a href=/v1.10/zh/about/service-mesh class=main-navigation-links-link>服务网格</a></li><li class=main-navigation-links-dropdown-item><a href=/v1.10/zh/about/solutions class=main-navigation-links-link>解决方案</a></li><li class=main-navigation-links-dropdown-item><a href=/v1.10/zh/about/case-studies class=main-navigation-links-link>案例学习</a></li><li class=main-navigation-links-dropdown-item><a href=/v1.10/zh/about/ecosystem class=main-navigation-links-link>生态系统</a></li><li class=main-navigation-links-dropdown-item><a href=/v1.10/zh/about/deployment class=main-navigation-links-link>部署</a></li><li class=main-navigation-links-dropdown-item><a href=/v1.10/zh/about/faq class=main-navigation-links-link>FAQ</a></li></ul></li><li class=main-navigation-links-item><a href=/v1.10/zh/blog/ class=main-navigation-links-link><span>博客</span></a></li><li class=main-navigation-links-item><a href=/v1.10/zh/news/ class=main-navigation-links-link><span>新闻</span></a></li><li class=main-navigation-links-item><a href=/v1.10/zh/get-involved/ class=main-navigation-links-link><span>加入我们</span></a></li><li class=main-navigation-links-item><a href=/v1.10/zh/docs/ class=main-navigation-links-link><span>文档</span></a></li></ul><div class=main-navigation-footer><button id=search-show class=search-show title="搜索 istio.io" aria-label=搜索><svg class="icon magnifier"><use xlink:href="/v1.10/img/icons.svg#magnifier"/></svg></button>
<a href=/v1.10/zh/docs/setup/getting-started class="btn btn--primary" id=try-istio>试用 Istio</a></div></div><form id=search-form class=search 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=zh>
<input type=hidden id=search-page-url value=/zh/search>
<input id=search-textbox class="search-textbox form-control" name=q type=search aria-label="搜索 istio.io" placeholder=搜索>
<button id=search-close title=取消搜索 type=reset aria-label=取消搜索><svg class="icon menu-close"><use xlink:href="/v1.10/img/icons.svg#menu-close"/></svg></button></form></nav></header><div class=banner-container></div><article class=post itemscope itemtype=http://schema.org/BlogPosting><div class=header-content><h1>Istio client-go 发布公告</h1><p>正式启用访问 Istio 资源。</p></div><p class=post-author>Nov 14, 2019 <span>|</span> By Neeraj Poddar - Aspen Mesh</p><div><p>我们很高兴地宣布 <a href=https://github.com/istio/client-go>Istio client go</a> 的第一个版本发布了,该存储库使开发人员能够在 <code>Kubernetes</code> 环境中访问 <code>Istio API</code> 。在此存储库中的 <code>Kubernetes</code> 程序和客户端使开发人员可以轻松地为所有 <code>Istio</code> 客户端自定义的资源 <code>(CRDs)</code> 创建,读取,更新和删除 <code>(CRUD)</code></p><p>这是许多 Istio 用户强烈要求的功能,从 <a href=https://github.com/aspenmesh/istio-client-go>Aspen Mesh</a>
<a href=https://github.com/knative/pkg>Knative project</a> 项目对客户端产生的功能请求中可以明显地看出这一点。如果您正在使用上述客户端之一,则可以像如下这样轻松地切换到 <a href=https://github.com/istio/client-go>Istio client go</a></p><pre><code class=language-go data-expandlinks=true data-repo=istio>import (
...
- versionedclient &#34;github.com/aspenmesh/istio-client-go/pkg/client/clientset/versioned&#34;
+ versionedclient &#34;istio.io/client-go/pkg/clientset/versioned&#34;
)
</code></pre><p>由于生成的客户端在功能上是等效的,因此使用新的 <code>istio-client-go</code> 也不会有什么问题。</p><h2 id=how-to-use-client-go>如何使用客户端</h2><p><a href=https://github.com/istio/client-go>Istio client go</a> 存储库遵循与 <a href=https://github.com/istio/api>Istio API</a> 存储库 相同的分支策略,因为客户端存储库取决于 <code>API</code> 定义。如果要使用稳定的客户端,则可以在 <a href=https://github.com/istio/client-go>client go</a> 存储库中使用发行版分支或标记的版本。使用客户端与使用 <a href=https://github.com/kubernetes/client-go>Kubernetes client go</a> 非常相似,这是一个使用客户端列出命名空间中所有 <a href=/v1.10/zh/docs/reference/config/networking/virtual-service>Istio
virtual services</a> 的简单示例:</p><pre><code class=language-go data-expandlinks=true data-repo=istio>package main
import (
&#34;log&#34;
&#34;os&#34;
metav1 &#34;k8s.io/apimachinery/pkg/apis/meta/v1&#34;
&#34;k8s.io/client-go/tools/clientcmd&#34;
versionedclient &#34;istio.io/client-go/pkg/clientset/versioned&#34;
)
func main() {
kubeconfig := os.Getenv(&#34;KUBECONFIG&#34;)
namespace := os.Getenv(&#34;NAMESPACE&#34;)
if len(kubeconfig) == 0 || len(namespace) == 0 {
log.Fatalf(&#34;Environment variables KUBECONFIG and NAMESPACE need to be set&#34;)
}
restConfig, err := clientcmd.BuildConfigFromFlags(&#34;&#34;, kubeconfig)
if err != nil {
log.Fatalf(&#34;Failed to create k8s rest client: %s&#34;, err)
}
ic, err := versionedclient.NewForConfig(restConfig)
if err != nil {
log.Fatalf(&#34;Failed to create istio client: %s&#34;, err)
}
// Print all VirtualServices
vsList, err := ic.NetworkingV1alpha3().VirtualServices(namespace).List(metav1.ListOptions{})
if err != nil {
log.Fatalf(&#34;Failed to get VirtualService in %s namespace: %s&#34;, namespace, err)
}
for i := range vsList.Items {
vs := vsList.Items[i]
log.Printf(&#34;Index: %d VirtualService Hosts: %+v\n&#34;, i, vs.Spec.GetHosts())
}
}
</code></pre><p>您可以在<a href=https://github.com/istio/client-go/blob/release-1.10/cmd/example/client.go>这里</a>找到更详尽的示例。</p><h2 id=useful-tools-created-for-generating-Istio-client-go>为生成 Istio client go 而创建的工具</h2><p>如果您想知道为什么花费大量时间也很难生成此客户端,本小节将对此进行说明。在 <code>Istio</code> 中,我们使用 <a href=https://developers.google.com/protocol-buffers>protobuf</a> 规范编写 <code>API</code>,然后使用 <code>protobuf</code> 工具链将其转换为 <code>Go</code> 定义。如果尝试从 <code>protobuf</code><code>API</code> 生成 <code>Kubernetes</code> 客户端,可能会面临三个主要的挑战:</p><ul><li><p><strong>创建 Kubernetes 装饰器类型</strong> - Kubernetes <a href=https://github.com/kubernetes/code-generator/tree/master/cmd/client-gen>客户端生成库</a>
仅适用于遵循 <code>Kubernetes</code> 对象规范的 <code>Go</code> 对象,例如:<a href=https://github.com/istio/client-go/blob/release-1.10/pkg/apis/authentication/v1alpha1/types.gen.go>Authentication Policy Kubernetes Wrappers</a>。这意味着对于需要程序访问的每个 API您都需要创建这些装饰器。此外每个 <code>CRD</code> 组,版本和种类都需要大量的样板,需要用客户端代码生成。为了自动化该过程,我们创建了一个 <a href=https://github.com/istio/tools/tree/master/cmd/kubetype-gen>Kubernetes type
generator</a> 工具,可以基于注释去自动创建 <code>Kubernetes</code>类型。该工具的注释和各种可用选项在 <a href=https://github.com/istio/tools/blob/master/cmd/kubetype-gen/README.md>README</a> 中进行了说明。请注意,如果您使用 <code>protobuf</code> 工具生成 <code>Go</code> 类型,则需要将这些注释添加到 <code>proto</code> 文件中,以便注释出现在生成的 <code>Go</code> 文件中,然后供该工具使用。</p></li><li><p><strong>生成 deep copy 方法</strong> - 在 <code>Kubernetes</code> 客户端机制中,如果您想对从客户端集返回的任何对象进行修改,则需要创建该对象的副本以防止直接修改缓存中的对象。为了不直接修改缓存中的对象,我们一般是在所有嵌套类型上创建一个 <code>deep copy</code> 方法。我们开发了一个 <a href=https://github.com/istio/tools/tree/master/cmd/protoc-gen-deepcopy>protoc deep copy
generator</a> 工具 ,该工具是一个 <code>protoc</code> 插件,可以使用 <a href=https://godoc.org/github.com/golang/protobuf/proto#Clone>Proto
Clone</a> 库上的注释自动创建 <code>deepcopy</code> 方法。这是一个生成了 <code>deepcopy</code> 方法的<a href=https://github.com/istio/api/blob/release-1.10/authentication/v1alpha1/policy_deepcopy.gen.go>示例</a></p></li><li><p><strong>类型和 JSON 的互相转换</strong> - 对于从 <code>proto</code> 定义生成的类型,使用默认的 <code>Go JSON</code> 编码器或解码器通常会出现问题,因为像 <code>protobuf</code><code>oneof</code> 这类字段需要进行特殊处理。另外,名称中带有下划线的任何 <code>Proto</code> 字段都可以序列化或反序列化为不同的字段名称,具体取决于编码器/解码器,因为 <code>Go</code> 结构体的标记方式<a href=https://github.com/istio/istio/issues/17600>不同</a>。始终建议使用 <code>protobuf</code> 原语对 <code>JSON</code> 进行序列化或反序列化,而不是依赖默认的 <code>Go</code> 库。我们创建了一个 <a href=https://github.com/istio/tools/tree/master/cmd/protoc-gen-jsonshim>protoc JSON shim</a> 工具,它是一个 <code>protoc</code> 插件,可以为从 <code>Proto</code> 定义所有 <code>Go</code> 类型自动创建的 <code>Marshalers</code><code>Unmarshalers</code>。这是用此工具生成代码的一个<a href=https://github.com/istio/api/blob/release-1.10/authentication/v1alpha1/policy_json.gen.go>示例</a></p></li></ul><p>我们希望新发布的客户端使用户能够为 <code>Istio API</code> 创建更多的 <code>integrations</code><code>controllers</code>,并且开发人员可以使用上述工具从 <code>Proto API</code> 生成 <code>Kubernetes</code> 客户端。</p></div><nav class=pagenav><div class=left><a title="在 Istio 中配置和管理 DNS 证书。" href=/v1.10/zh/blog/2019/dns-cert/ class=next-link><svg class="icon left-arrow"><use xlink:href="/v1.10/img/icons.svg#left-arrow"/></svg>DNS 证书管理</a></div><div class=right><a title="关于 Istio 基于 operator 的安装和控制平面管理特性的介绍。" href=/v1.10/zh/blog/2019/introducing-istio-operator/ class=next-link>Istio Operator 简介<svg class="icon right-arrow"><use xlink:href="/v1.10/img/icons.svg#right-arrow"/></svg></a></div></nav></article><footer class=footer><div class="footer-wrapper container-l"><div class="user-links footer-links"><a class=channel title="Istio 的代码在 GitHub 上开发" href=https://github.com/istio/community aria-label=GitHub><svg class="icon github"><use xlink:href="/v1.10/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"><svg class="icon drive"><use xlink:href="/v1.10/img/icons.svg#drive"/></svg></a><a class=channel title="在 Slack 上与 Istio 社区交互讨论开发问题(仅限邀请)" href=https://slack.istio.io aria-label=slack><svg class="icon slack"><use xlink:href="/v1.10/img/icons.svg#slack"/></svg></a><a class=channel title="Stack Overflow 中列举了针对实际问题以及部署、配置和使用 Istio 的各项回答" href=https://stackoverflow.com/questions/tagged/istio aria-label="Stack Overflow"><svg class="icon stackoverflow"><use xlink:href="/v1.10/img/icons.svg#stackoverflow"/></svg></a><a class=channel title="关注我们的 Twitter 来获取最新信息" href=https://twitter.com/IstioMesh aria-label=Twitter><svg class="icon twitter"><use xlink:href="/v1.10/img/icons.svg#twitter"/></svg></a></div><hr class=footer-separator role=separator><div class="info footer-info"><a class=logo href=/v1.10/zh/><svg xmlns="http://www.w3.org/2000/svg" width="128" height="60" viewBox="0 0 128 60"><path d="M58.434 48.823A.441.441.0 0158.3 48.497V22.583a.444.444.0 01.134-.326.446.446.0 01.327-.134h3.527a.447.447.0 01.325.134.447.447.0 01.134.326v25.914a.443.443.0 01-.134.326.444.444.0 01-.325.134h-3.527a.444.444.0 01-.327-.134z"/><path d="m70.969 48.477a6.556 6.556.0 01-2.818-1.955 4.338 4.338.0 01-1-2.78v-.345a.443.443.0 01.134-.326.444.444.0 01.326-.135h3.374a.444.444.0 01.326.135.445.445.0 01.134.326v.077a2.014 2.014.0 001.054 1.667 4.672 4.672.0 002.664.709 4.446 4.446.0 002.492-.633 1.862 1.862.0 00.958-1.591 1.426 1.426.0 00-.786-1.322 12.7 12.7.0 00-2.549-.939l-1.457-.46a21.526 21.526.0 01-3.3-1.227 6.57 6.57.0 01-2.262-1.783 4.435 4.435.0 01-.92-2.894 5.081 5.081.0 012.109-4.275 8.993 8.993.0 015.558-1.591 10.445 10.445.0 014.1.748 6.3 6.3.0 012.722 2.07 5 5 0 01.958 3.009.441.441.0 01-.134.326.441.441.0 01-.325.134h-3.258a.441.441.0 01-.326-.134.443.443.0 01-.134-.326 1.974 1.974.0 00-.978-1.667 4.647 4.647.0 00-2.665-.671 4.741 4.741.0 00-2.435.556 1.724 1.724.0 00-.938 1.553 1.512 1.512.0 00.9 1.4 15.875 15.875.0 003.01 1.055l.843.229a27.368 27.368.0 013.412 1.246 6.67 6.67.0 012.338 1.763 4.387 4.387.0 01.958 2.933 4.988 4.988.0 01-2.146 4.275 9.543 9.543.0 01-5.712 1.552 11.626 11.626.0 01-4.227-.709z"/><path d="m97.039 32.837a.443.443.0 01-.326.135h-3.911a.169.169.0 00-.191.192v9.239a2.951 2.951.0 00.632 2.108 2.7 2.7.0 002.013.652h1.15a.444.444.0 01.325.134.441.441.0 01.134.326v2.875a.471.471.0 01-.459.5l-1.994.039a8 8 0 01-4.524-1.035q-1.495-1.035-1.533-3.91V33.166A.17.17.0 0088.164 32.974H85.978A.441.441.0 0185.652 32.839.441.441.0 0185.518 32.513V29.83a.441.441.0 01.134-.326.444.444.0 01.326-.135h2.186a.169.169.0 00.191-.192v-4.485a.438.438.0 01.134-.326.44.44.0 01.325-.134h3.336a.443.443.0 01.325.134.442.442.0 01.135.326v4.485a.169.169.0 00.191.192h3.911a.446.446.0 01.326.135.446.446.0 01.134.326v2.683a.446.446.0 01-.133.324z"/><path d="m101.694 25.917a2.645 2.645.0 01-.767-1.955 2.65 2.65.0 01.767-1.955 2.65 2.65.0 011.955-.767 2.65 2.65.0 011.955.767 2.652 2.652.0 01.767 1.955 2.647 2.647.0 01-.767 1.955 2.646 2.646.0 01-1.955.767 2.645 2.645.0 01-1.955-.767zm-.211 22.906a.441.441.0 01-.134-.326V29.79a.444.444.0 01.134-.326.446.446.0 01.326-.134h3.527a.446.446.0 01.326.134.445.445.0 01.134.326v18.707a.443.443.0 01-.134.326.443.443.0 01-.326.134h-3.527a.443.443.0 01-.326-.134z"/><path d="m114.019 47.734a8.1 8.1.0 01-3.047-4.255 14.439 14.439.0 01-.652-4.37 14.3 14.3.0 01.614-4.371 7.869 7.869.0 013.066-4.178 9.072 9.072.0 015.252-1.5 8.543 8.543.0 015.041 1.5 7.985 7.985.0 013.009 4.14 12.439 12.439.0 01.69 4.37 13.793 13.793.0 01-.651 4.37 8.255 8.255.0 01-3.028 4.275 8.475 8.475.0 01-5.1 1.553 8.754 8.754.0 01-5.194-1.534zm7.629-3.1a4.536 4.536.0 001.476-2.262 11.335 11.335.0 00.383-3.221 10.618 10.618.0 00-.383-3.22 4.169 4.169.0 00-1.457-2.243 4.066 4.066.0 00-2.531-.785 3.942 3.942.0 00-2.453.785 4.376 4.376.0 00-1.5 2.243 11.839 11.839.0 00-.383 3.22 11.84 11.84.0 00.383 3.221 4.222 4.222.0 001.476 2.262 4.075 4.075.0 002.549.8 3.8 3.8.0 002.44-.809z"/><path d="m15.105 32.057v15.565a.059.059.0 01-.049.059L.069 50.25A.06.06.0 01.005 50.167l14.987-33.47a.06.06.0 01.114.025z"/><path d="m17.631 23.087v24.6a.06.06.0 00.053.059l22.449 2.507a.06.06.0 00.061-.084L17.745.032a.06.06.0 00-.114.024z"/><path d="m39.961 52.548-24.833 7.45a.062.062.0 01-.043.0L.079 52.548a.059.059.0 01.026-.113h39.839a.06.06.0 01.017.113z"/></svg></a><div class=footer-languages><a tabindex=-1 role=menuitem lang=en id=switch-lang-en class=footer-languages-item>English</a>
<a tabindex=-1 role=menuitem lang=zh id=switch-lang-zh class="footer-languages-item active"><svg class="icon tick"><use xlink:href="/v1.10/img/icons.svg#tick"/></svg>中文</a></div></div><ul class=footer-policies><li class=footer-policies-item><a class=footer-policies-link href=https://policies.google.com/privacy>隐私政策</a> |
<a class=footer-policies-link href=https://github.com/istio/istio.io/edit/release-1.10/content/zh/blog/2019/announcing-istio-client-go/index.md>在 GitHub 上编辑此页</a></li></ul><div class=footer-base><span class=footer-base-copyright>&copy; 2021 Istio Authors.</span>
<span class=footer-base-version>部分内容可能滞后于英文版本,同步工作正在进行中<br>Version
Istio 归档
1.10.3</span><ul class=footer-base-releases><li class=footer-base-releases-item><a tabindex=-1 class=footer-base-releases-link role=menuitem onclick="navigateToUrlOrRoot('https://istio.io/blog\/2019\/announcing-istio-client-go\/');return false;">当前版本</a></li><li class=footer-base-releases-item><a tabindex=-1 class=footer-base-releases-link role=menuitem onclick="navigateToUrlOrRoot('https://preliminary.istio.io/blog\/2019\/announcing-istio-client-go\/');return false;">下个版本</a></li><li class=footer-base-releases-item><a tabindex=-1 class=footer-base-releases-link role=menuitem href=https://istio.io/archive>旧版本</a></li></ul></div></div></footer><div id=scroll-to-top-container aria-hidden=true><button id=scroll-to-top title=回到顶部><svg class="icon top"><use xlink:href="/v1.10/img/icons.svg#top"/></svg></button></div></body></html>