DevOps Engineer에 최적화된 맥을 설정하는 방법을 알아본다.


Index

  1. Intro
  2. 설치하는 앱
  3. 인텔리제이 세부 설정
  4. 맥 설정

Intro

직장에서 사용하는 컴퓨터를 포맷해야 하거나 교체되거나 해서 다시 설정을 해줘야 할 일이 요즘들어 왕왕 있었다. 맥에서 맥으로 설정을 마이그레이션 하는 기능도 지원하는 걸로 알고 있는데 해당 설정을 사용할 수 있는 환경이 아니라서 하나씩 설정해야 했다.

이것도 여러 번 하다보니 일이 되는 거 같아서 이번 기회에 사용하는 설정을 블로그에 백업해두고, 다음 번에 설정할 일이 있으면 이 포스팅을 보고 빨리 설정을 해야겠다.


설치하는 앱

Raycast

  • 용도: 맥에서 나만의 단축키를 만들 수 있다. app이나 특정 링크로 바로 접근할 수 있는 단축키를 등록해 두면 시간을 많이 절약할 수 있다.
  • 설치 방법: -
  • 세부 설정: -

설치 방법과 세부 설정은 블로그 포스팅 중 [General] 이것만 있으면 나도 슈퍼 개발자? 생산성 앱 Raycast 에서 이미 다루고 있기 때문에 여기를 참고해서 진행하도록 한다.

참고
포스팅에서는 ChatGPT를 shift+option+C 로 해놨는데 쓰다보니 shift+option+G가 더 직관적이었다. shift+option+G는 원래 깃허브의 단축키였는데 중요성을 강조하기 위해 shift+option+0 으로 변경했다.


Notion

  • 용도: 노트로도 사용이 가능하고 문서 데이터베이스로도 사용이 가능한 만능 생산성 앱이다.
  • 설치 방법: Notion Download 방문하여 다운로드 한다.
  • 세부 설정: 회사에서 사내 문서로 노션을 쓸 때 브라우저로는 사내 노션을, 설치한 앱으로는 개인 노션을 설정했다.

IntelliJ

  • 용도: IDEA
  • 설치 방법: IntelliJ Download
  • 세부 설정: 해당 포스팅 아래에서 단독 목차로 IntelliJ의 세부 설정인 plugins 등을 다룬다.

참고
DevOps로 일을 하기 시작하면서 Java 개발을 안 하다보니 테라폼이나 k8s의 yaml을 수정할 때 IntelliJ가 너무 무겁게 느껴진다. Jetbrains에서 재작년에 경량화된 IDEA가 나왔던 거 같은데 한 번 써봐야겠다. 아니면 이번 기회에 VSCode로 넘어가야 하나 고민도 된다. 하지만 단축키가 달라지다보니 망설이고 있다.


VSCode

참고
IDEA인데 코드 편집보다는 코드 Viewer 또는 코드 메모장처럼 쓰고 있다. 복붙해야 하는 커맨드나 코드가 있을 때 여기에 메모장처럼 적어두고 보면 작업하기 정말 편하다.


Docker Desktop

  • 용도: 로컬 컴퓨터에서 Docker, K8s 구동하기
  • 설치 방법: Docker Desktop Download
  • 세부 설정: K8s 추가 설치

참고
로컬 컴퓨터에서 Docker, K8s를 구동할 수 있는데 K8s 연습용으로 쓰면 좋다. 클릭 몇 번이면 로컬에 노드 1개 짜리 K8s를 설치할 수 있다. 대신 Docker Desktop 설정 메뉴에서 K8s의 리소스를 적당히 잡아줘야 한다. 너무 많이 할당했다가는 Docker Desktop에서 RAM을 7G 넘게 쓰는 걸 볼 수 있다.


Git (Command Base)

  • 용도: -
  • 설치 방법: Git Download
  • 세부 설정: alias를 걸어서 사용하는데, 그 부분은 Iterm2 부분에서 다루겠다.

참고

설치 후 내 git 계정을 등록해주자.

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

AWS (Command Base)

  • 용도: -
  • 설치 방법:
----- aws cli version2 설치 -----
$ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
$ sudo installer -pkg AWSCLIV2.pkg -target /
  • 세부 설정: alias를 걸어서 사용하는데, 그 부분은 Iterm2 부분에서 다루겠다.

