前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Istio Helm Chart 详解 —— 概述

Istio Helm Chart 详解 —— 概述

作者头像
崔秀龙
发布2019-07-23 15:10:39
1.2K0
发布2019-07-23 15:10:39
举报
文章被收录于专栏:伪架构师伪架构师

前言

Helm 是目前 Istio 官方推荐的安装方式,除去安装之外,还可以利用对输入值的一些调整,完成对 Istio 的部分配置工作。官方提供了 Istio 的 Helm 部署方式,侧重于快速启动,而这一组文章将会采用由上至下的顺序,基于 Istio 1.0.2 版本的 Helm Chart 做一系列的讲解。

Istio 的 Helm Chart 分为两个大分支:istio 和 istio-remote,后者为多集群部署方式,这里暂不涉及,后面的内容围绕 istio 展开。

总体结构

Istio Chart 是一个总分结构,其分级结构和设计结构是一致的,这里做一个简单的说明。

Chart.yaml

Chart 的基础信息,这里看到 1.0.2 的 Release 中,version 的值还是 1.0.1;要求的 Tiller 版本要大于等于 2.7.2-0

values-*.yaml

这里提供了一组 values 文件,提供 Istio 在各种场景下的关键配置范本。对 Istio 的定制可以从 values.yaml 的改写开始,完成后可以使用 helm template 命令来生成最终的部署文件供 kubectl 使用。values.yaml 文件的一些细节可以参考官方文档。

  • 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 的各个组件就是在这里定义的,并且可以通过变量进行控制。

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 使用。

sidecar-injector-configmap.yaml

这里定义了 ConfigMap 对象 istio-sidecar-injector,为 sidecarInjectorWebhook 提供配置支持,在全局变量 omitSidecarInjectorConfigMapFalse 的时候进行渲染,这一参数会用在生成新的 Gateway 之类的调整功能上,防止创建多余的 ConfigMap。这里可以看到使用各种变量拼装而成的注入模板,用于为被注入 Pod 提供初始化和 Sidecar 容器的支持。其中设计的变量会在后文中进行讲解。

configmap.yaml

这个文件定义了 ConfigMap 对象 istio,该对象会随 Pilot 一同创建,也就是说它是 Pilot 的依赖项。其中所涉变量也同样会在其他文章中进行讲解。

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 的配置。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 伪架构师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 总体结构
    • Chart.yaml
      • values-*.yaml
        • requiremtens.yaml
          • templates
            • _affinity.tpl
            • _helpers.tpl
            • sidecar-injector-configmap.yaml
            • configmap.yaml
          • charts
          • 小结
          相关产品与服务
          服务网格
          服务网格(Tencent Cloud Mesh, TCM),一致、可靠、透明的云原生应用通信网络管控基础平台。全面兼容 Istio,集成腾讯云基础设施,提供全托管服务化的支撑能力保障网格生命周期管理。IaaS 组网与监控组件开箱即用,跨集群、异构应用一致发现管理加速云原生迁移。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档