第五章 用Helm部署Istio

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

      

    

  

  

猜你喜欢

转载自www.cnblogs.com/liufei1983/p/10348182.html