참고
aws sso을 사용하는 회사라면 aws sso 설정을 해줘야 한다. 버전에 따라서 session-name을 설정하라고 하는데 이거 설정하면 terraform에서 계정 인증할 때 문제가 난다. 공란으로 넣어줘야 한다.

$ aws configure sso

SSO start URL [None]:
SSO region [None]:
There are 5 AWS accounts available to you. 
... 

CLI default client Region [None]: 
CLI default output format [None]:                 
CLI profile name [Admin-***]: 


# login  
$ aws sso login --profile my-profile

eks를 사용하고 있다면 클러스터 정보도 kube/config에 등록해줘야 한다. Install kubectl 공식 문서를 보고 kubectl을 설치한 후 진행한다.

# aws login 이후
aws --profile <profile-name> eks --region <profile-region> update-kubeconfig --name <cluster-name> --alias <cluster-alias>

Terraform (Command Base)

  • 용도: -
  • 설치 방법: terraform 자체를 설치하는 것보다 terraform 버전 관리 툴을 설치해서 테라폼을 설치하는 게 편하다. tfenv 라는 버전 관리 툴을 사용중이다.
brew install tfenv

# Install 
tfenv install {Version}

# Change 
tfenv use {Version}

# Show installed versions 
tfenv list 
  • 세부 설정: -

Iterm2

  • 용도: 터미널
  • 설치 방법:
brew install iterm2 

# install oh-my-zsh 
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

# in .zshrc 
# agnoster가 현재 checkout한 브랜치를 쉽게 알아볼 수 있게 지원해주는 테마라고 한다. 
ZSH_THEME="agnoster"
  • 세부 설정:

폰트: D2 Coding
Colors: Blue Matrix
하단 상태바: 상태바 추가, CPU, Mem, 시간 등을 선택해서 사용한다.

설치가 필요한 플러그인: zsh-autosuggestions, zsh-syntax highlighter, kubectl 자동 완성

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

사용하는 플러그인

git kubectl kube-ps1 zsh-syntax-highlighting zsh-autosuggestions aws docker docker-compose

사용하는 alias

alias ll="ls -alht"
alias src="source ~/.zshrc"
alias gst="git status"
alias glog="git log --oneline"
alias gb="git branch | cat"
alias ab="git branch -a | cat"
alias gsw="git switch main"
alias rsw="git switch -"
alias dbranch="git branch | grep -v 'main' | xargs git branch -D"
alias shutdown="sudo shutdown -h now"
alias reboot="sudo reboot"
alias h="history"
alias hg="history | grep"
alias down="sudo pkill loginwindow"
alias e="exit"
alias tf='terraform'

# AWS
alias sso="aws sso login --profile <dev> && aws sso login --profile <staging> && aws sso login --profile <prod>"
alias ep="export AWS_PROFILE=<prod>"
alias es="export AWS_PROFILE=<staging>"
alias ed="export AWS_PROFILE=<dev>"


Kubernetes support: kubectx, kubens

  • 용도: kubernetes를 조금 더 편하게 사용할 수 있도록 보조해주는 command base tool. kubectx: 사용중인 클러스터 바꾸기, kubens: 사용중인 네임스페이스 바꾸기
  • 설치 방법:
brew install kubectx
brew install kubens 
  • 세부 설정: -

Kubernetes support: kube-ps1

  • 용도: 터미널 프롬프트에 지금 사용중인 K8s 클러스터와 네임스페이스를 보여준다. 단, 이걸 쓰면 터미널이 느려진다.
  • 설치 방법:
brew install kube-ps1

# .zshrc 추가  
source "$(brew --prefix)/opt/kube-ps1/share/kube-ps1.sh"
PS1='$(kube_ps1)'$PS1
  • 세부 설정: -

Scroll Reverser

  • 용도: 마우스 휠 반전
  • 설치 방법: Scroll Reverser Download
  • 세부 설정: 로그인 시 Scroll Reverser가 런치될 수 있도록 설정한다. 마우스 설정 반전은 다운로드 페이지를 참고해서 설정한다.

참고 맥북에 마우스를 연결해서 사용하면 스크롤 방향이 원래와 반대 방향이다. 그래서 맥북 트랙패드 쓸 때는 정방향, 마우스를 연결해서 쓸 때는 역방향이 되도록 해당 앱으로 조작해야 한다.


Spectacle

  • 용도: 화면 분할
  • 설치 방법: Spectacle Download
  • 세부 설정: 로그인 시 Spectacle이 런치될 수 있도록 설정한다.

