手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 Kubernetes 管理ツールのインストール – kubectl / Helm / calicoctl の使い分け

Ubuntu 22.04 で Kubernetes クラスターを運用する場合、ノード構築の作業と、構築後にクラスターを操作する管理ツールの準備は分けて考えます。kubectlHelmcalicoctl は似た場所で使いますが、担当する範囲は同じではありません。

この記事では、Ubuntu 22.04 の既存環境を保守する前提で、管理端末またはコントロールプレーン上に Kubernetes 管理ツールを導入し、kubeconfig、権限、Calico 確認の入口を確認します。

関連する記事
この記事で確認すること
  • 管理端末に入れるツールの役割
  • kubectl の導入と kubeconfig
  • Helm の導入と値ファイル管理
  • calicoctl が必要になる場面
  • クラスター接続と権限の確認
参考
書籍
参考書籍

Kubernetes完全ガイド 第2版

Kubernetes の仕組み、リソース、ネットワーク、運用観点を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

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

管理ツールの役割を分ける

Kubernetes の管理ツールは、クラスターそのものを作るための設定とは役割が違います。まず、どのツールをどこで使うかを決めます。

  • kubectl は Kubernetes API を操作する基本ツール
  • Helm はアプリケーションをチャートと値ファイルで管理するツール
  • calicoctl は Calico 固有のリソースや状態を確認する補助ツール
  • 管理端末に入れるのか、コントロールプレーンに入れるのかを決める
  • 操作対象クラスターと kubeconfig の権限を混同しない

kubectl をインストールする

kubectl は Kubernetes API を操作するための基本ツールです。APT リポジトリを使う場合は、運用中のクラスターに合わせて Kubernetes の minor version を選びます。

KUBE_MINOR=v1.29
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL "https://pkgs.k8s.io/core:/stable:/${KUBE_MINOR}/deb/Release.key" | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
sudo chmod 0644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/${KUBE_MINOR}/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list >/dev/null
sudo chmod 0644 /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl
kubectl version --client

同じ管理端末で複数クラスターを扱う場合は、kubectl のバージョンだけでなく、kubeconfig の context 名も分かるようにしておきます。

kubeconfig を配置する

コントロールプレーン上で管理する場合は、/etc/kubernetes/admin.conf をユーザーの kubeconfig として配置することがあります。管理端末へ持ち出す場合は、ファイルの権限と配布経路に注意します。

mkdir -p ~/.kube
sudo cp /etc/kubernetes/admin.conf ~/.kube/config
sudo chown "$(id -u):$(id -g)" ~/.kube/config
chmod 0600 ~/.kube/config
kubectl config get-contexts
kubectl get nodes

kubectl の補完を設定する

日常的に操作する端末では、bash 補完と alias を用意しておくと確認作業が楽になります。

sudo apt-get install -y bash-completion
echo 'source <(kubectl completion bash)' >> ~/.bashrc
echo 'alias k=kubectl' >> ~/.bashrc
echo 'complete -o default -F __start_kubectl k' >> ~/.bashrc

補完設定を反映するには、シェルを開き直すか source ~/.bashrc を実行します。

Helm をインストールする

Helm は Kubernetes アプリケーションをチャートとして扱うためのツールです。ここでは APT リポジトリを追加して導入します。

HELM_BUILDKITE_APT_KEY_ID=DDF78C3E6EBB2D2CC223C95C62BA89D07698DBC6
sudo apt-get install -y curl gpg apt-transport-https
curl -fsSL https://packages.buildkite.com/helm-linux/helm-debian/gpgkey > "${TMPDIR:-/tmp}/helm.gpg"
test "$(gpg --show-keys --with-colons "${TMPDIR:-/tmp}/helm.gpg" | awk -F: '$1 == "fpr" {print $10}' | head -n 1)" = "${HELM_BUILDKITE_APT_KEY_ID}"
gpg --dearmor < "${TMPDIR:-/tmp}/helm.gpg" | sudo tee /usr/share/keyrings/helm.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/helm.gpg] https://packages.buildkite.com/helm-linux/helm-debian/any/ any main' | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list >/dev/null
sudo apt-get update
sudo apt-get install -y helm
helm version

Helm の使い方を確認する

Helm は便利ですが、手元で一度だけ変更すると後から状態を追いにくくなります。値ファイルを管理し、どの namespace に何を入れたかを確認できるようにします。

helm repo list
helm list -A
kubectl get ns
kubectl get deploy -A

calicoctl を使う場合

CNI に Calico を使っている場合、calicoctl は Calico 固有の API や状態確認に使います。すべての環境で必須ではありませんが、Calico の IP pool、BGP、policy を詳しく見る場合に役立ちます。

calicoctl はクラスターで稼働している Calico の version に合わせます。次の例では version を変数にして、実環境に合わせやすくしています。

CALICO_VERSION=v3.32.1
curl -L "https://github.com/projectcalico/calico/releases/download/${CALICO_VERSION}/calicoctl-linux-amd64" -o calicoctl
chmod +x calicoctl
sudo install -m 0755 calicoctl /usr/local/bin/calicoctl
calicoctl version

calicoctl の接続を確認する

Kubernetes datastore を使う構成では、DATASTORE_TYPE と kubeconfig を指定して確認します。コントロールプレーンや管理端末のどちらで実行する場合も、対象クラスターを間違えないことが重要です。

export DATASTORE_TYPE=kubernetes
export KUBECONFIG=~/.kube/config
calicoctl get nodes
calicoctl get ippools

基本動作を確認する

ツールを入れたら、クライアントの version だけでなく、実際に API へ接続できるか、対象クラスターが想定どおりかを確認します。

kubectl config current-context
kubectl get nodes -o wide
kubectl get pods -A
helm list -A

運用時に見るポイント

管理ツールを入れた後は、ツールの有無よりも、どの権限でどのクラスターを操作しているかを明確にします。複数クラスターを扱う環境では、context 名と namespace を確認する習慣が事故防止になります。

  • kubeconfig の保存場所と権限を確認する
  • context 名で本番、検証、開発を判別できるようにする
  • Helm の値ファイルをリポジトリで管理する
  • Calico の version と calicoctl の version を合わせる
  • 管理端末の認証情報を不要に広げない

まとめ

Ubuntu 22.04 の Kubernetes 管理端末では、kubectlHelmcalicoctl の役割を分けて導入します。kubectl は API 操作、Helm はアプリケーション管理、calicoctl は Calico 固有の確認に使います。

クラスター運用では、ツールのインストールよりも kubeconfig、context、namespace、権限範囲を明確にしておくことが重要です。Ubuntu 22.04 環境を保守する場合も、管理端末がどのクラスターを操作しているかを常に確認します。

関連する記事
Ubuntu 22.04 Kubernetes 管理ツールのインストール – kubectl / Helm / calicoctl の使い分け

コメントを残す

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

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

トップへ戻る