Skip to main content

Command Palette

Search for a command to run...

Istio Helm Chart 详解 - Galley

Updated
2 min read

前言

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

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

values.yaml 中的相关变量

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 会持续的增强,并提供更多这方面的文档。

More from this blog

龙虾恐慌:AIOps 又要改名了?

ChatGPT 开始,把 AI 拉近到普罗大众的面前,让无数人感受到 AI 的亲民魅力。而龙虾,则把大模型驱动的自动化能力,突然间变得水灵灵、活泼泼地走进千家万户。它不只是“风口上的猪”,而是风口本身。热度高到让 Mac mini 一度断货,不知道这在不在库克的预料之内。 每代人都有每代人的鸡蛋,春节期间,我就领了我的鸡蛋。翻出古老的 MacBook Air M1,充值各种大模型。当然了,这个工具

Mar 9, 20261 min read

再见 2025

我猜不少人以为这个号废了吧?并没有,只是今年变化有点大,一直有种抄起键盘,无从说起的感觉,所以一直偷懒到今天,2025 的最后一天。 今年是我的第四个本命年,去年末一期播客里,大内说本命年不是灾年,是变化年,有危也有机。可是讲真啊,只看到危,没看到机。 各种因缘际会,从鹅厂跳槽到前东家,已经接近四年,第一个合同期已经进入尾声。除了前两年还在云原生领域嗷嗷叫,后两年基本都是些鸡零狗碎的东西了,用老东家的术语说是——偏离主航道,可谓是前景暗淡了。 一旦确定要滚蛋,反倒心思轻松起来,每天骑着我的小红车...

Jan 5, 20261 min read

辅助编程?dora 说:我知道你很急可是请你别急

从 OpenGPT 把大模型的火烧旺了之后,这三年来,相信很多组织或摩拳擦掌、或躬身入局,希望借助聪明能干的大模型,或想偿还技术宅,或想降本增效,或想弯道超车。一时间,沉寂许久的 AIxx 又活过来了,LLM Ops、Vibe Coding、中医大模型、GPT 算命等等,全都老树发新芽,焕发了勃勃生机。那么视角拉回从业者最关注的饭碗相关的领域之一——AI 辅助开发,产生了什么触动,应该如何拥抱呢? DORA 的年度报告中给出了很有意思的结论——强者恒强。 执行摘要部分总结了几个有趣的点: 问题...

Oct 6, 20251 min read

[译]dora:ai 辅助软件开发状态报告

执行摘要 在 2025 年,科技领导者面临的核心问题已不再是“是否要采用 AI”,而是“如何实现其价值”。 DORA 的研究基于超过 100 小时的定性访谈和来自全球近 5,000 名技术专业人士的问卷调查。研究揭示了一个关键事实:AI 在软件开发中的主要角色是“放大器”。它会放大高效能组织的优势,也会凸显组织的缺陷。 关键结论:AI 是放大器 AI 投资的最大回报并非来自工具本身,而是来自组织底层系统的战略性建设: 高质量的内部平台 清晰的工作流 团队的协同能力 缺少这些基础,AI ...

Oct 2, 202514 min read

僭越了,有人在用 Rust 写 Kubernetes

一个新语言问世,最爱做的事情之一,就是重写存量软件了。 云原生喝酒 SIG 重点扶持项目——rk8s(https://github.com/rk8s-dev/rk8s) 也可以归在这个范畴里,只不过这个项目重写的东西比较大,是 Kubernetes。 从 2025 年 1 月第一个 Commit 开始,到现在有了 200 多次 Commit,十几万行代码。当然距离 Kubernetes 的几百万行代码还差得远——老马就是喜欢整这种大无畏项目。 另外该项目也是国内第一个脱离 Cargo 转向使用 ...

Sep 27, 20253 min read

【伪】架构师

342 posts