[2023-12 冬休みの自由研究 番外編]Minisforum x ProxmoxでおうちKubernetesを組む

Proxmoxイメージを焼く
USBメモリは家に転がっていた適当なものを使う
そのうちISOイメージ用に数GBのUSBメモリを大量入荷したい
以下を参考にブートイメージを作成する

USBメモリの特定方法
- ディスク未接続の状態で以下のコマンドを実行する
lsblk > ~/before.txt
- ディスクを接続した状態で以下のコマンドを実行する
lsblk > ~/after.txt
- 以下のコマンドで表示されたディスクが対象
diff ~/before.txt ~/after.txt
25a26,27
> sdc 8:32 1 248M 0 disk
> └─sdc1 8:33 1 248M 0 part /media/nnaka2992/proxmox

ISOイメージのダウンロード
以下から最新のproxmox veのISOイメージをダウンロードする。
今回利用するのは8.1-1
ISOイメージをダウンロードする。
通信状況や回線の強さに寄るものの数分ほどかかる
curl -O https://enterprise.proxmox.com/iso/proxmox-ve_8.1-1.iso
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1232M 100 1232M 0 0 5536k 0 0:03:47 0:03:47 --:--:-- 11.1M
checksumもチェックする
echo "9018a17307ad50eb9bf32a805d0917d621499363ef87b0b477332ed9f9d7dcc1 proxmox-ve_8.1-1.iso" | sha256sum -c -
proxmox-ve_8.1-1.iso: OK

ISOイメージを焼く
USBメモリの特定方法で特定したUSBメモリの名前と
ISOイメージのダウンロードでダウンロードしたISOイメージを利用してUSBメモリにISOイメージを焼く。
以下のコマンドのif=path/to/proxmox-ve_8.1-1.iso
とof=/dev/usb
を適切なものに修正して実行する
sudo dd bs=1M conv=fdatasync if=path/to/proxmox-ve_8.1-1.iso of=/dev/usb
1232+1 レコード入力
1232+1 レコード出力
1292605440 bytes (1.3 GB, 1.2 GiB) copied, 0.735306 s, 1.8 GB/s

Proxmox をインストールする
CLI インストールしました
- Term of Useの承諾
- installディスクの選択
a. 今回は/dev/sda - 環境設定
a. Country: Japan
b. Timezone: Asia/Tokyo
c. Keyboard layout: U.S English - 認証関連情報の設定
a. Root password: *******
b. Confirm root password: *******
c. Administrator email: ******* - IP addres関連情報の設定
a. Management interface: en01
b. Hostname: pve.local
c. IP address(CIDR): 192.168.xxx.xxx
d. Gateway address: 192.168.xxx.xxx
e. DNS server address: 192.168.xxx.xxx

WebUIへの接続
Install後にproxmox端末を起動するとhttps://${5.cで設定したIP}:8006/
にアクセスするよう指示があるので別端末からアクセスする。
このとき自己証明書を利用しているため警告が出るが無視する。
ログイン情報は以下を利用する
- username: root
- password: 4.aで設定したパスワード
正常にログインできると以下のような画面になる
今回は無料版を利用しているためサブスクリプションの警告は無視する。

Proxmoxの無償版リポジトリの設定
Proxmoxはデフォルトではリポジトリにエンタープライズ向けのリポジトリが設定されているようで、アップデートなどができないらしい。
以下を参考に無償版リポジトリを設定する
参考: Proxmox VEで無償版リポジトリを設定する
データセンター > pve > アップデート > リポジトリ
に移動する。
追加のボタンがあるので押下するとサブスクリプションが無いとエラーがでるが無視する。
デフォルトではリポジトリがEnterprise
になっているのでトグルを開き、No-Subscription
を選択し追加を押下する。
Proxmox VE用の更新が取得できるようになった。
画面下の方にエンタープライズ用のリポジトリ情報が残っているので無効化しておく。
(無効にしなくても問題なさそうに見えるものの、エラーが出るのは良くないので)
データセンター > pve > アップデート
に移動し再表示
(Refresh)を押下するとパッケージのアップデートが開始する。
続けてアップグレード
も実行する

ProxmoxのGUIをインターネットに公開する
Cloudflare Argo Tunnelを利用する

Cloudflare Argo tunnel クライアントをインストールする
curl -LO https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
chmod +x cloudflared-linux-amd64
mv cloudflared-linux-amd64 /usr/bin/cloudflared
cloudflared -v
cloudflared version 2023.10.0 (built 2023-10-31-1234 UTC)

クライアントの設定をする
cloudflaredクライアントでログインする
cloudflared tunnel login
Please open the following URL and log in with your Cloudflare account:
https://dash.cloudflare.com/argotunnel?*****
ブラウザでURLを開いてログインするとシェルで以下のようなメッセージが表示される
Leave cloudflared running to download the cert automatically.
You have successfully logged in.
If you wish to copy your credentials to a server, they have been saved to:
/root/.cloudflared/cert.pem
proxmoxという名前でトンネルを作成する
cloudflared tunnel create proxmox
Tunnel credentials written to /root/.cloudflared/**********.json. cloudflared chose this file based on where your origin certificate was found. Keep this file secret. To revoke these credentials, delete the tunnel.
Created tunnel proxmox with id **********
作成したトンネルとサービスの紐付けを行う設定を記述する。
nano /root/.cloudflared/config.yml
tunnel: ${tunnel_id}
credentials-file: /root/.cloudflared/${tunnel_id}.json
ingress:
- hostname: proxmox.${your_domain}
service: https://localhost:8006
originRequest:
disableChunkedEncoding: true
noTLSVerify: true
- service: http_status:404
作成した設定ファイルを元にDNSを設定する
cloudflared tunnel route dns proxmox proxmox.nnaka2992.dev
2024-01-03T05:31:28Z INF Added CNAME proxmox.${your_domain} which will route to this tunnel tunnelID=${tunnel_id}
参考:

トンネルをサービスとして登録する
cloudflared service install
2024-01-03T08:32:21Z INF Using Systemd
2024-01-03T08:32:22Z INF Linux service for cloudflared installed successfully
systemctl start cloudflared
systemctl status cloudflared
● cloudflared.service - cloudflared
Loaded: loaded (/etc/systemd/system/cloudflared.service; enabled; preset: >
Active: active (running) since Wed 2024-01-03 17:32:22 JST; 2min 42s ago
Main PID: 20214 (cloudflared)
Tasks: 19 (limit: 74336)
Memory: 17.5M
CPU: 317ms
CGroup: /system.slice/cloudflared.service
└─20214 /usr/bin/cloudflared --no-autoupdate --config /etc/cloudfl>
後略

ブラウザからアクセスする
アクセスできた

SSO認証を追加する
CloudflareのコンソールからHome > Zero Trust > Access > Applications
を開き、Add an identity provider (IdP)
の欄にあるAdd an IdP
から任意のIdPを登録する
続けてアプリケーションも追加する