二 Istio:在Kubernetes(k8s)集群上安装部署istio1.14( 三 )

同样,你也可以传入一个 YAML 文件来验证它,然后再将它部署到集群 。例如:
[root@k8scloude1 ~]# getmesh config-validate my-resources.yaml4.5 管理多个 Istio CLI我们可以使用 show 命令来列出当前下载的 Istio 版本:
[root@k8scloude1 ~]# getmesh show1.14.4-tetrate-v0 (Active)如果电脑上没有我们想使用的版本,可以使用 getmesh list 命令来列出所有可信的 Istio 版本:
[root@k8scloude1 ~]# getmesh list ISTIO VERSIONFLAVORFLAVOR VERSIONK8S VERSIONS*1.9.5tetrate01.17,1.18,1.19,1.201.9.5istio01.17,1.18,1.19,1.201.9.4tetrate01.17,1.18,1.19,1.201.9.4istio01.17,1.18,1.19,1.201.9.0tetrate01.17,1.18,1.19,1.201.9.0tetratefips11.17,1.18,1.19,1.201.9.0istio01.17,1.18,1.19,1.201.8.6tetrate01.16,1.17,1.18,1.191.8.6istio01.16,1.17,1.18,1.191.8.5tetrate01.16,1.17,1.18,1.191.8.5istio01.16,1.17,1.18,1.191.8.3tetrate01.16,1.17,1.18,1.191.8.3tetratefips11.16,1.17,1.18,1.191.8.3istio01.16,1.17,1.18,1.191.7.8tetrate01.16,1.17,1.181.7.8istio01.16,1.17,1.18要获取一个特定的版本(比方说1.9.0 tetratefips),我们可以使用 fetch 命令:
[root@k8scloude1 ~]# getmesh fetch --version 1.9.0 --flavor tetratefips--flavor-version 1当上述命令完成后,GetMesh 将获取的 Istio CLI 版本设置为活跃版本 。例如,运行 show 命令现在显示 tetratefips 1.9.0 版本是活跃的:
[root@k8scloude1 ~]# getmesh show 1.9.0-tetratefips-v1 (Active) 1.9.5-tetrate-v0同样,如果我们运行 getmesh istioctl version,我们会发现正在使用的 Istio CLI 的版本:
[root@k8scloude1 ~]# getmesh istioctl version client version: 1.9.0-tetratefips-v1 control plane version: 1.9.5-tetrate-v0 data plane version: 1.9.5-tetrate-v0 (2 proxies)要切换到不同版本的 Istio CLI,我们可以运行 getmesh switch 命令:
[root@k8scloude1 ~]# getmeshswitch --version 1.9.5 --flavor tetrate --flavor-version 04.6 CA 集成我们没有使用自签的根证书,而是从 GCP CAS(证书授权服务)获得一个中间的 Istio 证书授权(CA)来签署工作负载证书 。
假设你已经配置了自己的 CAS 实例,可以用 CA 的参数创建一个 YAML 配置 。下面是 YAML 配置的一个例子:
providerName: "gcp" providerConfig:gcp:# 你在 GCP 上创建的证书授权的完整 CA 名称casCAName: "projects/tetrate-io-istio/locations/us-west1/certificateAuthorities/tetrate-example-io" certificateParameters:secretOptions:istioCANamespace: "istio-system" # cacerts secret 所在的命名空间overrideExistingCACertsSecret: true # 重写已存在的 cacerts secret,使用新的替换caOptions:validityDays: 365 # CA 到期前的有效天数keyLength: 2048 # 创建的 key 的比特数certSigningRequestParams: # x509.CertificateRequest;大部分字段省略subject:commonname: "tetrate.example.io"country:- "US"locality:- "Sunnyvale"organization:- "Istio"organizationunit:- "engineering"emailaddresses:- "youremail@example.io"配置完成后,你可以使用 gen-ca 命令来创建 cacert
[root@k8scloude1 ~]# getmesh gen-ca --config-file gcp-cas-config.yaml该命令在 istio-system 中创建 cacerts Kubernetes Secret 。为了让 istiod 接受新的 cert,你必须重新启动 istiod 。
如果你创建一个 sample 工作负载,并检查所使用的证书,你会发现是 CA 为工作负载发布的证书 。
Istio CA certs 集成可用于 GCP CA 服务和 AWS Private CA 服务 。
五.发现选择器(Discovery Selectors)发现选择器是 Istio 1.10 中引入的新功能之一 。发现选择器允许我们控制 Istio 控制平面观察和发送配置更新的命名空间 。
默认情况下,Istio 控制平面会观察和处理集群中所有 Kubernetes 资源的更新 。服务网格中的所有 Envoy代理的配置方式是,它们可以到达服务网格中的每个工作负载,并接受与工作负载相关的所有端口的流量 。

经验总结扩展阅读