69 lines
2.4 KiB
Bash
69 lines
2.4 KiB
Bash
#!/bin/bash
|
|
|
|
# k9s 최신 버전을 GitHub에서 다운로드하고 설치하는 스크립트
|
|
# Rocky Linux 환경에 최적화됨
|
|
|
|
set -e
|
|
|
|
# 에러 메시지 출력 함수
|
|
error_exit() {
|
|
echo "에러: $1" >&2
|
|
exit 1
|
|
}
|
|
|
|
# 필요한 명령어 확인
|
|
command -v curl >/dev/null 2>&1 || error_exit "curl이 설치되어 있지 않습니다. 'sudo dnf install curl'로 설치해주세요."
|
|
command -v jq >/dev/null 2>&1 || error_exit "jq가 설치되어 있지 않습니다. 'sudo dnf install jq'로 설치해주세요."
|
|
command -v tar >/dev/null 2>&1 || error_exit "tar가 설치되어 있지 않습니다. 'sudo dnf install tar'로 설치해주세요."
|
|
|
|
# GitHub API를 통해 최신 릴리즈 태그 가져오기
|
|
LATEST_TAG=$(curl -s https://api.github.com/repos/derailed/k9s/releases/latest | jq -r .tag_name)
|
|
[ -z "$LATEST_TAG" ] && error_exit "최신 릴리즈 태그를 가져오지 못했습니다. 네트워크 연결을 확인해주세요."
|
|
|
|
echo "k9s 최신 버전: $LATEST_TAG"
|
|
|
|
# 아키텍처 확인
|
|
ARCH=$(uname -m)
|
|
case $ARCH in
|
|
x86_64)
|
|
ARCH="amd64"
|
|
;;
|
|
aarch64)
|
|
ARCH="arm64"
|
|
;;
|
|
*)
|
|
error_exit "지원하지 않는 아키텍처: $ARCH"
|
|
;;
|
|
esac
|
|
|
|
# 다운로드 URL 생성
|
|
DOWNLOAD_URL="https://github.com/derailed/k9s/releases/download/${LATEST_TAG}/k9s_Linux_${ARCH}.tar.gz"
|
|
TEMP_DIR=$(mktemp -d)
|
|
TAR_FILE="$TEMP_DIR/k9s.tar.gz"
|
|
|
|
# 파일 다운로드
|
|
echo "다운로드 중: $DOWNLOAD_URL"
|
|
curl -s -L "$DOWNLOAD_URL" -o "$TAR_FILE" || error_exit "파일 다운로드에 실패했습니다."
|
|
|
|
# 압축 해제
|
|
echo "압축 해제 중..."
|
|
tar -xzf "$TAR_FILE" -C "$TEMP_DIR" || error_exit "압축 해제에 실패했습니다."
|
|
|
|
# k9s 바이너리 이동
|
|
if [ -f "$TEMP_DIR/k9s" ]; then
|
|
sudo mv "$TEMP_DIR/k9s" /usr/local/bin/k9s || error_exit "바이너리 이동에 실패했습니다."
|
|
sudo chmod 755 /usr/local/bin/k9s || error_exit "권한 설정에 실패했습니다."
|
|
else
|
|
error_exit "k9s 바이너리를 찾을 수 없습니다."
|
|
fi
|
|
|
|
# 정리
|
|
rm -rf "$TEMP_DIR"
|
|
echo "k9s가 성공적으로 설치되었습니다. 버전 확인: $(k9s version --short)"
|
|
|
|
# 설치 확인
|
|
if command -v k9s >/dev/null 2>&1; then
|
|
echo "k9s가 정상적으로 설치되었습니다. 'k9s' 명령어로 실행할 수 있습니다."
|
|
else
|
|
error_exit "k9s 설치 확인에 실패했습니다."
|
|
fi |