Linkerd 2.10(Step by Step)—使用 Kustomize 自定義 Linkerd 的配置

  • 2021 年 6 月 17 日
  • 筆記

Linkerd 2.10 系列

Linkerd 2.10 中文手冊持續修正更新中:

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 -
我是為少
微信:uuhells123
公眾號:黑客下午茶
加我微信(互相學習交流),關注公眾號(獲取更多學習資料~)