自宅Kubernetesのバージョンを自動更新する

system-upgrade-controller を導入する


Posted on Sat, Jul 27, 2024
Tags kubernetes

自宅 Kubernetes の構築と運用

自宅 Kubernetes について、かつて kubeadm で管理をしていたのですが、数年前からよりインストールが簡単な K3s を使って構築し直しました。

K3s は CNCF のプロジェクトとなっており、下記のコマンドだけで Kubernetes の構築をおこなうことができます。

curl -sfL https://get.k3s.io | sh - 

自宅 Kubernetes は 3ノード(1ノード control plane、2ノード worker)構成なのですが、それぞれに k3s をインストールし、control planeノードで生成された node token を使って、worker を起動するだけ で Kubernetes クラスタを構築できます。

これを ansible playbook にして自宅の Kubernetes は運用しています。

system-upgrade-controller で Kubernetes のアップグレード

さて、Kubernetes を運用していると必ず生じる課題がバージョンアップが面倒くさいことです。 これは Kubernetes がまだ発展途上のソフトウェアで脆弱性対応や機能追加のアップデートが日々行われているためとなります。

そこで rancher/system-upgrade-controller を導入し、Kubernetes の stable バージョンを維持できるようにします。

Automated Upgrades | K3s を進めればわかりますが、手順としては、

  1. system-upgrade-controller を Kubernetes にインストール
  2. upgrade.cattle.io/v1 の Plan resource を定義して Kubernetes のバージョンをアップグレードさせる

という手順になります。

注意点として、1. は、

kubectl apply -f https://github.com/rancher/system-upgrade-controller/releases/latest/download/system-upgrade-controller.yaml

でインストールできるのですが、Plan resource を反映する前に、CRD を反映する必要があります。

kubectl apply -f https://github.com/rancher/system-upgrade-controller/releases/latest/download/crd.yaml

また、リポジトリに記載されているように、system-upgrade-controllerは強い権限が必要なため、Kubernetes がインターネット上からアクセスできる等の場合は、セキュリティに万全を期して運用しましょう。

実際に導入した PR

上記の作業を ansible で適用しただけですが、参考までに PR を記載します。

Share with


See Also