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

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

相關文章