🐥

プライベートネットワークでProxmox+KubernetesクラスタをIaC化する

に公開

業務上、kubernetesクラスタに触れることが多くなったので、改めて、勉強がてら自宅でKubernetesクラスタの構築、IaC化を行ってみました。

出来上がった構成

構成図
実機
proxmox
kubernetes

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アカウントの作成

https://zenn.dev/erueru_tech/articles/6107d2bf6c4e6c

Proxmoxクラスタの構築

Proxmoxのインストール

N100にProxmoxをインストールします。
https://www.proxmox.com/en/downloads/proxmox-virtual-environment

ISOイメージを使ってブータブルUSBメモリを作成しました。
使ったソフトウェア(Windows)
https://forest.watch.impress.co.jp/library/software/rufus/

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化しておきます。
https://support.hashicorp.com/hc/en-us/articles/14383778881043-How-to-run-tfc-agent-binary-as-a-Service-with-Systemd

Terraform plan & apply

実際に使用したコードです
https://github.com/0hag1/terraform-proxmox-talos-example

まとめ

N100マシンは省電力で動作音もあまりしないので、机の横に鎮座していてもあまり気になりませんでした。
おうちに気軽に壊したりできる環境があるといろいろと捗りそうです。

参考文献

GitHubで編集を提案

Discussion