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

Istio Helm Chart 详解 - Galley

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

前言

Galley 是 Istio 的配置管理组件,根据官方文档的描述:

Galley 代表其他的 Istio 控制平面组件,用来验证用户编写的 Istio API 配置。随着时间的推移,Galley 将接管 Istio 获取配置、 处理和分配组件的顶级责任。它将负责将其他的 Istio 组件与从底层平台(例如 Kubernetes)获取用户配置的细节中隔离开来。

values.yaml 中的相关变量

代码语言:javascript
复制
galley:
 enabled: true
 replicaCount: 1
 image: galley

这里看到,Galley 的相关变量只有启用、副本数量以及镜像三个。

  • enabled:负责在 requirements.yaml 中标识是否启用 Galley 组件。
  • replicaCount:负责在 deployment.yaml 中定义副本数量。
  • image:负责在 deployment.yaml 中定义镜像。

RBAC 相关内容

这里可以看到 Galley 使用 Service Account istio-galley-service-account 的身份运行。全局变量中如果定义了 imagePullSecrets,则会在 serviceaccount.yaml 中进行引用。

clusterrole.yaml 模板中定义了 Galley 所需使用的系统资源:

  • admissionregistration.k8s.io 组中的 validatingwebhookconfigurations 类型的完全控制。
  • config.istio.io: Mixer CRD 的所有资源的读取权限。
  • istio-galley Deployment 和 Endpoint 的读取权限。

clusterrolebinding.yaml 将上面的两个对象连接起来完成授权。

service.yaml

这里看到为 Galley 开放了两个端口:443 是一个 https 端口,用来提供验证服务;而 9093 是一个用来进行 Galley 自身服务监控的 http 端口。

该文件只引用了 Release 内置变量。

deployment.yaml

这里以 Galley 为主进程创建了一个 Deployment 对象。

annotation 一节中将 sidecar.istio.io/inject 设置为 false 来防止自动注入 Sidecar。

全局变量

  • Chart
  • Release
  • global.priorityClassName
  • global.hub
  • global.tag
  • global.imagePullPolicy
  • 模板 nodeaffinity
  • global.defaultResources

变量使用细节

  • 部署在 Istio 所属命名空间中。
  • 使用 _helpers.tpl 中定义的模板给 App 标签赋值。
  • 使用 Chart 和 Release 变量生成 Deployment 标签。
  • Chart 变量 replicaCount 确定副本数量。
  • 如果定义了 global.priorityClassName,则设置到 Pod 上,提高组件在集群内的优先级。
  • 使用 global.hub + image + global.tag 的方式设置镜像名称。
  • 如果 Chart 变量设置了 resource,则使用独立的资源限制,否则使用缺省的 global.defaultResources
  • 使用缺省的节点亲和性定义。

加载卷

加载了一个名为 istio.istio-galley-service-account 的 Secret,注意这个资源的类型为 istio.io/key-and-cert,说明是由 Citadel 生成的,其中包含了几个证书,供 --caCertFile--tlsCertFile--tlsKeyFile 用来提供 https 服务。

另外加载了一个 ConfigMap,其中的配置文件供 --webhook-config-file 参数使用,作为 Webhook 的参数。这个 ConfigMap 是由模板 configmap.yamlvalidatingwehookconfiguration.yaml.tpl 生成的,后面将会进行讲解。

configmap.yaml 以及 validatingwehookconfiguration.yaml.tpl

configmap.yaml 模板中并没有实质内容,主要内容存在于 validatingwehookconfiguration.yaml.tpl 之中。

这个模板中定义了一个 ValidatingWebhookConfiguration 类型的资源。这种资源用于在不改变资源的情况下,对其进行校验并发出接受或拒绝的决策。

引用全局变量

  • ChartRelease:用于生成标签和命名空间。
  • global.configValidation:如果这一变量为 True,才会生成后续内容。

Webhook

webhooks 一节定义了两个元素,分别用于 Pilot 和 Mixer 的校验。以 Mixer 部分为例。

clientConfig 一节,定义了这个 Webhook 会调用的校验服务,标准情况下会使用 Istio 所在的命名空间的 istio-galley,URL 相对路径为 /admitmixer,其中的 rules 内容,定义了针对 config.istio.io/v1alpha2 的一系列对象的创建和更新操作进行校验,如果校验失败,则拒绝创建(failurePolicy: Fail)。

结论

Galley 目前的文档非常少,主要在参考和运维指南部分有一点介绍,但 Istio 的配置难度是很著名的,因此推测随着项目的推进和普及,Galley 会持续的增强,并提供更多这方面的文档。