참고 복잡한 화면 분할은 잘 사용하지 않고, 오른쪽/왼쪽 양면 분할을 가장 많이 사용한다. 오른쪽: Alt + Cmd + -> 왼쪽: Alt + Cmd + <-


Dozer

  • 용도: 메뉴 막대 숨기기
  • 설치 방법: Dozer Download
  • 세부 설정: 로그인 시 Dozer가 런치될 수 있도록 설정한다.

참고 날짜, 시간 같은 기본 정보와 이것 저것 앱을 깔아서 사용하다보면 오른쪽 상단의 메뉴 막대가 여러 아이콘으로 가득 차 복잡해진다. Dozer를 사용하면 꼭 필요한 메뉴 아이콘 말고 모두 숨길 수 있어서 깔끔하다.


[Picture 1] Dozer를 도입한 메뉴 막대

설치하면 메뉴 막대 영역에 2개의 점이 생긴다. 2개의 점 기준으로 왼쪽은 숨길 아이콘, 오른쪽은 노출할 아이콘이다. 숨길 아이콘은 Cmd를 누른 상태로 마우스로 드래그 해 왼쪽 점 옆으로 옮기면 된다.
보통은 배터리 잔량, 와이파이 상태, 날짜/시간만 노출한다.


Karabiner

  • 용도: 키 매핑
  • 설치 방법: Karabiner Download
  • 세부 설정: 간혹 외장 키보드가 윈도우로 설정이 되어있어 배열이 맞지 않는 경우가 있다. 그때는 left_command -> left_option, left_option -> left_command 룰을 추가해주자.

GoodNotes

  • 용도: PDF 파일 Viewer
  • 설치 방법: App Store > GoodNotes 5 (legacy version)
  • 세부 설정: -

참고
기본 메모장을 메모로 쓰고 있어, GoodNotes를 메모장으로 쓰지는 않는다. 대신 PDF 스캔한 책을 보는 용도로 많이 쓴다. 형광팬칠, 메모 등을 할 수 있어서 좋다.


OpenLens

  • 용도: Kubernetes Management (Lens 무료 버전)
  • 설치 방법: OpenLens Download
  • 세부 설정: Extension을 추가로 깔아야 Lens와 동일한 환경으로 쓸 수 있다. 아래의 Extension들을 깔자.
    • openlens-node-pod-menu: node, pod 메뉴를 볼 수 있는 extension
    • lens-multi-pod-logs: 디플로이에 연결된 복수 개의 파드 로그를 볼 수 있는 extension
    • kube-resource-map: k8s 리소스 관계를 그림으로 보여주는 extension. Deploy, Statefulset, Daemonset, pod, service, ingress에서 사용 가능.

(Chrome Extension) Authenticator Extension

참고
Github 등 2차로 OTP 인증이 필요한 곳이 많은데 그때마다 핸드폰으로 손이 가면 흐름이 깨져서 최대한 PC에서 이용할 수 있는 OTP 앱을 찾다가 설치했다.


여기 밑에는 쓰고 싶은 앱이다.


1Password

  • 용도: Password Management
  • 설치 방법: Appstore > 1Password
  • 세부 설정: -

참고
전 직장에서 사용했는데 DevOps가 사내 솔루션, 3rd-party 솔루션에 접속할 일이 많다보니 다양한 계정의 계정 정보를 따로 관리할 필요가 없어서 정말 편리하게 사용했다. 개인으로 라도 사용하고 싶었는데 개인도 유로인 솔루션이라서 고민하다가 구매하지 않았다.


인텔리제이 세부 설정

  • 사용 폰트: D2Coding (12~13)
  • 사용 테마: Atom One Dark (Material Theme 설치)
  • 사용 플러그인:
    • Atom Material Icons
    • CodeGlance Pro
    • Key Promoter X
    • Kubernetes
    • Material Theme UI
    • Pokemon Progress
    • Rainbow Brackets Lite
    • Terraform and HCL
    • 그외 언어 support template은 필요할 때 마다 추가
  • 마우스 휠로 폰트 조절: Editor > General > Mouse Control > Change font size Commond+Mouse Wheel in:

OpenLens가 있는데 인텔리제이에 쿠버네티스 플러그인을 깔 필요가 있을까 했는데 깔아보니 엄청 편하다. UI로 yaml을 생성하고 Describe하는 기능을 잘 쓰고 있다.


[Picture 2] Kubernetes in Intellij

맥 설정