macOS용 필수 DevOps 도구

발행: (2026년 1월 10일 오전 09:43 GMT+9)
9 분 소요
원문: Dev.to

Source: Dev.to

번역을 진행하려면 번역이 필요한 전체 텍스트를 제공해 주시겠어요?
코드 블록, URL 및 마크다운 형식은 그대로 유지하면서 내용만 한국어로 번역해 드리겠습니다.

소개

macOS는 NeXTSTEP에서 유래했으며 Mach 기반의 XNU 커널 위에 구축되었습니다. Darwin 사용자 영역은 친숙한 POSIX 도구와 함께 BSD 기반 Unix 환경을 제공하고, launchd와 같은 macOS 전용 추가 기능도 포함합니다. 이러한 Unix 유산 덕분에 많은 Linux 중심의 클라우드 및 컨테이너 도구가 macOS에서도 최소한의 차이만으로 안정적으로 실행됩니다.

왜 추가 단계가 필요한가?
macOS는 BSD 스타일 유틸리티(grep, sed, awk, …)를 기본으로 제공합니다. Linux용으로 작성된 스크립트는 동작이 다르거나 완전히 실패할 수 있습니다. 아래 단계에서는 GNU 대체품과 일반적인 명령줄 도구 세트를 설치하여 스크립트가 Linux, macOS, 그리고 Windows MSYS2 환경에서 일관되게 동작하도록 합니다.

Overview of the Tools

ToolCommand(s)Description
Terraformterraform클라우드 인프라를 프로비저닝합니다 (HashiCorp).
AWS CLIawsAmazon Web Services와 상호 작용합니다.
okta‑aws‑cliokta-aws-cliOkta를 통해 임시 IAM 자격 증명을 얻습니다.
Kubernetes CLIkubectlKubernetes 제어 플레인과 상호 작용합니다.
HelmhelmKubernetes 애플리케이션을 위한 패키지 관리자.
KustomizekustomizeKubernetes 리소스를 위한 패치 기반 구성.
HelmfilehelmfileHelm 차트 배포를 위한 선언적 사양 (템플릿 및 패치 지원).
Krewkubectl krewkubectl용 플러그인 관리자.
Corretto (OpenJDK)java, javac, jar, keytoolAmazon의 OpenJDK 배포판.
Vaultvault시크릿(토큰, 비밀번호, 인증서, 키)의 안전한 저장 및 접근 제어.
Other utilitiesbc, curl, git, jq, zsh, …자주 사용되는 GNU 도구 및 셸.

전제 조건

Xcode 명령줄 도구 설치

xcode-select --install

Homebrew 설치

URL="https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh"
/bin/bash -c "$(curl -fsSL $URL)"

핵심 GNU 유틸리티 설치

이 명령들은 일반적인 도구(grep, sed, tar 등)의 GNU 버전을 제공하며, Linux에서 사용하는 것과 동일하게 동작합니다.

brew install \
  autoconf \
  bash \
  bc \
  binutils \
  coreutils \
  curl \
  diffutils \
  ed \
  findutils \
  flex \
  gawk \
  git \
  gnu-indent \
  gnu-sed \
  gnu-tar \
  gnu-which \
  gpatch \
  grep \
  gzip \
  jq \
  less \
  m4 \
  make \
  nano \
  screen \
  watch \
  wdiff \
  wget \
  zip \
  zsh

GNU 쉘을 시스템에 사용할 수 있게 만들기

echo "$(brew --prefix)/bin/bash" | sudo tee -a /etc/shells
echo "$(brew --prefix)/bin/zsh"  | sudo tee -a /etc/shells

기본 쉘 선택하기

# GNU Bash 사용
chsh -s "$(brew --prefix)/bin/bash"

# 또는 GNU Zsh 사용
chsh -s "$(brew --prefix)/bin/zsh"

팁: 스크립트를 작성할 때는 env shebang을 사용하여 스크립트가 시스템에 기본 제공되는(BSD) 버전이 아니라 PATH에 있는 GNU 버전을 사용하도록 하세요.