前言

Galley 是 Istio 的配置管理组件,根据官方文档的描述:

Galley 代表其他的 Istio 控制平面组件,用来验证用户编写的 Istio API 配置。随着时间的推移,Galley 将接管 Istio 获取配置、 处理和分配组件的顶级责任。它将负责将其他的 Istio 组件与从底层平台(例如 Kubernetes)获取用户配置的细节中隔离开来。

values.yaml 中的相关变量

代码语言:javascript
复制
galley:
 enabled: true
 replicaCount: 1
 image: galley

这里看到,Galley 的相关变量只有启用、副本数量以及镜像三个。

  • enabled:负责在 requirements.yaml 中标识是否启用 Galley 组件。
  • replicaCount:负责在 deployment.yaml 中定义副本数量。
  • image:负责在 deployment.yaml 中定义镜像。

RBAC 相关内容

这里可以看到 Galley 使用 Service Account istio-galley-service-account 的身份运行。全局变量中如果定义了 imagePullSecrets,则会在 serviceaccount.yaml 中进行引用。

clusterrole.yaml 模板中定义了 Galley 所需使用的系统资源:

  • admissionregistration.k8s.io 组中的 validatingwebhookconfigurations 类型的完全控制。
  • config.istio.io: Mixer CRD 的所有资源的读取权限。
  • istio-galley Deployment 和 Endpoint 的读取权限。

clusterrolebinding.yaml 将上面的两个对象连接起来完成授权。

service.yaml

这里看到为 Galley 开放了两个端口:443 是一个 https 端口,用来提供验证服务;而 9093 是一个用来进行 Galley 自身服务监控的 http 端口。

该文件只引用了 Release 内置变量。

deployment.yaml

这里以 Galley 为主进程创建了一个 Deployment 对象。

annotation 一节中将 sidecar.istio.io/inject 设置为 false 来防止自动注入 Sidecar。

全局变量

  • Chart
  • Release
  • global.priorityClassName
  • global.hub
  • global.tag
  • global.imagePullPolicy
  • 模板 nodeaffinity
  • global.defaultResources

变量使用细节

  • 部署在 Istio 所属命名空间中。
  • 使用 _helpers.tpl 中定义的模板给 App 标签赋值。
  • 使用 Chart 和 Release 变量生成 Deployment 标签。
  • Chart 变量 replicaCount 确定副本数量。
  • 如果定义了 global.priorityClassName,则设置到 Pod 上,提高组件在集群内的优先级。
  • 使用 global.hub + image + global.tag 的方式设置镜像名称。
  • 如果 Chart 变量设置了 resource,则使用独立的资源限制,否则使用缺省的 global.defaultResources
  • 使用缺省的节点亲和性定义。

加载卷

加载了一个名为 istio.istio-galley-service-account 的 Secret,注意这个资源的类型为 istio.io/key-and-cert,说明是由 Citadel 生成的,其中包含了几个证书,供 --caCertFile--tlsCertFile--tlsKeyFile 用来提供 https 服务。

另外加载了一个 ConfigMap,其中的配置文件供 --webhook-config-file 参数使用,作为 Webhook 的参数。这个 ConfigMap 是由模板 configmap.yamlvalidatingwehookconfiguration.yaml.tpl 生成的,后面将会进行讲解。

configmap.yaml 以及 validatingwehookconfiguration.yaml.tpl

configmap.yaml 模板中并没有实质内容,主要内容存在于 validatingwehookconfiguration.yaml.tpl 之中。

这个模板中定义了一个 ValidatingWebhookConfiguration 类型的资源。这种资源用于在不改变资源的情况下,对其进行校验并发出接受或拒绝的决策。

引用全局变量

  • ChartRelease:用于生成标签和命名空间。
  • global.configValidation:如果这一变量为 True,才会生成后续内容。

Webhook

webhooks 一节定义了两个元素,分别用于 Pilot 和 Mixer 的校验。以 Mixer 部分为例。

clientConfig 一节,定义了这个 Webhook 会调用的校验服务,标准情况下会使用 Istio 所在的命名空间的 istio-galley,URL 相对路径为 /admitmixer,其中的 rules 内容,定义了针对 config.istio.io/v1alpha2 的一系列对象的创建和更新操作进行校验,如果校验失败,则拒绝创建(failurePolicy: Fail)。

结论

Galley 目前的文档非常少,主要在参考和运维指南部分有一点介绍,但 Istio 的配置难度是很著名的,因此推测随着项目的推进和普及,Galley 会持续的增强,并提供更多这方面的文档。

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

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

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

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

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