macOS 必备 DevOps 工具

发布: (2026年1月10日 GMT+8 08:43)
8 分钟阅读
原文: Dev.to

Source: Dev.to

请提供您希望翻译的正文内容,我将为您翻译成简体中文并保留原有的格式、Markdown 语法以及技术术语。

介绍

macOS 的根源可以追溯到 NeXTSTEP,并基于 Mach 派生的 XNU 内核构建。Darwin 用户空间提供了基于 BSD 的 Unix 环境,配备熟悉的 POSIX 工具,以及 macOS 特有的扩展,如 launchd。正是这种 Unix 传统,使得许多面向 Linux 的云和容器工具在 macOS 上也能可靠运行,差异仅限于最小的细节。

为什么需要额外的步骤?
macOS 附带 BSD 风格的实用程序(grepsedawk,……)。为 Linux 编写的脚本可能表现不同,甚至完全失败。下面的步骤会安装 GNU 等价工具以及一套通用的命令行工具,从而使脚本在 Linux、macOS 和 Windows MSYS2 环境中表现一致。

工具概览

工具命令描述
Terraformterraform通过 HashiCorp 提供云基础设施。
AWS CLIaws与亚马逊 Web 服务交互。
okta‑aws‑cliokta-aws-cli通过 Okta 获取临时 IAM 凭证。
Kubernetes CLIkubectl与 Kubernetes 控制平面交互。
HelmhelmKubernetes 应用的包管理器。
Kustomizekustomize基于补丁的 Kubernetes 资源配置。
Helmfilehelmfile用于部署 Helm Chart 的声明式规范(支持模板化和补丁)。
Krewkubectl krewkubectl 的插件管理器。
Corretto (OpenJDK)java, javac, jar, keytool亚马逊的 OpenJDK 发行版。
Vaultvault用于机密(令牌、密码、证书、密钥)的安全存储和访问控制。
Other utilitiesbc, curl, git, jq, zsh, …常用的 GNU 工具和 Shell。

前置条件

安装 Xcode 命令行工具

xcode-select --install

安装 Homebrew

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

安装核心 GNU 实用程序

这些命令会为您提供常用工具(如 grepsedtar)的 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 Shell 可供系统使用

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

选择默认 Shell

# 使用 GNU Bash
chsh -s "$(brew --prefix)/bin/bash"

# 或使用 GNU Zsh
chsh -s "$(brew --prefix)/bin/zsh"

提示: 编写脚本时,使用 env shebang,这样脚本会从您的 PATH 中获取 GNU 版本,而不是系统自带的(BSD)版本。

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

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

添加 GNU/Keg‑only 二进制到 PATH

Homebrew 安装的 GNU 实用程序位于 keg‑only 位置(例如 …/opt/coreutils/libexec/gnubin)。将它们加入到你的 shell 启动文件(~/.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}"

添加函数后,重新加载你的 shell 或运行 source ~/.zshrc(或相应的文件)。

安装云供应与 Kubernetes 工具链

# 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

如果每个命令都打印出版本信息且没有错误,工具链即可使用。

Final Thoughts

  • macOS 的 BSD 基础实用程序可能导致细微的脚本故障;安装 GNU 等价工具可以消除大多数不兼容问题。
  • 将 GNU 工具放在 PATH 的前面,可确保脚本使用正确的二进制文件。
  • 相同的 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. 注册新 shell – 将新安装的 zshbash 二进制文件的路径追加到 /etc/shells,以便它们可以被选为登录 shell。

现在,你已经拥有了一个功能完整的开发环境,包含 Helm 插件、Kubernetes Krew,以及可复现的 Homebrew 包集合。

Back to Blog

相关文章

阅读更多 »

你好,我是新人。

嗨!我又回到 STEM 的领域了。我也喜欢学习能源系统、科学、技术、工程和数学。其中一个项目是…