튜토리얼: CLI 플러그인 빌드하기
시스템 정보를 표시하는 helm system-info 명령어를 만들어봅시다.
서브프로세스 런타임
서브프로세스 런타임으로 CLI 플러그인을 만드는데서 시작합니다.
사전 요구 사항
- 최신 헬름4 릴리즈를 설치하세요: v4.0.0
- 터미널 세션에서 다운로드한 릴리즈에 관해서
helm을 별칭으로 설정하세요. 이제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
로컬 개발 모드 설치는 소스 디렉터리에서 플러그인 디렉터리로 심볼릭 링크를 생성하므로, 원하는 위치에서 계속 개발할 수 있습니다. 내부 환경 변수 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 VERSION TYPE APIVERSION PROVENANCE SOURCE
system-info 0.1.0 cli/v1 v1 local dev unknown
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!
만들어냈습니다. 서브프로세스 런타임을 사용하는 CLI 플러그인을!
다시 한 번 해봅시다. 이번에는 WASM 런타임으로...
WASM 런타임
사전 요구 사항
- 서브프로세스 런타임의 사전 요구 사항
- Go 1.25 설치
경고
To-do: 섹션 추가 필요