Kustomize 可用于以一致的方式修补 linkerd install
的输出, 而不是分叉 Linkerd 安装和升级过程。这允许自定义安装以添加特定于安装的功能。
首先,将 install
的输出保存到 YAML
文件中。这将是 Kustomize
用于修补和生成添加到集群中的内容的基础资源。
linkerd install > linkerd.yaml
升级时,请确保使用 linkerd upgrade
中的内容填充此文件。使用最新的 kustomize 版本,可以使用 exec plugin 插件自动执行此操作。
接下来,创建一个 kustomization.yaml
文件。此文件将包含 Kustomize 的说明,列出基本资源以及对这些资源执行的转换。现在,这看起来很空:
resources: - linkerd.yaml
现在,让我们看看如何进行一些示例自定义。
Kustomize 允许任意数量的补丁(patches)、变换(transforms)和生成器(generators)。这些示例一次显示一个修改,但可以在单个 kustomization.yaml
文件中进行尽可能多的修改。
添加优先级(PriorityClass)
控制平面中有几个组件可以从与关键 PriorityClass
相关联中受益。虽然目前不支持将此配置作为 linkerd install
的标志,但使用 Kustomize 添加并不难。
首先,创建一个名为 priority-class.yaml
的文件, 该文件将创建一个 PriorityClass
资源。
apiVersion: scheduling.k8s.io/v1 description: Used for critical linkerd pods that must run in the cluster, but can be moved to another node if necessary. kind: PriorityClass metadata: name: linkerd-critical value: 1000000000
1000000000
是最大值。允许用户定义的优先级,相应调整。
接下来,创建一个名为 patch-priority-class.yaml
的文件,该文件将包含覆盖。此覆盖将解释需要修改的内容。
apiVersion: apps/v1 kind: Deployment metadata: name: linkerd-identity spec: template: spec: priorityClassName: linkerd-critical --- apiVersion: apps/v1 kind: Deployment metadata: name: linkerd-controller spec: template: spec: priorityClassName: linkerd-critical
然后,将其作为战略合并选项添加到 kustomization.yaml
:
resources: - priority-class.yaml - linkerd.yaml patchesStrategicMerge: - patch-priority-class.yaml
将此应用到您的集群需要获取 kustomize build
的输出并 将其通过管道传输到 kubectl apply
。例如,您可以运行:
kubectl kustomize build . | kubectl apply -f -
修改 Grafana 配置
有兴趣为 Grafana 启用身份验证吗?可以一次性修改 ConfigMap
来做到这一点。不幸的是,每次 linkerd upgrade
发生时,这些更改最终都会被还原。相反,创建一个名为 grafana.yaml
的文件并添加您的修改:
kind: ConfigMap apiVersion: v1 metadata: name: grafana-config data: grafana.ini: |- instance_name = grafana [server] root_url = %(protocol)s://%(domain)s:/grafana/ [analytics] check_for_updates = false
然后,将其作为战略合并选项添加到 kustomization.yaml
:
resources: - linkerd.yaml patchesStrategicMerge: - grafana.yaml
最后,通过使用 kustomize build
生成 YAML 并将 输出传送到 kubectl apply
将其应用到您的集群。
kubectl kustomize build . | kubectl apply -f -