Open14

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

nnaka2992nnaka2992

Proxmoxイメージを焼く

USBメモリは家に転がっていた適当なものを使う

そのうちISOイメージ用に数GBのUSBメモリを大量入荷したい

以下を参考にブートイメージを作成する
https://pve.proxmox.com/wiki/Prepare_Installation_Media#_instructions_for_gnu_linux

nnaka2992nnaka2992

USBメモリの特定方法

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

ISOイメージのダウンロード

以下から最新のproxmox veのISOイメージをダウンロードする。
https://www.proxmox.com/en/downloads/proxmox-virtual-environment/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
nnaka2992nnaka2992

ISOイメージを焼く

USBメモリの特定方法で特定したUSBメモリの名前と
ISOイメージのダウンロード
でダウンロードしたISOイメージを利用してUSBメモリにISOイメージを焼く。

以下のコマンドのif=path/to/proxmox-ve_8.1-1.isoof=/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
nnaka2992nnaka2992

Proxmox をインストールする

CLI インストールしました

  1. Term of Useの承諾
  2. installディスクの選択
    a. 今回は/dev/sda
  3. 環境設定
    a. Country: Japan
    b. Timezone: Asia/Tokyo
    c. Keyboard layout: U.S English
  4. 認証関連情報の設定
    a. Root password: *******
    b. Confirm root password: *******
    c. Administrator email: *******
  5. 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
nnaka2992nnaka2992

WebUIへの接続

Install後にproxmox端末を起動するとhttps://${5.cで設定したIP}:8006/にアクセスするよう指示があるので別端末からアクセスする。
このとき自己証明書を利用しているため警告が出るが無視する。
proxmox login

ログイン情報は以下を利用する

  1. username: root
  2. password: 4.aで設定したパスワード

正常にログインできると以下のような画面になる
proxmox login succeed

今回は無料版を利用しているためサブスクリプションの警告は無視する。

nnaka2992nnaka2992

Proxmoxの無償版リポジトリの設定

Proxmoxはデフォルトではリポジトリにエンタープライズ向けのリポジトリが設定されているようで、アップデートなどができないらしい。
以下を参考に無償版リポジトリを設定する
参考: Proxmox VEで無償版リポジトリを設定する

データセンター > pve > アップデート > リポジトリに移動する。
repository設定

追加のボタンがあるので押下するとサブスクリプションが無いとエラーがでるが無視する。
デフォルトではリポジトリがEnterpriseになっているのでトグルを開き、No-Subscriptionを選択し追加を押下する。
repository選択

Proxmox VE用の更新が取得できるようになった。
repository変更後
画面下の方にエンタープライズ用のリポジトリ情報が残っているので無効化しておく。
(無効にしなくても問題なさそうに見えるものの、エラーが出るのは良くないので)
repository enterpriseを無効化

データセンター > pve > アップデートに移動し再表示(Refresh)を押下するとパッケージのアップデートが開始する。
続けてアップグレードも実行する
repository更新

nnaka2992nnaka2992

ProxmoxのGUIをインターネットに公開する

Cloudflare Argo Tunnelを利用する

nnaka2992nnaka2992

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)

参考: Cloudflare Zero Trust | Download

nnaka2992nnaka2992

クライアントの設定をする

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
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}

参考:

nnaka2992nnaka2992

トンネルをサービスとして登録する

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>
後略
nnaka2992nnaka2992

SSO認証を追加する

CloudflareのコンソールからHome > Zero Trust > Access > Applicationsを開き、Add an identity provider (IdP)の欄にあるAdd an IdPから任意のIdPを登録する

続けてアプリケーションも追加する