# Bash shebang
#!/usr/bin/env bash

# Zsh shebang
#!/usr/bin/env zsh

GNU/Keg‑only 바이너리를 PATH에 추가하기

Homebrew로 설치된 GNU 유틸리티는 keg‑only 위치(예: …/opt/coreutils/libexec/gnubin)에 존재합니다. 이를 쉘 시작 파일(~/.bash_profile, ~/.zshrc 등)에 추가하세요.

# -------------------------------------------------
# Add this function to your startup script
# -------------------------------------------------
update_homebrew_path() {
  local BREW_PREFIX GNU_PATHS KEG_PATHS COMBINED_PATHS DEDUPE_SCRIPT

  # Bail out if Homebrew isn’t available
  command -v brew >/dev/null 2>&1 || return

  BREW_PREFIX="$(brew --prefix)"

  # All GNU “gnubin” directories (coreutils, findutils, gawk, …)
  GNU_PATHS=$(printf "%s:" "${BREW_PREFIX}/opt/"*"/libexec/gnubin")

  # Directories of keg‑only binaries (e.g., `krew`, `helmfile`)
  KEG_PATHS=$(
    brew info --installed --json=v1 \
      | jq -r 'map(select(.keg_only == true)) | .[].name' \
      | while read -r PKG; do
          [[ -d "${BREW_PREFIX}/opt/${PKG}/bin" ]] && printf "%s:" "${BREW_PREFIX}/opt/${PKG}/bin"
        done
  )

  COMBINED_PATHS="${GNU_PATHS}${KEG_PATHS}"
  DEDUPE_SCRIPT='print join ":", grep { ! $seen{$_}++ } split /:/, shift'

  perl -e "${DEDUPE_SCRIPT}" "${COMBINED_PATHS}" | sed 's/^://; s/:$//'
}

# Export the new PATH
NEW_PATHS="$(update_homebrew_path)"
export PATH="${NEW_PATHS}:${PATH}"

함수를 추가한 뒤, 쉘을 다시 로드하거나 source ~/.zshrc(또는 해당 파일) 명령을 실행하세요.

클라우드‑프로비저닝 및 쿠버네티스 툴체인 설치

# AWS CLI & Okta helper
brew install awscli
brew install okta-aws-cli

# HashiCorp tools
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
brew install hashicorp/tap/vault

# Kubernetes CLI
brew install kubernetes-cli   # provides `kubectl`

# Helm (package manager)
brew install helm

# Java (Amazon Corretto 17)
brew tap homebrew/cask-versions
brew install --cask corretto17

# Helmfile & Kustomize
brew install helmfile
brew install kustomize

# Optional: kubectl plugin manager
brew install krew

# Miscellaneous utilities
brew install jq

설치 확인

terraform --version
vault --version
kubectl version --client
helm version
kustomize version
helmfile version
java --version
aws --version
okta-aws-cli --version
jq --version

각 명령이 오류 없이 버전 정보를 출력하면, 툴체인이 사용 준비가 된 것입니다.

최종 생각

  • macOS의 BSD 기반 유틸리티는 미묘한 스크립트 오류를 일으킬 수 있으며, GNU 대체품을 설치하면 대부분의 호환성 문제를 해결할 수 있습니다.
  • PATH 앞쪽에 GNU 도구를 배치하면 스크립트가 올바른 바이너리를 선택합니다.
  • 동일한 Homebrew 명령은 Linux(Linuxbrew)와 Windows MSYS2에서도 작동하여 진정한 크로스‑플랫폼 개발 환경을 제공합니다.

행복한 프로비저닝! 🚀

버전

aws --version
okta-aws-cli --version

Helm 플러그인

Helm은 플러그인으로 확장할 수 있습니다. 아래는 몇 가지 인기 있는 플러그인입니다. 특히 helm‑diff를 추천하는데, 이 플러그인은 애플리케이션을 설치하거나 업그레이드하기 전에 변경될 리소스를 보여줍니다.

