10. 使用 Kustomize 自定义 Linkerd 的配置

Kustomize 可用于以一致的方式修补 linkerd install 的输出, 而不是分叉 Linkerd 安装升级过程。这允许自定义安装以添加特定于安装的功能。

首先,将 install 的输出保存到 YAML 文件中。 这将是 Kustomize 用于修补生成添加到集群中的内容的基础资源。

linkerd install > linkerd.yaml

接下来,创建一个 kustomization.yaml 文件。 此文件将包含 Kustomize 的说明,列出基本资源以及对这些资源执行的转换。 现在,这看起来很空:

resources:
- linkerd.yaml

现在,让我们看看如何进行一些示例自定义。

添加优先级

控制平面中有几个组件可以从与关键 PriorityClass 相关联中受益。 虽然目前不支持将配置作为 linkerd installflag,但使用 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

接下来,创建一个名为 patch-priority-class.yaml 的文件,该文件将包含 overlay。 此 overlay 将解释需要修改的内容。

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 -