튜토리얼: Postrenderer 플러그인 만들기
튜토리얼: Postrenderer 플러그인 만들기
모든 Kubernetes 리소스에 커스텀 라벨을 추가하는 플러그인을 만들어 봐요.
출처: 문서
본문
Subprocess 런타임
Subprocess 런타임으로 Postrenderer 플러그인을 만드는 것부터 시작해 볼게요.
사전 준비
-
최신 Helm 4 릴리스인 v4.3.0 을 설치해요.
-
터미널 세션에서 내려 받은 릴리스로
helm을 alias 처리해요.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. 플러그인 매니페스트 만들기
plugin.yaml
apiVersion: v1
type: postrenderer/v1
name: label-injector
version: 0.1.0
runtime: subprocess
runtimeConfig:
platformCommand:
- command: ${HELM_PLUGIN_DIR}/inject-labels.sh
3. 스크립트 만들기
inject-labels.sh
#!/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
이제 helm plugin list로 설치된 CLI·Getter 플러그인과 함께 Postrenderer 플러그인 상세 정보를 확인할 수 있어요:
% helm plugin list
NAME \tVERSION\tTYPE \tAPIVERSION\tPROVENANCE\tSOURCE
demo-getter \t0.1.0 \tgetter/v1 \tv1 \tlocal dev \tunknown
label-injector\t0.1.0 \tpostrenderer/v1\tv1 \tlocal dev \tunknown
system-info \t0.1.0 \tcli/v1 \tv1 \tlocal dev \tunknown
실행해 볼게요:
% helm create ../mychart
% helm template ../mychart --post-renderer label-injector
출력에서 이런 라벨을 볼 수 있어요:
metadata:
labels:
postrendered-by: helm-label-injector-plugin
만든 것: Subprocess 런타임을 쓰는 Postrenderer 플러그인!
이번에는 Wasm 런타임으로도 만들어 볼게요…
Wasm 런타임
사전 준비
-
Subprocess 런타임의 사전 준비 사항
-
Go 1.25 설치
주의: warningTo-do: 이 섹션 추가 예정