Istio Helm Chart 詳解 —— 概述

Helm 是目前 Istio 官方推薦的安裝方式,除去安裝以外,還能夠利用對輸入值的一些調整,完成對 Istio 的部分配置工做。官方提供了 Istio 的 Helm 部署方式,側重於快速啓動,而這一組文章將會採用由上至下的順序,基於 Istio 1.0.2 版本的 Helm Chart 作一系列的講解。node

Istio 的 Helm Chart 分爲兩個大分支:istio 和 istio-remote,後者爲多集羣部署方式,這裏暫不涉及,後面的內容圍繞 istio 展開。架構

整體結構

Istio Chart 是一個總分結構,其分級結構和設計結構是一致的,這裏作一個簡單的說明。分佈式

Chart.yaml

Chart 的基礎信息,這裏看到 1.0.2 的 Release 中,version 的值仍是 1.0.1;要求的 Tiller 版本要大於等於 2.7.2-0ide

values-*.yaml

這裏提供了一組 values 文件,提供 Istio 在各類場景下的關鍵配置範本。對 Istio 的定製能夠從 values.yaml 的改寫開始,完成後可使用 helm template 命令來生成最終的部署文件供 kubectl 使用。values.yaml 文件的一些細節能夠參考官方文檔。ui

  • values-istio-auth-galley.yaml:啓用控制面 mTLS;缺省打開網格內的 mTLS;啓用 Galley。
  • values-istio-auth-multicluster.yaml:多集羣配置;啓用控制面 mTLS;缺省打開網格內的 mTLS;禁用自簽署證書。
  • values-istio-auth.yaml:啓用控制面 mTLS;缺省打開網格內的 mTLS。
  • values-istio-demo-auth.yaml:啓用控制面 mTLS;缺省打開網格內的 mTLS;激活 Grafana、Jaeger、ServiceGraph 以及 Galley;容許自動注入。
  • values-istio-demo.yaml:激活 Grafana、Jaeger、ServiceGraph 以及 Galley;容許自動注入。
  • values-istio-galley.yaml:啓用 Galley 和 Prometheus。
  • values-istio-gateways.yaml:這是一個樣例,能夠用這種形式定義新的 Gateway。
  • values-istio-multicluster.yaml:多集羣配置,禁用自簽發證書。
  • values-istio-one-namespace-auth.yaml
  • values-istio-one-namespace.yaml:啓用控制面 mTLS;缺省打開網格內的 mTLS;
  • values-istio.yaml:oneNameSpace 設置爲 True,讓 Pilot 只監控單一的 Namespace,目前的狀況是隻監控 Istio 的部署命名空間。此處的 istiotesting 彷佛是個 Issue。
  • values.yaml:羅列了(可能)全部變量,也是咱們作定製的基礎。

requiremtens.yaml

這個文件用於管理 Chart 的依賴關係,Istio 的各個組件就是在這裏定義的,而且能夠經過變量進行控制。spa

templates

_affinity.tpl

該文件會生成一組節點親和/互斥元素,供各個組件在渲染 YAML 時候使用。設計

  • nodeAffinityRequiredDuringScheduling:僅在本文件中使用。這裏規定了對節點的要求,values.yaml 中的 global.arch 變量中列出了一系列的主機架構,只有出如今這一列表中,且對應值大於 0 的節點,纔會將 Pod 調度到該節點上。
  • nodeAffinityPreferredDuringScheduling:僅在本文件中使用。這裏規定了調度優先級,爲各類架構的節點分配了權重。
  • nodeaffinity:包含了上面談到的兩個模板,合成爲一個節點親和性的代碼段,供外部文件使用,影響範圍包括: |文件名|涉及對象| |—-|—-| |charts/galley/templates/deployment.yaml|Deployment:istio-galley。| |charts/gateways/templates/deployment.yaml|全部 gateways Chart 生成的 Deployment。| |charts/grafana/templates/deployment.yaml|Deployment:grafana。| |charts/ingress/templates/deployment.yaml|Deployment:istio-ingress。| |charts/mixer/templates/deployment.yaml|Deployment:istio-policy| |charts/pilot/templates/deployment.yaml|Deployment:istio-pilot| |charts/prometheus/templates/deployment.yaml|Deployment:prometheus| |charts/security/templates/deployment.yaml|Deployment:istio-citadel| |charts/servicegraph/templates/deployment.yaml|Deployment:servicegraph| |charts/sidecarInjectorWebhook/templates/deployment.yaml|Deployment:istio-sidecar-injector| |charts/tracing/templates/deployment.yaml|Deployment:istio-tracing|

_helpers.tpl

這個文件並不特別,建立了四個變量,供 Helm 使用。code

sidecar-injector-configmap.yaml

這裏定義了 ConfigMap 對象 istio-sidecar-injector,爲 sidecarInjectorWebhook 提供配置支持,在全局變量 omitSidecarInjectorConfigMapFalse 的時候進行渲染,這一參數會用在生成新的 Gateway 之類的調整功能上,防止建立多餘的 ConfigMap。這裏能夠看到使用各類變量拼裝而成的注入模板,用於爲被注入 Pod 提供初始化和 Sidecar 容器的支持。其中設計的變量會在後文中進行講解。對象

configmap.yaml

這個文件定義了 ConfigMap 對象 istio,該對象會隨 Pilot 一同建立,也就是說它是 Pilot 的依賴項。其中所涉變量也一樣會在其餘文章中進行講解。blog

charts

  • certmanager:一個基於 Jetstack Cert-Manager 項目的 ACME 證書客戶端,用於自動進行證書的申請、獲取以及分發
  • galley:Istio 利用 Galley 進行配置管理工做。
  • gateways:使用 Gateways 一節的配置,能夠實現多個 Gateway Controller
  • grafana:圖形化的 Istio Dashboard。
  • ingress:一個遺留設計,缺省關閉,v1alpha3 以後建議棄用。
  • kiali:帶有分佈式跟蹤、配置校驗等多項功能的 Dashboard。
  • mixer
  • pilot
  • prometheus
  • security
  • servicegraph
  • sidecarInjectorWebhook:自動注入 Webhook 的相關配置
  • tracing:Jaeger 的分佈式跟蹤相關配置。

小結

本篇主要講述的是總體結構以及頂層對象的一些內容。後面將會分幾篇文章講講各類變量的應用以及各個 Chart 的配置。

相關文章
相關標籤/搜索