Pulumi + NixOS + Podman kube-play = 100% 宣告式部署。

Pulumi 的範圍只到基礎設施,系統以上的狀態管理通常靠 Ansible,但 Ansible 實在有點慢,而且 playbook 看起來不夠直覺,所以這次嘗試改用 NixOS,系統設定和套件都是宣告式,再用 Kubernetes 或 Podman 搭配 Kubernetes resource YAML。

建立 qcow 映像檔

  • qcow.nix: nixos-generate 使用的格式檔
  • pulumi.ts: Oracle Cloud Pulumi 設定檔
  • configuration.nix: 自訂的 NixOS 設定檔
nix-shell -p nixos-generators --run 'nixos-generate --format-path qcow.nix -c configuration.nix -o result'
cp result/nixos.qcow2 .
rm result

Oracle Cloud 搭配 Pulumi

Instance

  • Type: VM.Standard.A1.Flex
  • CPU: 1 vCPU
  • Memory: 6 GB
  • Boot Disk Size: 50GB
  • Launch Mode: PARAVIRTUALIZED

Custom Image

  • Firmware: UEFI
  • Launch Mode: PARAVIRTUALIZED
  • Boot Volume Type: PARAVIRTUALIZED
  • Local Data Volume Type: PARAVIRTUALIZED
  • Remote Data Volume Type: PARAVIRTUALIZED

部署容器服務

podman kube play "<URL>"