해당 스터디는 90DaysOfDevOps
https://github.com/MichaelCade/90DaysOfDevOps
를 기반으로 진행한 내용입니다.
Day 86 - Tools To Make Your Terminal DevOps and Kubernetes Friendly
프레젠테이션에서는 엔지니어에게 터미널은 하루의 대부분을 보내는 집과 같은 곳이기때문에, 이 공간을 더 효율적이고 예쁘게 만드는 것은 생산성과 직결된다고 한다.
따라서, Zsh, Terraform, Git, 그리고 Kubernetes 환경에서 사용할 수 있는 유용한 오픈 소스 및 상용 도구들을 제시한다.
Zsh는 유닉스 기반의 쉘로, Bash와 유사하지만 훨씬 강력한 기능과 생산성 향상 도구를 제공하여 최근 개발자들 사이에서 인기가 높다.

Oh My Zsh
Zsh 구성을 관리하기 위한 커뮤니티 기반 오픈 소스 프레임워크
특징: 수많은 테마와 플러그인을 제공하여 사용자 경험을 극대화
설치: Zsh, curl, git이 사전에 설치되어 있어야 하며 curl, wget, fetch 등을 통해 설치 가능
사용법: 홈 디렉토리의 .zshrc 파일을 수정하여 플러그인(예: git)을 추가하거나 테마를 변경할 수 있다. 다양한 테마의 스크린샷과 색상 정보를 확인하고 선택하는 것을 추천한다.
zsh-syntax-highlighting
명령어를 입력하는 동안 실시간으로 구문을 강조해 주는 플러그인
기능: 명령어, 옵션, 인수, 변수 등을 시각적으로 구분해 준다.
장점: 오타나 문법 오류를 입력 단계에서 즉시 파악할 수 있어 명령어 구조를 이해하는 데 도움을 준다.
zsh-autosuggestions
사용자의 명령어 히스토리를 기반으로 지능적인 자동 완성을 제안하는 플러그인
기능: 이전에 사용했던 명령어를 기억하여, 앞부분만 입력해도 회색 텍스트로 전체 명령어를 제안한다.
장점: 긴 명령어를 반복적으로 입력해야 할 때 Tab 키만 누르면 완성되므로 작업 속도가 빨라진다.
Terraform은 HashiCorp의 IaC(Infrastructure as Code) 도구이며, Terragrunt는 Terraform 모듈을 DRY(Don't Repeat Yourself)하게 관리해 주는 래퍼 도구다.
tfswitch & tgswitch
다양한 프로젝트나 환경에 따라 서로 다른 버전의 Terraform이나 Terragrunt를 사용해야 할 때 유용
기능: 시스템에 설치된 여러 버전 중 원하는 버전을 손쉽게 전환할 수 있게 해준다.
Infracost
IaC 코드의 비용을 추정하고 추적하는 도구
기능: 구성 파일을 분석하여 실시간 클라우드 비용 견적을 제공한다.
활용: VS Code 확장 프로그램으로도 제공되며, 코드 작성 단계에서 예산을 고려한 의사결정을 돕는다.
Trivy (구 tfsec 통합)
변화: tfsec 제작사는 도구 통합으로 인해 Trivy로의 마이그레이션을 권장한다.
기능: OS 패키지, 소프트웨어 의존성, CVE(알려진 취약점), IaC(기존 tfsec 기능), 민감 정보(Secret), 라이선스 등을 포괄적으로 스캔한다.
장점: 코드의 잠재적 취약점과 모범 사례 위반을 식별하고 개선 방안을 제안한다.
terraform-docs
Terraform 코드를 기반으로 문서 생성을 자동화해 주는 CLI 유틸리티
기능: 구성 파일에서 정보(Requirements, Providers, Inputs, Outputs)를 추출하여 마크다운 테이블 등 다양한 형식의 깔끔한 문서를 만들어준다.
버전 관리를 위한 Git 사용 시 생산성을 높여주는 도구들이다.
Git Aliases (별칭)
자주 사용하는 긴 명령어를 짧은 단축어로 정의하여 사용
예시: git status 대신 gs를 입력하도록 설정하여 타이핑 수고를 덜고 속도를 높인다.
GitLens
VS Code용 확장 프로그램으로 코드의 히스토리를 추적하는 데 최적화
기능: 코드 에디터 내에서 각 라인을 누가, 언제 수정했는지(Blame 기능) 바로 보여준다.
상세: 커밋 메시지와 작성자 정보를 시각적으로 표시하며, 마우스 오버 시 해당 히스토리 링크로 연결되어 변경 이력을 쉽게 파악할 수 있다.
Git Graph
VS Code용 확장 프로그램으로, Git 히스토리를 그래프 형태로 시각화
기능: 복잡한 브랜치 구조와 커밋 흐름을 시각적으로 표현해 준다.
장점: CLI만으로는 히스토리 파악이 어려운 초심자에게 현재 브랜치 위치와 흐름을 이해하는 데 큰 도움을 준다.
복잡한 쿠버네티스 시스템을 효율적으로 관리하기 위해 개발된 다양한 도구들이다.
Kubernetes Aliases
kubectl 명령어를 매번 입력하는 번거로움을 줄이기 위해 사용
alias k='kubectl'
alias kpod='kubectl get pods -A'
alias knode='kubectl get nodes'
alias kdesp='kubectl describe pod'
alias kdp='kubectl delete pod'
alias='kubectl get deployments'
활용: kubectl을 k와 같은 한 글자 별칭으로 설정하여 명령어 입력 속도를 비약적으로 높인다.
kube-ps1
현재 사용 중인 클러스터 컨텍스트와 네임스페이스를 프롬프트에 시각적으로 표시
필요성: 여러 클러스터를 관리할 때, 실수로 엉뚱한 클러스터(예: 프로덕션)에 명령을 내리는 치명적인 실수를 방지해 준다.
기능: 터미널 프롬프트에 현재 컨텍스트와 - 네임스페이스 정보를 색상과 함께 보여주어 직관적인 확인이 가능하다.
kubecolor
kubectl 명령어의 출력 결과에 색상을 입혀 가독성을 높인다.
기능: 밋밋한 텍스트 출력 대신 중요 정보를 색상으로 구분하여, 원하는 정보를 빠르게 식별할 수 있게 돕는다.
kubectx & kubens
컨텍스트와 네임스페이스 전환을 획기적으로 간편하게 만들어주는 도구
kubectx: 복잡한 명령어 없이 kubectx <컨텍스트명> 입력만으로 클러스터 간 전환이 가능하다.
kubens: kubens <네임스페이스명> 입력만으로 네임스페이스를 즉시 변경할 수 있다.
K9s
터미널 기반의 UI(TUI)를 제공하는 쿠버네티스 관리 대시보드다.
기능: CLI 환경에서도 시각적인 인터페이스를 통해 클러스터 상태를 모니터링하고 리소스를 관리할 수 있다.
Lens
쿠버네티스 관리를 위한 데스크톱 GUI 애플리케이션
기능: 노드, 파드 등 모든 리소스를 그래픽 인터페이스로 보여주며, 마우스 클릭만으로 상세 정보를 확인하고 관리할 수 있는 강력한 도구다.
Popeye
쿠버네티스 클러스터 분석 및 살균(Sanitizer) 도구
기능: 클러스터 전체를 스캔하여 구성 오류, 리소스 비효율성, 보안 위협, 모범 사례 위반 사항 등을 찾아내고 보고한다.
kube-capacity
클러스터 리소스 사용량과 용량을 분석하는 도구
기능: CPU와 메모리의 요청(Requests) 및 제한(Limits) 설정값과 실제 사용량을 비교하여 보여주며, 노드 및 파드 단위의 용량 정보를 제공한다.
kube-shell
쿠버네티스 CLI를 위한 통합 쉘
기능: 명령어 자동 완성 및 제안 기능을 제공하여, 사용 가능한 명령어를 쉽게 찾고 실행할 수 있도록 돕는다.
이미 시중에는 데브옵스 여정을 돕고 생산성을 높여줄 수 있는 수많은 도구가 존재한다.
이러한 도구들을 적극적으로 활용하여 불필요한 반복 작업을 줄이고, 더 중요하고 가치 있는 일에 집중하며, 결과적으로 엔지니어로서의 삶을 더 편안하게 만드는 것이 중요하다.