helm plugin install https://github.com/databus23/helm-diff
helm plugin install https://github.com/aslafy-z/helm-git
helm plugin install https://github.com/hypnoglow/helm-s3.git
helm plugin install https://github.com/jkroepke/helm-secrets

Kubernetes Krew (플러그인 매니저)

Krew는 kubectl에 플러그인 시스템을 추가합니다. 아래 스크립트를 사용하여 설치하십시오.

#!/usr/bin/env bash

main() {
  install_krew
  # Add this to your startup scripts
  export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
}

install_krew() {
  TEMP_DIR=$(mktemp -d)
  pushd "$TEMP_DIR"

  OS="$(uname | tr '[:upper:]' '[:lower:]')"
  ARCH="$(
    uname -m \
    | sed -e 's/x86_64/amd64/' \
          -e 's/\(arm\)\(64\)\?.*/\1\2/' \
          -e 's/aarch64$/arm64/'
  )"

  KREW="krew-${OS}_${ARCH}"
  PKG="/${KREW}.tar.gz"
  URL_PATH="kubernetes-sigs/krew/releases/latest/download/$PKG"
  URL="https://github.com/$URL_PATH"

  curl -fsSLO "$URL"
  tar zxvf "${KREW}.tar.gz"
  ./"${KREW}" install krew

  popd
  rm -rf "$TEMP_DIR"
}

main

설치 후, 스크립트에 표시된 대로 Krew 바이너리 디렉터리가 PATH에 포함되어 있는지 확인하십시오.

Homebrew Brewfile

Homebrew는 Brewfile이라고 하는 단일 매니페스트 파일에서 패키지 목록을 설치할 수 있습니다. 다음 내용을 포함하는 Brewfile 파일을 생성하십시오:

# Common Core Commands
brew 'autoconf'
brew 'bash'
brew 'bc'
brew 'binutils'
brew 'coreutils'
brew 'curl'
brew 'diffutils'
brew 'ed'
brew 'findutils'
brew 'flex'
brew 'gawk'
brew 'git'
brew 'gnu-indent'
brew 'gnu-sed'
brew 'gnu-tar'
brew 'gnu-which'
brew 'gpatch'
brew 'grep'
brew 'gzip'
brew 'jq'
brew 'less'
brew 'm4'
brew 'make'
brew 'nano'
brew 'screen'
brew 'watch'
brew 'wdiff'
brew 'wget'
brew 'zip'
brew 'zsh'

# AWS Tools
brew 'awscli'
brew 'okta-aws-cli'

# HashiCorp
tap 'hashicorp/tap'
brew 'hashicorp/tap/terraform'
brew 'hashicorp/tap/vault'

# Kubernetes
brew 'kubernetes-cli'
brew 'helm'
brew 'kustomize'
brew 'helmfile'

# Java
tap 'homebrew/cask-versions'
cask 'corretto17'

# Other
brew 'jq'

Brewfile 설치

brew bundle --verbose

설치 후 단계

  1. PATH 업데이트 – GNU 유틸리티와 keg‑only 명령어들의 디렉터리를 추가하여 macOS 기본값보다 우선하도록 합니다.
  2. 새 쉘 등록 – 새로 설치된 zshbash 바이너리 경로를 /etc/shells에 추가하여 로그인 쉘로 선택할 수 있게 합니다.

이제 Helm 플러그인, Kubernetes Krew, 그리고 재현 가능한 Homebrew 패키지 세트를 갖춘 완전한 개발 환경이 준비되었습니다.

Back to Blog

관련 글

더 보기 »

안녕, 뉴비 여기요.

안녕! 나는 다시 S.T.E.M. 분야로 돌아가고 있어. 에너지 시스템, 과학, 기술, 공학, 그리고 수학을 배우는 것을 즐겨. 내가 진행하고 있는 프로젝트 중 하나는...