Linkerd 2.10 系列
- 快速上手 Linkerd v2 Service Mesh(服務網格)
- 騰訊雲 K8S 叢集實戰 Service Mesh—Linkerd2 & Traefik2 部署 emojivoto 應用
- 詳細瞭解 Linkerd 2.10 基礎功能,一起步入 Service Mesh 微服務架構時代
- Linkerd 2.10(Step by Step)—1. 將您的服務新增到 Linkerd
- Linkerd 2.10(Step by Step)—2. 自動化的金絲雀釋出
- Linkerd 2.10(Step by Step)—3. 自動輪換控制平面 TLS 與 Webhook TLS 憑證
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
公眾號:黑客下午茶
加我微信(互相學習交流),關注公眾號(獲取更多學習資料~)