自宅 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 を進めればわかりますが、手順としては、
- system-upgrade-controller を Kubernetes にインストール
- 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 を記載します。