はじめに
今回はRancherの拡張機能であるEementalを利用し、OSのインストールとkubernetesクラスタの作成を行っていきます。
Elementalとは?
RancherでのOSマネジメント機能であり、デバイスにElementalでビルドしたOSをインストールすることで、デバイスがRancher管理下に置かれます。
そこからkubernetesのプロビジョニング及びkubernetesのワークロードを開始できます。
Elementalの用途は?
SUSEが提供しているエッジ向けの機能になります。
エッジコンピューティングでは、通常のデータセンターでの運用とは異なり、分散環境での運用となります。
エッジでは以下のような難しさがあります。
- 各地でのセットアップが大変
- デバイスの管理台数が多い
- セキュリティ対応が難しい
- etc
Elementalを利用することにより、、マシンにあらかじめISOイメージを配置しておけば現地ではデバイスをネットワークにつないで電源を起動するだけ、Rancher管理下に置かれることになります。また、Rancher経由でkubernetesクラスタを構築し、Fleetとあわせて即座にアプリケーションのデプロイを行うことができます。これまでのエッジでの環境構築の大変さを大幅に軽減できます。
また、OSはSLE Micro for Rancherがベースとなっており、コンテナ/kubernetes向けに設計されており、イミュータブルな設計になっています。
環境
Rancher v2.7.6
OS: ubuntu 22.04
エッジデバイス: VMware workstation Pro17で代用
ISO作成用VM: ubuntu22.04 (Docker 20.10インストール済み)
本来はエッジデバイスが必要ですが、今回は簡単に構築するためにVMware Workstationを利用します。ただし、ElementalのOS要件にTPM2.0が利用できる必要があるので、Pro版が必要になります。
作業の流れ
今回は以下のような作業が必要になります。
- Elementalの利用準備
- エンドポイントの作成
- iSOイメージの作成
- VM構築
- kubernetes構築
Elementalの利用準備
ElementalをRancherで利用するには以下の3つのステップが必要になります。
- Rancher Extensionの有効化
- Elemental install
- Elemental Oparetor install
早速やっていきます。
左端のExtensionを選択し、EnableをクリックすることでRancher Extensionが有効化されます。
有効化したら、AvailableタブでElementalをインストールします。
installingでずっと画面上がロードしているように見えるかもしれませんが、実際にはすぐに完了しているので画面を更新してください。
すると、OS Managementの欄が左に追加されます。しかし、これだけでは使えません。Elemental Oparatorをインストールしないといけません。
Rancher Management Serverに接続し、以下のコマンドを打つことでインストールできます。
helm upgrade --create-namespace -n cattle-elemental-system --install elemental-operator-crds oci://registry.suse.com/rancher/elemental-operator-crds-chart
helm upgrade --create-namespace -n cattle-elemental-system --install elemental-operator oci://registry.suse.com/rancher/elemental-operator-chart
Elemental Oparetorがインストールされれば以下のように画面表示が変わります。
ダッシュボードやRegistration Endpointが表示されるようになります。
ISO作成
今回はVMwareのTPMエミュレート機能を使うので、通常とは設定ファイルやiSOイメージ作成の流れが通常とは少し異なります。
ベアメタルサーバーへインストールする場合はもう少しシンプルになります。
まず、OS ManagementのRegistration EndpointsタブでCreateをクリックします。
そして今回はEdit as YAMLで編集をします。
Yamlの内容は以下の内容のものです。ユーザ名やパスワード、エンドポイント名は自由に決めてください。
ただ、注意点として今回はVMwareのTPMエミュレーション機能を使うので、registration
のオプションだけは忘れずに。
apiVersion: elemental.cattle.io/v1beta1
kind: MachineRegistration
metadata:
name: elemental-demo-vm
namespace: fleet-default
spec:
config:
cloud-config:
users:
- name: root
passwd: root
elemental:
install:
reboot: true
device: /dev/sda
debug: true
registration:
emulate-tpm: true ##必須
emulated-tpm-seed: 1 ##必須
machineName:
machineInventoryLabels:
manufacturer: "${System Information/Manufacturer}"
productName: "${System Information/Product Name}"
serialNumber: "${System Information/Serial Number}"
machineUUID: "${System Information/UUID}"
上記内容で作成後Createし、Registration Endpointの画面で作成したエンドポイントをクリックしてください。
本来は下記の画面でBuild ISO
でビルド後、ISOをダウンロードし、マシンにインストールすればOKですが、VMware WorkstationのTPMエミュレート機能を使う場合は一手間必要です。
ここではDownload Configuration Fileでファイルをダウンロードしてください。[エンドポイント名]_registrationURL.yamlという名前でダウンロードされます。今回で言うとelemental-vm_registrationURL.yaml
ここからISOを手動で作成する必要がありますが、それにはLinuxとdockerが必要になります。
今回はUbuntu VMが用意してあります。(RancherのVMでも何でもよい)
作業用のVMへ接続し、作業用ディレクトリを作成します。
mkdir /home/user/elemental-demo
cd /home/user/elemental-demo
vim initial-registration.yamlに先ほどの、elemental-vm_registrationURL.yamlの内容をコピーします。
vim initial-registration.yaml
私の環境では以下のような内容でした。
elemental-vm_registrationURL.yaml
elemental:
registration:
url: https://rancher.192.168.1.166.sslip.io/elemental/registration/nccf24c8jf84klqm26p6hnvqjbxgkz2tjzzvnb6b4x74n2v4jzbbpj
ca-cert: |-
-----BEGIN CERTIFICATE-----
MIIBvjCCAWOgAwIBAgIBADAKBggqhkjOPQQDAjBGMRwwGgYDVQQKExNkeW5hbWlj
bGlzdGVuZXItb3JnMSYwJAYDVQQDDB1keW5hbWljbGlzdGVuZXItY2FAMTY5NTA5
ODM3NDAeFw0yMzA5MTkwNDM5MzRaFw0zMzA5MTYwNDM5MzRaMEYxHDAaBgNVBAoT
E2R5bmFtaWNsaXN0ZW5lci1vcmcxJjAkBgNVBAMMHWR5bmFtaWNsaXN0ZW5lci1j
YUAxNjk1MDk4Mzc0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDo0UhuZde8EY
/49wPFvbl9Sn7f7aKYu8fA7kqIOEFPavltZDwd8qt/KPdduCH01P3/ZWDGNLyhhC
iVuk1LbY86NCMEAwDgYDVR0PAQH/BAQDAgKkMA8GA1UdEwEB/wQFMAMBAf8wHQYD
VR0OBBYEFPHYnluqi3AL12cAj24ZQYBr1atkMAoGCCqGSM49BAMCA0kAMEYCIQCb
MgVEKxccBlPYwILXxvEWW64LNp+Z/kwOnUQFbCtoyQIhAPYu0/zRx7xxLtaFG0Wv
EagvKdglME6CM3ZUxBMsHCRy
-----END CERTIFICATE-----
emulate-tpm: true
emulated-tpm-seed: 1
auth: tpm
次にisoをダウンロードするスクリプトをダウンロードし、initial-registration.yamlを注入します。
wget -q https://raw.githubusercontent.com/rancher/elemental/main/.github/elemental-iso-add-registration && chmod +x elemental-iso-add-registration
最後にスクリプトにinitial-registration.yamlを引数に渡し実行します。
./elemental-iso-add-registration initial-registration.yaml
これでelemental-teal.x86_63.iso
が作成されるのでダウンロードしてください。
本来であればこれをUSBに書き込みデバイスでブートしますが、今回はVMで構築します。
Elemental isoでブート
OSは先ほど言ったようにSLE Micro for Rancherなのでスペック的には軽いもので大丈夫です。kubernetesもRKE2かk3sを選択できますのでk3sで行う場合は大したスペックはいりません。
メモリ4GB、1コア CPUとかでも大丈夫です。
ただし、Diskは40GB以上用意してください。
VMを作成するときはゲストOSの選択画面のバージョンでSLESを選択してください。
VMを用意したら、VMの設定を開いてください。そしてオプションをタブのアクセスコントロール
で暗号化のパスワードを設定してください。(TPMの有効化)
次に詳細
でファームフェアタイプをUEfiにし、セキュアブートを有効にします。
ここまで来たら準備完了です。いよいよブートです。
ブートとk8sのインストール
ブートすると以下のような画面が表示されるはずです。そうでなければ設定が間違っています。
TPM設定が漏れているか、ファームフェアタイプの設定がBIOSのまま、などが考えられます。
ブート後、Rancher画面のInventry of MachinesでアクティブになればOKです。
本画面でマシンの欄にチェックを入れて、Create Elemental Cluster
を選択するか、通常のCluster作成画面でElementalが表示されます。
どちらから選択しても通常のクラスタ作成画面になります。
ここで、k3sかRKE2を作成しkubernetesクラスタを構築できます。
構築後は通常のRancherでの利用の流れと同様になります。
長くなりましたが、以上でElementalでのクラスタ作成の流れでした。
一度ISOを作れば同じものをマシンにインストールすることでクラスタを構築することができるので便利です。
次はRaspberry piを利用してやってみようかと思います。
参考
今回の手順は本ページに準拠しています。
SLE Microに関してはこちら