5.1 Istio Chart概述
Helm是目前Istio官方推荐的安装方式。还可以对输入值进行一些调整,完成对Istio的部分配置工作。Istio Chart是一个总分结构,其分级结构和设计结构是一致的。
5.1.1 Chart.yaml
包含版本号、名称、关键字等元数据信息。
5.1.2 values-*.yaml
提供Istio在各种场景下关键字配置范本,可以作为Helm的输入文件,来对Istio进行典型定制。对Istio的定制可以从对这些输入文件的改写开始,改写完后使用
helm template 命令生成最终的部署文件,这样就能用kubectl完成部署了。多个values-*.yaml文件,其中values.yaml罗列了大多数常用变量,也是我们做定制的基础。
5.1.3 requirements.yaml
用于管理对子chart的依赖关系,定义了一系列开关变量。比如控制grafana是否安装,以及安装版本。
5.1.4 templates/_affinity.tpl
该文件会生成一组节点亲和或互斥元素,供各个组件在渲染YAML时使用。在该文件里使用了一系列变量,用于控制Istio组件的节点亲和性(也就是限制Istio在部署时对节点的选择)。
5.1.5 templates/sidecar-inject-configmap.yaml
保存的配置数据被用于进行SicerCar注入。istioctl完成的手工注入,或者Istio的自动注入,都会引用这个Configmap。如果希望修改Istio的Sidecar的注入过程及其行为,就可以从该文件或者对应的CongfigMap入手了。
5.1.6 templates/configmap.yaml
该文件也会生成一个Configmap, 名称为istio, 这个对象用于为Pilot提供启动配置参数。
5.1.7 templates/crds.yaml
该文件包含了Istio所需的CRD定义。
5.1.8 charts
这个目录中的子目录就是istio的组件,如下所述:
certmanager: 证书客户端,用于自动进行证书的申请、获取以及分发。
galley: Istio利用Galley进行配置管理工作。
gateways: 对Gateways Chart进行配置。
grafana: 图形化的Istio Dashboard
ingress: 建议弃用。
kiali: 带有分布式跟踪、配置校验等多项功能的Dashboard.
mixer: Istio的策略实施组件。
pilot: Istio的流量管理组件。
prometheus: 监控软件
security: 证书的自动管理
servicegraph: 分布式跟踪组件。
siecarInjectorWebhook: 自动注入Webhook的相关配置。
tracing: 分布式跟踪组件。
5.2 全局变量介绍
使用chart的时候,通常不会修改chart的主体,仅通过对变量的控制来实现对部署过程的定制。Istio Helm Chart提供了大量的变量来帮助用户对Istio的安装进行定制。
Istio Chart分为父子两级,因此变量也有全局和本地两级。全局变量使用保留字global进行定义,子chart可以通过values.global的方式引用全局变量,而在主Chart中也可以用chart.va的方式为子chart指定变量值。
5.2.1 hub和tag
多数情况,这两个变量代表所有镜像的地址。
这两个变量对于内网部署非常有必要,将Istio的镜像拉取回来,并推送到私库后,只要在values.yaml中进行修改,就可以将Istio所需镜像的引用指向内网私库,省去了逐个修改Deployment文档的麻烦。
5.2.2 ingress.enabled
开关,是否启用Istio的Ingress Controller, istio不推荐ingress, 而是推荐Ingress Gateway。
有两个变量会受到这个开关的影响:
k8sIngressSelector : 利用Pod标签选择一个Gateway作为Ingress Controller。
k8sIngressHttps: 如果为True, 就在istio-autogenerated-k8s-ingress这个Gateway定义中加入443端口及其TLS配置。
5.2.3 Proxy先关参数
在values.yaml中定义了一组proxy变量,用于对Sidecar进行控制。
1. proxy.resources
为Sidecar分配资源。CPU和内存等。
2. proxy.concurrency
Proxy worker的线程数量。如果被设置为0(默认值),则根据CPU线程或核的数量进行分配。
3. proxy.accessLogFile
sidecar的访问日志位置。如果设置为空字符串,则关闭访问日志功能。默认是/dev/stdout
4. proxy.privileged
istio-init、istio-proxy的特权模式开关。默认false
5. proxy.enableCoreDump
如果打开,则新注入的Sidecar会启动CoreDump功能,在Pod中加入初始化容器enable-core-dump。 默认是false。
6. proxy.includelPRanges
劫持IP范围的白名单。默认是“*”,也就是劫持所有地址的流量。
7. proxy.excludelPRanges
劫持IP范围的黑名单。默认是空字符串.
8. proxyincludelnboundPorts:
入站流量的端口劫持白名单。
9.proxy.excludeInboundPorts
入站流量的端口劫持黑名单。
10. proxy.autoInject
控制是否自动完成Sidecar的注入工作。
11. proxy.envoyStared
该变量的默认值是:
enabled: true
host: istio-statsd-prom-bridge
port: 9125
12. proxy