有沒有辦法擴展 kustomize 影像轉換器以將更多鍵識別為影像說明符?就像nameReference變壓器對namePrefix和nameSuffix變壓器一樣。
Kustomizeimages:轉換器對于 k8s 清單中的影像替換和注冊表重命名非常有用。
但它只支持嵌入的型別,PodTemplate可能還有一些硬編碼的型別。盡管 CRD很常見,但不使用PodTemplate的 CRD 不會被處理。示例包括和資源和資源。kube-prometheus PrometheusAlertManageropentelemetry-operator OpenTelemetryCollector
結果,您不得不維護一堆混亂的戰略合并或 json 補丁,以在此類影像前加上受信任的注冊表等。
這是一個問題的例子。假設我必須部署以轉換器串列為前綴的所有mytrusted.registry內容images:。為了簡潔起見,我將使用一個虛擬的,將所有匹配的影像替換為MATCHED,因此我不必全部列出:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- "https://github.com/prometheus-operator/kube-prometheus"
images:
- name: "(.*)"
newName: "MATCHED"
newTag: "fake"
您希望結果中的唯一影像是“匹配:假”,但實際上:
$ kustomize build | grep 'image: .*' | sort | uniq -c
12 image: MATCHED:fake
1 image: quay.io/prometheus/alertmanager:v0.24.0
1 image: quay.io/prometheus/prometheus:v2.34.0
kind: Prometheus和資源中的影像kind: AlertManager不匹配,因為它們不是PodTemplate.
您必須為這些撰寫一個自定義補丁,這會產生類似以下kustomization.yaml內容的混亂:
patches:
- path: prometheus_image.yaml
target:
kind: Prometheus
- path: alertmanager_image.yaml
target:
kind: Alertmanager
與prometheus_image.yaml:
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: ignored
spec:
image: "MATCHED:fake"
和alertmanager_image.yaml:
apiVersion: monitoring.coreos.com/v1
kind: Alertmanager
metadata:
name: ignored
spec:
image: "MATCHED:fake"
這是 IMO 可怕的。
我想要做的就是告訴Kustomize影像轉換器它,就像它可以使用自定義配置映射生成器等進行擴展,比如以下基于現有轉換器建模的不受支持和虛構的偽代碼nameReference
imageReference:
- kind: Prometheus
fieldSpecs:
- spec/image
uj5u.com熱心網友回復:
寫完這篇文章后,我終于偶然發現了答案: Kustomize 確實支持影像轉換器配置。
表達上述內容的正確方法是包含以下內容的image_transformer_config.yaml檔案:
images:
- path: spec/image
kind: Prometheus
- path: spec/image
kind: Alertmanager
以及kustomization.yaml參考它的條目,例如
configurations:
- image_transformer_config.yaml
當作為 a 匯入時,這似乎作業正常Component。
變形金剛檔案甚至指出了這一點,所以我將把這個歸咎于失明。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/462481.html
標籤:Kubernetes 定制化
