튜토리얼: CLI 플러그인 만들기
튜토리얼: CLI 플러그인 만들기
helm system-info 명령을 만들어 시스템 정보를 표시해 봐요.
출처: 문서
본문
Subprocess 런타임
Subprocess 런타임으로 CLI 플러그인을 만드는 것부터 시작해 볼게요.
사전 준비
-
최신 Helm 4 릴리스인 v4.3.0 을 설치해요.
-
터미널 세션에서 내려 받은 릴리스로
helm을 alias 처리해요.helm version --short가 지금 터미널 세션에서 올바른 Helm 버전을 표시하면 돼요.
1. 플러그인 디렉터리 만들기
파일 시스템 어디에든 만들 수 있어요. 예를 들면:
mkdir -p $HOME/code/helm/plugins/system-info
cd $HOME/code/helm/plugins/system-info
2. 플러그인 매니페스트 만들기
plugin.yaml
apiVersion: v1
type: cli/v1
name: "system-info"
version: "0.1.0"
runtime: subprocess
config:
usage: system-info
shortHelp: Display system and Helm information
longHelp: Shows OS info, Helm version, and environment details
runtimeConfig:
platformCommand:
- command: ${HELM_PLUGIN_DIR}/system-info.sh
3. 스크립트 만들기
system-info.sh
#!/bin/bash
echo "=== System Information ==="
echo "OS: $(uname -s)"
echo "Architecture: $(uname -m)"
echo ""
echo "=== Helm Information ==="
echo "Plugin Dir: $HELM_PLUGIN_DIR"
echo "Arguments: $*"
echo ""
echo "System info complete!"
실행 가능하게 만들어요:
chmod +x system-info.sh
4. 개발 모드로 설치하고 테스트하기
파일 시스템에서 플러그인을 설치하면 로컬 개발 모드로 설치돼요. 이 방식은 프러비넌스 검증이나 확인을 건너뛰어요:
% helm plugin install $HOME/code/helm/plugins/system-info
Installing plugin from local directory (development mode)
Installed plugin: system-info
로컬 개발 모드 설치는 소스 디렉터리에서 플러그인 디렉터리로 심링크(symlink)를 만들어 줘요. 그래서 원하는 위치에서 계속 개발할 수 있어요. 내부 HELM_PLUGINS 환경 변수를 이용해 디렉터리 위치를 나열해 보면 심링크를 확인할 수 있어요:
% ls -lah $(helm env HELM_PLUGINS)
total 0
drwxr-xr-x@ 3 r6by staff 96B Nov 10 02:18 .
drwxr-xr-x@ 3 r6by staff 96B Jan 21 2025 ..
lrwxr-xr-x 1 r6by staff 41B Nov 10 02:18 system-info -> /Users/r6by/code/helm/plugins/system-info
설치된 플러그인 목록에서 helm plugin list로 플러그인 상세 정보를 확인할 수 있어요:
% helm plugin list
NAME \tVERSION\tTYPE \tAPIVERSION\tPROVENANCE\tSOURCE
system-info\t0.1.0 \tcli/v1\tv1 \tlocal dev \tunknown
이제 helm help로 사용 가능한 명령 목록에서도 플러그인을 볼 수 있고, plugin.yaml에 정의한 자체 도움말 메시지도 확인할 수 있어요:
% helm help | grep system-info
system-info Display system and Helm information
% helm help system-info
Shows OS info, Helm version, and environment details
Usage:
helm system-info [flags]
CLI 하위 명령을 실행해 볼게요:
% helm system-info
=== System Information ===
OS: Darwin
Architecture: arm64
=== Helm Information ===
Plugin Dir: /Users/r6by/Library/helm/plugins/system-info
Arguments:
System info complete!
만든 것: Subprocess 런타임을 쓰는 CLI 플러그인!
이번에는 Wasm 런타임으로 다시 만들어 볼게요...
Wasm 런타임
사전 준비
-
Subprocess 런타임의 사전 준비 사항
-
Go 1.25 설치
주의: warningTo-do: 이 섹션 추가 예정
더 알아보기 (Learn more)
- Helm 플러그인 개요 — 전체
plugin.yaml스펙 - Helm 플러그인 개발 — CLI·Getter·Postrenderer 플러그인 튜토리얼