#!/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