手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 Helm の基本設定 – Kubernetes アプリケーション配備の CLI を整える

Ubuntu 26.04 から Kubernetes を操作する場合、kubectl だけでなく helm を使う場面が多くなります。Helm は、複数の Kubernetes manifest を Chart としてまとめ、values で環境差分を与えながら release として配備するための CLI です。

この記事では、Ubuntu 26.04 に Helm CLI を導入し、version、repository、Chart、release、values、helm-diff plugin、kubeconfig との関係を整理します。Helm そのものを Kubernetes と混同せず、Kubernetes アプリケーション配備の道具として位置づけます。

Helm は Kubernetes アプリケーション配備の道具である

Helm は Kubernetes クラスタを作る道具ではありません。Kubernetes クラスタがあり、kubeconfig で接続できる状態を前提に、その上へアプリケーションやコンポーネントを配備するための道具です。

領域役割
kubectlKubernetes API を直接操作する基本 CLI
HelmChart と values を使って Kubernetes リソース群を release として管理する
Terraformクラウドや基盤リソース、場合によっては Kubernetes resource も宣言的に管理する
AnsibleOS やサーバー内部の設定、CLI 導入、ファイル配置などを管理する
kubeconfigHelm がどの Kubernetes cluster / context へ接続するかを決める

CPU architecture を確認する

Helm の公式 archive は OS と CPU architecture ごとに分かれています。Ubuntu 26.04 を x86_64 で動かしているのか、arm64 / aarch64 で動かしているのかを確認します。

コマンド
uname -m
dpkg --print-architecture

x86_64 / amd64 なら linux-amd64、aarch64 / arm64 なら linux-arm64 を使います。

Helm を /usr/local/bin に導入する

ここでは Helm 3.19.0 の公式 archive を取得し、checksum を確認してから /usr/local/bin/helm に配置します。パッケージ管理に任せる方法もありますが、特定バージョンを固定したい場合は公式 archive の配置が分かりやすいです。

コマンド
helm_version=3.19.0
helm_arch=linux-arm64
cd /tmp
curl -fsSLO "https://get.helm.sh/helm-v${helm_version}-${helm_arch}.tar.gz"
curl -fsSLO "https://get.helm.sh/helm-v${helm_version}-${helm_arch}.tar.gz.sha256sum"
sha256sum -c "helm-v${helm_version}-${helm_arch}.tar.gz.sha256sum"
tar xf "helm-v${helm_version}-${helm_arch}.tar.gz"
sudo install -o root -g root -m 0755 "${helm_arch}/helm" /usr/local/bin/helm

helm_arch は環境に合わせます。x86_64 / amd64 環境なら linux-amd64、arm64 / aarch64 環境なら linux-arm64 です。

インストール結果を確認する

導入後は、Helm のバージョンと実行パスを確認します。複数の Helm が入っていると PATH の順序で別 binary を実行することがあります。

コマンド
helm version --short
which helm

bash completion を有効化する

管理端末として使う場合、補完が効くと chart 名、release 名、subcommand の確認が楽になります。全ユーザー共通にするなら /etc/profile.d に配置します。

コマンド
sudo tee /etc/profile.d/u70-helm.sh >/dev/null <<'EOF'
if [ -x "/usr/local/bin/helm" ]; then
    source <("/usr/local/bin/helm" completion bash)
fi
EOF
. /etc/profile.d/u70-helm.sh

kubeconfig と context を確認する

Helm は Kubernetes API に接続して release を管理します。そのため、Helm の前に kubeconfig と current context が正しいことを確認します。ここを確認しないまま helm install すると、意図しない cluster や namespace に配備する危険があります。

コマンド
kubectl config current-context
kubectl config get-contexts
kubectl get namespace

repository と Chart を確認する

Helm では、Chart repository を追加し、Chart を検索し、values を指定して release として配備します。最初は install ではなく search と template / dry-run で内容を確認する方が安全です。

コマンド
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm search repo bitnami/nginx
helm show values bitnami/nginx | sed -n '1,80p' 
用語意味
ChartKubernetes manifest のテンプレートと metadata をまとめたもの
RepositoryChart を配布する場所
ReleaseChart を cluster に配備した単位
ValuesChart の変数。環境差分や設定値を渡す
Namespace配備先の Kubernetes namespace

dry-run で差分を確認する

Helm は便利ですが、実際には複数の Kubernetes resource をまとめて作成・変更します。いきなり apply するのではなく、--dry-runhelm template で生成される manifest を確認します。

コマンド
helm template example-nginx bitnami/nginx --namespace example
helm install example-nginx bitnami/nginx --namespace example --create-namespace --dry-run

実際に配備する前に、どの Service、Deployment、ConfigMap、Secret が作られるのかを確認する習慣を付けると、運用時の見通しが良くなります。

helm-diff plugin を入れる

既存 release を更新する場合、何が変わるのかを事前に確認できることが重要です。helm-diff plugin を使うと、upgrade 前に差分を確認できます。

コマンド
mkdir -p ~/.cache/helm/tmp
TMPDIR=~/.cache/helm/tmp helm plugin install https://github.com/databus23/helm-diff
helm plugin list

plugin が壊れている場合は、plugin directory は存在するのに binary がない状態になることがあります。その場合は該当 plugin を削除して入れ直します。

コマンド
rm -rf ~/.local/share/helm/plugins/helm-diff
TMPDIR=~/.cache/helm/tmp helm plugin install https://github.com/databus23/helm-diff

Helm と Terraform / Ansible の責務分離

Helm は Kubernetes 上のアプリケーション配備に向いています。一方で、クラスタ外の基盤リソース、OS 設定、CLI の導入まで Helm で扱おうとすると責務が崩れます。

対象主に使う道具
Helm CLI の導入Ansible や手順化された OS 管理
Kubernetes cluster の作成kubeadm、クラウドサービス、Terraform など構成次第
Kubernetes アプリケーション配備Helm、kubectl、GitOps ツール
クラウド LB、DNS、IAMTerraform などの IaC ツール
OS パッケージ、証明書、systemdAnsible

運用上の注意点

項目注意点
context作業前に kubeconfig の current context を確認する
namespacerelease をどの namespace に置くか明示する
values環境差分を values file として管理する
diffupgrade 前に差分を確認する
rollbackrelease history と rollback 方針を確認する
Secretvalues に機密情報を平文で置かない

まとめ

Ubuntu 26.04 に Helm を導入すると、Kubernetes 上のアプリケーションやコンポーネントを Chart と release の単位で管理できます。ただし、Helm は Kubernetes クラスタそのものを作る道具ではなく、kubeconfig で接続できる cluster を前提に動く CLI です。

Helm を使う場合は、version、architecture、kubeconfig、repository、values、namespace、diff を確認し、Terraform や Ansible と役割を分けることが重要です。特に本番環境では、helm installhelm upgrade の前に、生成される manifest と差分を確認する流れを作るべきです。

参考書籍
参考書籍
Advanced Ubuntu Administration and Management Best Practices

Ubuntu Server の運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

次に読む記事

Ubuntu 26.04 サーバー管理ガイド
Ubuntu 26.04 Helm の基本設定 – Kubernetes アプリケーション配備の CLI を整える

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る