热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

IstioHelmChart详解——概述

前言Helm是目前Istio官方推荐的安装方式,除去安装之外,还可以利用对输入值的一些调整,完成对Istio的部分配置工作。官方提供了Istio的Helm部署方式,侧重于快速启动,

前言

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 提供配置支持,在全局变量 omitSidecarInjectorConfigMap 为 False 的时候进行渲染,这一参数会用在生成新的 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 的配置。



推荐阅读
  • 面条|发生_做到这7点,避免微服务落地失败
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了做到这7点,避免微服务落地失败相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • C++语言入门:数组的基本知识和应用领域
    本文介绍了C++语言的基本知识和应用领域,包括C++语言与Python语言的区别、C++语言的结构化特点、关键字和控制语句的使用、运算符的种类和表达式的灵活性、各种数据类型的运算以及指针概念的引入。同时,还探讨了C++语言在代码效率方面的优势和与汇编语言的比较。对于想要学习C++语言的初学者来说,本文提供了一个简洁而全面的入门指南。 ... [详细]
  • 本文介绍了在go语言中利用(*interface{})(nil)传递参数类型的原理及应用。通过分析Martini框架中的injector类型的声明,解释了values映射表的作用以及parent Injector的含义。同时,讨论了该技术在实际开发中的应用场景。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • 像跟踪分布式服务调用那样跟踪Go函数调用链 | Gopher Daily (2020.12.07) ʕ◔ϖ◔ʔ
    每日一谚:“Acacheisjustamemoryleakyouhaven’tmetyet.”—Mr.RogersGo技术专栏“改善Go语⾔编程质量的50个有效实践” ... [详细]
  • 一、Struts2是一个基于MVC设计模式的Web应用框架在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2优点1、实现 ... [详细]
  • AndroidJetpackNavigation基本使用本篇主要介绍一下AndroidJetpack组件Navigation导航组件的基本使用当看到Navigation单词的时候应 ... [详细]
  • oracle使索引不可见,关于oracle的不可见索引探究
    --FDH一、关于oracle的不可见索引oracle对于不可见索引的给出的官方定义是:AninvisibleindexismaintainedbyDMLoperat ... [详细]
  • 3D美术实时渲染最佳实践(5):Mesh
    5.2-Triangleandpolygonusage原文档:ArmGuide开发人员指南V4.1–移动平台游戏图形优化Tooptimizetheperforma ... [详细]
  • 大幅|大盘_OPLG:新一代云原生可观测最佳实践
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了OPLG:新一代云原生可观测最佳实践相关的知识,希望对你有一定的参考价值。简介: ... [详细]
  • smartadmin mysql_Prometheus、Alertmanager、Grafana 监控 Linux 与 MySQL
    检查各个端口的放行部署各个模块与应用cdusrlocalPrometheus_composevimdocker-compose.ymlversion:3services:pro ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 数字账号安全与数据资产问题的研究及解决方案
    本文研究了数字账号安全与数据资产问题,并提出了解决方案。近期,大量QQ账号被盗事件引起了广泛关注。欺诈者对数字账号的价值认识超过了账号主人,因此他们不断攻击和盗用账号。然而,平台和账号主人对账号安全问题的态度不正确,只有用户自身意识到问题的严重性并采取行动,才能推动平台优先解决这些问题。本文旨在提醒用户关注账号安全,并呼吁平台承担起更多的责任。令牌云团队对此进行了长期深入的研究,并提出了相应的解决方案。 ... [详细]
  • 容器管理与容器监控influxDB
    容器管理与容器监控-influxDB什么是influxDBinfluxDB安装(1)下载镜像(2)创建容器(3 ... [详细]
author-avatar
陈晏亚363951
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有