Посібник: Створення втулків Postrenderer
Створіть втулок, який додає власні мітки до всіх ресурсів Kubernetes.
Subprocess Runtime
Створімо втулок Postrenderer, який виконується в Subprocess.
Передумови
- Встановіть останню версію Helm 4: v4.0.0
- В терміналі створіть аліас
helmдля завантаженої версії. Командаhelm version --shortповинна показати правильну версію Helm у цьому терміналі. - Встановіть
mikefarah/yq: https://github.com/mikefarah/yq/#install
1. Створіть теку для втулка
Ви можете створити її в будь-якому місці вашої файлової системи. Наприклад:
mkdir -p $HOME/code/helm/plugins/label-injector
cd $HOME/code/helm/plugins/label-injector
2. Створіть маніфест втулка
apiVersion: v1
type: postrenderer/v1
name: label-injector
version: 0.1.0
runtime: subprocess
runtimeConfig:
platformCommand:
- command: ${HELM_PLUGIN_DIR}/inject-labels.sh
3. Створіть скрипт
#!/usr/bin/env sh
# set -e
cat <&0 | yq '.metadata.labels.postrendered-by = "helm-label-injector-plugin"'
Зробіть його виконуваним:
chmod +x inject-labels.sh
4. Встановлення в режимі розробки та тестування
Встановлення втулка з вашої файлової системи відбувається в локальному режимі розробки. Це дозволяє обійти перевірку або підтвердження походження:
% helm plugin install $HOME/code/helm/plugins/label-injector
Installing plugin from local directory (development mode)
Installed plugin: label-injector
Як ми бачили в посібнику з втулків CLI та Getter, встановлення в локальному режимі розробки створює символічне посилання з теки джерел вашого втулка до теки втулків. Тепер у вас встановлено три втулки:
% ls -lah $(helm env HELM_PLUGINS)
total 0
drwxr-xr-x@ 5 r6by staff 160B Nov 10 04:04 .
drwxr-xr-x@ 3 r6by staff 96B Jan 21 2025 ..
lrwxr-xr-x 1 r6by staff 41B Nov 10 04:04 demo-getter -> /Users/r6by/code/helm/plugins/demo-getter
lrwxr-xr-x 1 r6by staff 44B Nov 10 03:02 label-injector -> /Users/r6by/code/helm/plugins/label-injector
lrwxr-xr-x 1 r6by staff 41B Nov 10 02:18 system-info -> /Users/r6by/code/helm/plugins/system-info
Тепер ви можете переглянути детальну інформацію про встановлений втулок Postrenderer, а також про встановлені втулки CLI та Getter, використовуючи команду helm plugin list:
% helm plugin list
NAME VERSION TYPE APIVERSION PROVENANCE SOURCE
demo-getter 0.1.0 getter/v1 v1 local dev unknown
label-injector 0.1.0 postrenderer/v1 v1 local dev unknown
system-info 0.1.0 cli/v1 v1 local dev unknown
Давайте спробуємо:
% helm create ../mychart
% helm template ../mychart --post-renderer label-injector
У вихідних даних ви повинні побачити такі мітки:
metadata:
labels:
postrendered-by: helm-label-injector-plugin
Що ви створили: втулок Postrenderer, що використовує середовище виконання Subprocess!
Далі створімо версію в середовищі виконання Wasm…
Wasm Runtime
Передумови
- Вимоги з Subprocess Runtime
- Встановлений Go 1.25
To-do: додати цей розділ