튜토리얼: Postrenderer 플러그인 만들기

튜토리얼: Postrenderer 플러그인 만들기

모든 Kubernetes 리소스에 커스텀 라벨을 추가하는 플러그인을 만들어 봐요.

출처: 문서

본문

Subprocess 런타임

Subprocess 런타임으로 Postrenderer 플러그인을 만드는 것부터 시작해 볼게요.

사전 준비

  1. 최신 Helm 4 릴리스인 v4.3.0 을 설치해요.

  2. 터미널 세션에서 내려 받은 릴리스로 helm을 alias 처리해요. helm version --short가 지금 터미널 세션에서 올바른 Helm 버전을 표시하면 돼요.

  3. 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: 이 섹션 추가 예정

더 알아보기 (Learn more)