プライベートネットワークでProxmox+KubernetesクラスタをIaC化する
業務上、kubernetesクラスタに触れることが多くなったので、改めて、勉強がてら自宅でKubernetesクラスタの構築、IaC化を行ってみました。
出来上がった構成
Proxmoxをベースに、Kubernetesクラスタを構築しました。
各ノードは省電力だけどハイパワーなN100を利用しました。
N100は4コア4スレッドで、ハイパースレッディングは対応していません。なのでProxmoxのVMで使えるコア数は4コア×3台なので、12コアということになります。
あらかじめ、1つのノードにTerraform Cloud Agentをインストールしました。
普通、terraform cloudでplanやapplyを行う時は、terraform cloudのサーバーに対して通信します。
しかし、今回は自宅のプライベートネットワーク内で完結させるために、Terraform Cloud Agentをインストールしました。
これにより、Terraform Proxmox ProviderやKubernetes ProviderのAuthenticationがローカルアドレスで行うことができるようになります。
KurbernetesクラスタはTalos Linuxを利用して構築されています。
デフォルトでKubernetesクラスタ構築に必要なコンポーネントが自動的にインストールされるので、IaCが簡単になるのでTalos Linuxを選択しました。
構築
Terraform Cloudアカウントの作成
Proxmoxクラスタの構築
Proxmoxのインストール
N100にProxmoxをインストールします。
ISOイメージを使ってブータブルUSBメモリを作成しました。
使ったソフトウェア(Windows)
Proxmoxの設定
今回はスタティックにIPを設定しました。それ以外はデフォルトの設定で進めていきました。
gitのインストール
proxmoxホストいずれか1台にgitをインストールします。
Terraform Cloud Agentが動く際、必要になってくるので、あらかじめインストールしておきます。
インストールしていないと、terraform plan時とかにエラーになりました。
apt install git -y
Terraform Cloud Agentのインストール
Proxmoxホストいずれか1台にTerraform Cloud Agentをインストールします。
マシンが再起動してもいいようにsystemdでservice unit化しておきます。
Terraform plan & apply
実際に使用したコードです
まとめ
N100マシンは省電力で動作音もあまりしないので、机の横に鎮座していてもあまり気になりませんでした。
おうちに気軽に壊したりできる環境があるといろいろと捗りそうです。
Discussion