Linkerd 2.10(Step by Step)—使用 Kustomize 自定義 Linkerd 的配置
Linkerd 2.10 中文手冊持續(xù)修正更新中:
https://linkerd.hacker-linner.com
Kustomize 可用于以一致的方式修補 linkerd install 的輸出, 而不是分叉 Linkerd 安裝和升級過程。這允許自定義安裝以添加特定于安裝的功能。
首先,將 install 的輸出保存到 YAML 文件中。這將是 Kustomize 用于修補和生成添加到集群中的內(nèi)容的基礎(chǔ)資源。
- linkerd install > linkerd.yaml
升級時,請確保使用 linkerd upgrade 中的內(nèi)容填充此文件。使用最新的 kustomize 版本,可以使用 exec plugin 插件自動執(zhí)行此操作。
接下來,創(chuàng)建一個 kustomization.yaml 文件。此文件將包含 Kustomize 的說明,列出基本資源以及對這些資源執(zhí)行的轉(zhuǎn)換?,F(xiàn)在,這看起來很空:
- resources:
- - linkerd.yaml
現(xiàn)在,讓我們看看如何進行一些示例自定義。
Kustomize 允許任意數(shù)量的補丁(patches)、變換(transforms)和生成器(generators)。這些示例一次顯示一個修改,但可以在單個 kustomization.yaml 文件中進行盡可能多的修改。
添加優(yōu)先級(PriorityClass)
控制平面中有幾個組件可以從與關(guān)鍵 PriorityClass 相關(guān)聯(lián)中受益。雖然目前不支持將此配置作為 linkerd install 的標志,但使用 Kustomize 添加并不難。
首先,創(chuàng)建一個名為 priority-class.yaml 的文件, 該文件將創(chuàng)建一個 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 是最大值。允許用戶定義的優(yōu)先級,相應(yīng)調(diào)整。
接下來,創(chuàng)建一個名為 patch-priority-class.yaml 的文件,該文件將包含覆蓋。此覆蓋將解釋需要修改的內(nèi)容。
- 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
然后,將其作為戰(zhàn)略合并選項添加到 kustomization.yaml:
- resources:
- - priority-class.yaml
- - linkerd.yaml
- patchesStrategicMerge:
- - patch-priority-class.yaml
將此應(yīng)用到您的集群需要獲取 kustomize build 的輸出并 將其通過管道傳輸?shù)?kubectl apply。例如,您可以運行:
- kubectl kustomize build . | kubectl apply -f -
修改 Grafana 配置
有興趣為 Grafana 啟用身份驗證嗎?可以一次性修改 ConfigMap 來做到這一點。不幸的是,每次 linkerd upgrade 發(fā)生時,這些更改最終都會被還原。相反,創(chuàng)建一個名為 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
然后,將其作為戰(zhàn)略合并選項添加到 kustomization.yaml:
- resources:
- - linkerd.yaml
- patchesStrategicMerge:
- - grafana.yaml
最后,通過使用 kustomize build 生成 YAML 并將 輸出傳送到 kubectl apply 將其應(yīng)用到您的集群。
- kubectl kustomize build . | kubectl apply -f -
【編輯推薦】