|
| 1 | +--- |
| 2 | +title: "Посібник: Створення втулків Postrenderer" |
| 3 | +sidebar_label: Створення втулків Postrenderer |
| 4 | +--- |
| 5 | + |
| 6 | +import GetVersion from "@site/src/components/GetVersion"; |
| 7 | +import CodeBlock from "@theme/CodeBlock"; |
| 8 | + |
| 9 | +Створіть втулок, який додає власні мітки до всіх ресурсів Kubernetes. |
| 10 | + |
| 11 | +## Subprocess Runtime |
| 12 | + |
| 13 | +Створімо втулок Postrenderer, який виконується в Subprocess. |
| 14 | + |
| 15 | +### Передумови {#prerequisites} |
| 16 | + |
| 17 | +1. Встановіть останню версію Helm 4: **<GetVersion majorVersion="4" label={false} link={true} />** |
| 18 | +2. В терміналі створіть аліас `helm` для завантаженої версії. Команда `helm version --short` повинна показати правильну версію Helm у цьому терміналі. |
| 19 | +3. Встановіть `mikefarah/yq`: https://github.com/mikefarah/yq/#install |
| 20 | + |
| 21 | +### 1. Створіть теку для втулка {#1-create-plugin-directory} |
| 22 | + |
| 23 | +Ви можете створити її в будь-якому місці вашої файлової системи. Наприклад: |
| 24 | + |
| 25 | +```bash |
| 26 | +mkdir -p $HOME/code/helm/plugins/label-injector |
| 27 | +cd $HOME/code/helm/plugins/label-injector |
| 28 | +``` |
| 29 | + |
| 30 | +### 2. Створіть маніфест втулка {#2-create-plugin-manifest} |
| 31 | + |
| 32 | +```yaml title="plugin.yaml" showLineNumbers |
| 33 | +apiVersion: v1 |
| 34 | +type: postrenderer/v1 |
| 35 | +name: label-injector |
| 36 | +version: 0.1.0 |
| 37 | +runtime: subprocess |
| 38 | +runtimeConfig: |
| 39 | + platformCommand: |
| 40 | + - command: ${HELM_PLUGIN_DIR}/inject-labels.sh |
| 41 | +``` |
| 42 | +
|
| 43 | +### 3. Створіть скрипт {#3-create-script} |
| 44 | +
|
| 45 | +```bash title="inject-labels.sh" showLineNumbers |
| 46 | +#!/usr/bin/env sh |
| 47 | +# set -e |
| 48 | +cat <&0 | yq '.metadata.labels.postrendered-by = "helm-label-injector-plugin"' |
| 49 | +``` |
| 50 | + |
| 51 | +Зробіть його виконуваним: |
| 52 | + |
| 53 | +```bash |
| 54 | +chmod +x inject-labels.sh |
| 55 | +``` |
| 56 | + |
| 57 | +### 4. Встановлення в режимі розробки та тестування {#4-install-in-dev-mode-and-test} |
| 58 | + |
| 59 | +Встановлення втулка з вашої файлової системи відбувається в локальному режимі розробки. Це дозволяє обійти перевірку або підтвердження походження: |
| 60 | + |
| 61 | +```bash |
| 62 | +% helm plugin install $HOME/code/helm/plugins/label-injector |
| 63 | +Installing plugin from local directory (development mode) |
| 64 | +Installed plugin: label-injector |
| 65 | +``` |
| 66 | + |
| 67 | +Як ми бачили в [посібнику з втулків CLI](/plugins/developer/tutorial-cli-plugin.mdx) та [Getter](/plugins/developer/tutorial-getter-plugin.mdx), встановлення в локальному режимі розробки створює символічне посилання з теки джерел вашого втулка до теки втулків. Тепер у вас встановлено три втулки: |
| 68 | + |
| 69 | +```bash |
| 70 | +% ls -lah $(helm env HELM_PLUGINS) |
| 71 | +total 0 |
| 72 | +drwxr-xr-x@ 5 r6by staff 160B Nov 10 04:04 . |
| 73 | +drwxr-xr-x@ 3 r6by staff 96B Jan 21 2025 .. |
| 74 | +lrwxr-xr-x 1 r6by staff 41B Nov 10 04:04 demo-getter -> /Users/r6by/code/helm/plugins/demo-getter |
| 75 | +lrwxr-xr-x 1 r6by staff 44B Nov 10 03:02 label-injector -> /Users/r6by/code/helm/plugins/label-injector |
| 76 | +lrwxr-xr-x 1 r6by staff 41B Nov 10 02:18 system-info -> /Users/r6by/code/helm/plugins/system-info |
| 77 | +``` |
| 78 | + |
| 79 | +Тепер ви можете переглянути детальну інформацію про встановлений втулок Postrenderer, а також про встановлені втулки CLI та Getter, використовуючи команду `helm plugin list`: |
| 80 | + |
| 81 | +```bash |
| 82 | +% helm plugin list |
| 83 | +NAME VERSION TYPE APIVERSION PROVENANCE SOURCE |
| 84 | +demo-getter 0.1.0 getter/v1 v1 local dev unknown |
| 85 | +label-injector 0.1.0 postrenderer/v1 v1 local dev unknown |
| 86 | +system-info 0.1.0 cli/v1 v1 local dev unknown |
| 87 | +``` |
| 88 | + |
| 89 | +Давайте спробуємо: |
| 90 | + |
| 91 | +```bash |
| 92 | +% helm create ../mychart |
| 93 | +% helm template ../mychart --post-renderer label-injector |
| 94 | +``` |
| 95 | + |
| 96 | +У вихідних даних ви повинні побачити такі мітки: |
| 97 | + |
| 98 | +```yaml |
| 99 | +metadata: |
| 100 | + labels: |
| 101 | + postrendered-by: helm-label-injector-plugin |
| 102 | +``` |
| 103 | +
|
| 104 | +Що ви створили: втулок Postrenderer, що використовує середовище виконання Subprocess! |
| 105 | +
|
| 106 | +Далі створімо версію в середовищі виконання Wasm… |
| 107 | +
|
| 108 | +## Wasm Runtime |
| 109 | +
|
| 110 | +### Передумови {#prerequisites-1} |
| 111 | +
|
| 112 | +- Вимоги з [Subprocess Runtime](#subprocess-runtime) |
| 113 | +- Встановлений Go 1.25 |
| 114 | +
|
| 115 | +:::warning |
| 116 | +To-do: одати цей розділ |
| 117 | +::: |
0 commit comments