|Index|SUSE Edge ドキュメント|クイックスタート|Elementalを使用したリモートホストのオンボーディング
Applies to SUSE Edge 3.6

1 Elementalを使用したリモートホストのオンボーディング

このセクションでは、SUSE Edgeの一部として「phone home network provisioning」ソリューションについて説明します。ここでは、Elementalを使用してノードのオンボーディングを支援します。Elementalは、リモートホストの登録と、KubernetesによるクラウドネイティブOSの一元管理を可能にするソフトウェアスタックです。SUSE Edgeスタックでは、Elementalの登録機能を使用してリモートホストをRancherにオンボーディングします。これにより、ホストを一元管理プラットフォームに統合し、そこからKubernetesクラスターや階層化されたコンポーネント、アプリケーション、およびそれらのライフサイクルをすべて共通の場所からデプロイおよび管理できるようになります。

このアプローチは、制御したいデバイスが管理クラスターと同じネットワーク上にない場合や、より直接的な制御を可能にする帯域外管理コントローラーが搭載されていない場合、またエッジで多くの異なる「未知の」システムを起動し、それらを大規模に安全にオンボーディングおよび管理する必要があるシナリオで役立ちます。これは、小売、産業用IoT、またはデバイスがインストールされるネットワークをほとんど制御できないその他の分野のユースケースにおける一般的なシナリオです。

1.1 上位レベルのアーキテクチャ

quickstart elemental architecture

1.2 必要なリソース

以下に、このクイックスタートを実行するための最小限のシステム要件および環境要件を説明します。

  • 集中管理クラスター用のホスト(RancherおよびElementalをホストするもの):

    • 開発またはテスト用に最低8 GBのRAMと20 GBのディスク容量(本番環境での使用については こちらを参照)

  • プロビジョニング対象のノード、つまりエッジデバイス(デモやテスト目的であれば仮想マシンを使用可能)

    • 最低4GBのRAM、2 CPUコア、20 GBのディスク

  • 管理クラスターの解決可能なホスト名、またはsslip.ioのようなサービスで使用する静的IPアドレス

  • Edge Image Builderを使用してインストールメディアを構築するためのホスト

    • PodmanをサポートするSLES 15 SP6、openSUSE Leap 15.6、またはその他の互換性のあるオペレーティングシステムを実行していること。

    • KubectlPodman、および Helmがインストールされていること

  • 起動用のUSBフラッシュ ドライブ(物理ハードウェアを使用する場合)

  • こちらから入手可能な、最新のSUSE Linux Micro 6.2 SelfInstall ISOイメージのダウンロード済みコピー。

Note
Note

ターゲットマシン上の既存のデータは、このプロセスの一環として上書きされます。ターゲットデプロイメントノードに接続されているUSBストレージデバイスやディスク上のデータは、必ずバックアップしてください。

このガイドは、アップストリームクラスタをホストするためのDigital Oceanドロップレットと、ダウンストリームデバイスとしてのIntel NUCを使用して作成されています。インストールメディアの構築には、SUSE Linux Enterprise Serverが使用されます。

1.3 ブートストラップクラスタを構築します

まずは、RancherとElementalをホストできるクラスタを作成することから始めます。このクラスタは、ダウンストリームノードが接続されているネットワークからルーティング可能である必要があります。

1.3.1 Kubernetesクラスタを作成します

ハイパースケーラー(Azure、AWS、Google Cloudなど)を使用している場合、クラスタをセットアップする最も簡単な方法は、ビルトインツールを使用することです。このガイドでは簡潔にするため、これらの各オプションのプロセスについては詳しく説明しません。

ベアメタルや、Kubernetesディストリビューション自体も提供する必要がある他のホスティングサービスにインストールする場合は、 RKE2の使用をお勧めします。

1.3.2 DNSを設定します。

続行する前に、クラスタへのアクセスを設定する必要があります。クラスタ自体のセットアップと同様に、DNSの構成方法はホストされている場所によって異なります。

Tip
Tip

DNSレコードの設定を処理したくない場合(例えば、これが一時的なテストサーバーである場合など)、代わりに sslip.ioのようなサービスを使用できます。このサービスを使用すると、任意のIPアドレスを`<address>.sslip.io`で解決できます。

1.4 Rancher をインストールします

Rancherをインストールするには、作成したばかりのクラスタのKubernetes APIにアクセスする必要があります。これは、使用されているKubernetesのディストリビューションによって異なります。

RKE2の場合、kubeconfigファイルは`/etc/rancher/rke2/rke2.yaml`に書き込まれています。 このファイルをローカルシステム上の`~/.kube/config`として保存します。 正しく外部からルーティング可能なIPアドレスまたはホスト名を含めるように、ファイルを編集する必要がある場合があります。

Rancher ドキュメントのコマンドを使用して、Rancher を簡単にインストールできます。

cert-manager をインストールします。

helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager \
 --namespace cert-manager \
 --create-namespace \
 --set crds.enabled=true

次に、Rancher 自体をインストールします。

helm repo add rancher-prime https://charts.rancher.com/server-charts/prime
helm repo update
helm install rancher rancher-prime/rancher \
  --namespace cattle-system \
  --create-namespace \
  --set hostname=<DNS or sslip from above> \
  --set replicas=1 \
  --set bootstrapPassword=<PASSWORD_FOR_RANCHER_ADMIN> \
  --version 2.14.2
Note
Note

これが本番システムを目的としている場合は、cert-manager を使用して(Let’s Encrypt などの)実際の証明書を設定してください。

設定したホスト名にブラウザでアクセスし、使用した bootstrapPassword で Rancher にログインします。簡単なセットアッププロセスが案内されます。

1.5 Elemental をインストールします

Rancher がインストールされたので、Elemental オペレーターと必要な CRD をインストールできます。Elemental の Helm チャートは OCI アーティファクトとして公開されているため、他のチャートよりもインストールが少し簡単です。 Rancher をインストールしたのと同じシェル、または Rancher 内のブラウザのシェルからインストールできます。

helm install --create-namespace -n cattle-elemental-system \
 elemental-operator-crds \
 oci://registry.suse.com/rancher/elemental-operator-crds-chart \
 --version 1.9.0

helm install -n cattle-elemental-system \
 elemental-operator \
 oci://registry.suse.com/rancher/elemental-operator-chart \
 --version 1.9.0

1.5.1 (オプション)Elemental UI 拡張機能をインストールします

  1. Elemental UI を使用するには、Rancher インスタンスにログインし、左上の3本線メニューをクリックします。

    Elemental 拡張機能 1 のインストール
  2. このページの「Available(利用可能)」タブから、Elemental カードの「Install(インストール)」をクリックします。

    Elemental 拡張機能 2 のインストール
  3. 拡張機能をインストールすることを確認します。

    Elemental 拡張機能 3 のインストール
  4. インストール後、ページをリロードするように求められます。

    Elemental 拡張機能 4 のインストール
  5. リロードすると、「OS Management(OS 管理)」グローバルアプリから Elemental 拡張機能にアクセスできるようになります。

    Elemental 拡張機能へのアクセス

1.6 Elemental を設定します。

簡略化のため、変数 $ELEM に設定ディレクトリのフルパスを設定することをお勧めします。

export ELEM=$HOME/elemental
mkdir -p $ELEM

マシンがElementalに登録できるようにするには、fleet-default 名前空間に MachineRegistration オブジェクトを作成する必要があります。

このオブジェクトの基本バージョンを作成しましょう。

cat << EOF > $ELEM/registration.yaml
apiVersion: elemental.cattle.io/v1beta1
kind: MachineRegistration
metadata:
  name: ele-quickstart-nodes
  namespace: fleet-default
spec:
  machineName: "\${System Information/Manufacturer}-\${System Information/UUID}"
  machineInventoryLabels:
    manufacturer: "\${System Information/Manufacturer}"
    productName: "\${System Information/Product Name}"
EOF

kubectl apply -f $ELEM/registration.yaml
Note
Note

cat コマンドは、Bashがテンプレート化しないように、各 $ をバックスラッシュ (\) でエスケープします。手動でコピーする場合は、バックスラッシュを削除してください。

オブジェクトが作成されたら、割り当てられたエンドポイントを見つけてメモします。

REGISURL=$(kubectl get machineregistration ele-quickstart-nodes -n fleet-default -o jsonpath='{.status.registrationURL}')

あるいは、UIからこれを行うこともできます。

UI拡張機能
  1. OS管理拡張機能から、[登録エンドポイントの作成]をクリックします。

    「登録の作成」をクリック
  2. この設定に名前を付けます。

    名前の追加
    Note
    Note

    Edge Image Builderを使用した以下の手順でデータが上書きされるため、クラウド設定フィールドは無視してかまいません。

  3. 次に、下までスクロールし、マシン登録時に作成されるリソースへ追加する各ラベルに対して[ラベルの追加]をクリックします。これは、マシンを識別するのに役立ちます。

    ラベルの追加
  4. [作成]をクリックして、設定を保存します。

  5. 登録が作成されると、登録URLが表示されます。[コピー]をクリックしてアドレスをコピーできます。

    URL のコピー
    Tip
    Tip

    その画面から離れてしまった場合は、左側のメニューで「Registration Endpoints」をクリックし、作成したエンドポイントの名前をクリックしてください。

    この URL は次のステップで使用します。

1.7 イメージ をビルドします

Elemental の現在のバージョンには独自のインストールメディアをビルドする方法がありますが、SUSE Edge 3.6 では代わりに Kiwi と Edge Image Builder を使用するため、結果として得られるシステムは SUSE Linux Micro をベースオペレーティングシステムとしてビルドされます。

Tip
Tip

Kiwi の詳細については、まず Kiwi Image Builder プロセス (Chapter 26, Kiwiを使用して更新されたSUSE Linux Microイメージを構築する) に従って新しいイメージをビルドしてください。Edge Image Builder については、Edge Image Builder 入門ガイド (Chapter 2, Edge Image Builderを使用したスタンドアロンクラスター) および コンポーネントドキュメント (Chapter 8, Edge Image Builder) を確認してください。

Podman がインストールされている Linux システムから、ディレクトリを作成し、Kiwi によってビルドされるベースイメージを配置します。

mkdir -p $ELEM/eib_quickstart/base-images
cp /path/to/{micro-base-image-iso} $ELEM/eib_quickstart/base-images/
mkdir -p $ELEM/eib_quickstart/elemental
curl $REGISURL -o $ELEM/eib_quickstart/elemental/elemental_config.yaml
cat << EOF > $ELEM/eib_quickstart/eib-config.yaml
apiVersion: 1.3
image:
    imageType: iso
    arch: x86_64
    baseImage: SL-Micro.x86_64-6.2-Base-SelfInstall-GM.install.iso
    outputImageName: elemental-image.iso
operatingSystem:
  time:
    timezone: Europe/London
    ntp:
      forceWait: true
      pools:
        - 2.suse.pool.ntp.org
      servers:
        - 10.0.0.1
        - 10.0.0.2
  isoConfiguration:
    installDevice: /dev/vda
  users:
    - username: root
      encryptedPassword: \$6\$jHugJNNd3HElGsUZ\$eodjVe4te5ps44SVcWshdfWizrP.xAyd71CVEXazBJ/.v799/WRCBXxfYmunlBO2yp1hm/zb4r8EmnrrNCF.P/
  packages:
    sccRegistrationCode: XXX
EOF
Note
Note
  • time セクションはオプションですが、証明書やクロックスキューに関する潜在的な問題を回避するために設定することを強く推奨します。この例で示されている値は、あくまで例示用です。お客様の特定の要件に合わせて調整してください。

  • エンコードされていないパスワードは eib です。

  • 公式ソースから必要な RPM をダウンロードしてインストールするには sccRegistrationCode が必要です(代わりに、elemental-register および elemental-system-agent RPM を手動でサイドロードすることも可能です)。

  • cat コマンドは、Bashがテンプレート化しないように、各 $ をバックスラッシュ (\) でエスケープします。手動でコピーする場合は、バックスラッシュを削除してください。

  • インストール中にインストールデバイスは消去されます。

podman run --privileged --rm -it -v $ELEM/eib_quickstart/:/eib \
 registry.suse.com/edge/3.6/edge-image-builder:1.3.3.1 \
 build --definition-file eib-config.yaml

物理デバイスを起動する場合は、イメージを USB フラッシュ ドライブに書き込む必要があります。これは次のように実行できます。

sudo dd if=/eib_quickstart/elemental-image.iso of=/dev/<PATH_TO_DISK_DEVICE> status=progress

1.8 ダウンストリームノード を起動します

インストールメディアを作成しましたので、それを使用してダウンストリームノードを起動できます。

Elemental で制御する各システムについて、インストールメディアを追加してデバイスを起動してください。インストール後、システムは再起動し、自動的に登録されます。

UI 拡張機能を使用している場合は、「Inventory of Machines」にノードが表示されるはずです。

Note
Note

ログインプロンプトが表示されるまでインストールメディアを取り外さないでください。初回起動時は、USBスティック上のファイルにまだアクセスしています。

1.9 ダウンストリームクラスタ群を作成する

Elementalを使用して新しいクラスタをプロビジョニングする際に作成する必要があるオブジェクトが2つあります。

  • Linux
  • UI拡張機能

1つ目は MachineInventorySelectorTemplate です。このオブジェクトを使用すると、クラスタとインベントリ内のマシン間のマッピングを指定できます。

  1. インベントリ内のラベルを持つ任意のマシンに一致するセレクタを作成します:

    cat << EOF > $ELEM/selector.yaml
    apiVersion: elemental.cattle.io/v1beta1
    kind: MachineInventorySelectorTemplate
    metadata:
      name: location-123-selector
      namespace: fleet-default
    spec:
      template:
        spec:
          selector:
            matchLabels:
              locationID: '123'
    EOF
  2. リソースをクラスタに適用します:

    kubectl apply -f $ELEM/selector.yaml
  3. マシンの名前を取得し、一致するラベルを追加します:

    MACHINENAME=$(kubectl get MachineInventory -n fleet-default | awk 'NR>1 {print $1}')
    
    kubectl label MachineInventory -n fleet-default \
     $MACHINENAME locationID=123
  4. シンプルなシングルノードのK3sクラスタリソースを作成し、それをクラスタに適用します:

    cat << EOF > $ELEM/cluster.yaml
    apiVersion: provisioning.cattle.io/v1
    kind: Cluster
    metadata:
      name: location-123
      namespace: fleet-default
    spec:
      kubernetesVersion: v1.35.4+k3s1
      rkeConfig:
        machinePools:
          - name: pool1
            quantity: 1
            etcdRole: true
            controlPlaneRole: true
            workerRole: true
            machineConfigRef:
              kind: MachineInventorySelectorTemplate
              name: location-123-selector
              apiVersion: elemental.cattle.io/v1beta1
    EOF
    
    kubectl apply -f $ELEM/cluster.yaml

これらのオブジェクトを作成すると、インストールしたばかりの新しいノードを使用して新しいKubernetesクラスターが起動するのを確認できるはずです。

1.10 ノードのリセット(オプション)

SUSE Rancher Elementalは「ノードリセット」を実行する機能をサポートしており、Rancherからクラスター全体が削除された場合、クラスターから単一のノードが削除された場合、またはマシンインベントリからノードが手動で削除された場合に、オプションでトリガーできます。これは、孤立したリソースをリセットしてクリーンアップし、クリーンアップされたノードを自動的にマシンインベントリに戻して再利用できるようにしたい場合に便利です。これはデフォルトでは有効になっていないため、削除されたシステムはクリーンアップされません(つまり、データは削除されず、Kubernetesクラスターリソースはダウンストリームクラスター上で動作し続けます)。そのため、データを消去し、Elementalを介してマシンをRancherに再登録するには手動での介入が必要になります。

この機能をデフォルトで有効にしたい場合は、`MachineRegistration`で`config.elemental.reset.enabled: true`を追加して明示的に有効にする必要があります。例:

config:
  elemental:
    registration:
      auth: tpm
    reset:
      enabled: true

そうすれば、この`MachineRegistration`に登録されているすべてのシステムは、設定内に`elemental.cattle.io/resettable: 'true'`アノテーションを自動的に受け取ります。個々のノードでこれらを手動で行いたい場合(例:このアノテーションがない既存の`MachineInventory`がある場合や、すでにノードをデプロイ済みの場合など)、`MachineInventory`を変更して`resettable`設定を追加できます。例:

apiVersion: elemental.cattle.io/v1beta1
kind: MachineInventory
metadata:
  annotations:
    elemental.cattle.io/os.unmanaged: 'true'
    elemental.cattle.io/resettable: 'true'

SUSE Edge 3.1では、Elemental Operatorがオペレーティングシステム上にマーカーを配置し、それが自動的にクリーンアッププロセスをトリガーします。これにより、すべてのKubernetesサービスが停止され、すべての永続データが削除され、すべてのKubernetesサービスがアンインストールされ、残っているKubernetes/Rancherディレクトリがクリーンアップされ、元のElemental MachineRegistration`設定を介してRancherへの再登録が強制されます。これは自動的に行われるため、手動で介入する必要はありません。呼び出されるスクリプトは/opt/edge/elemental_node_cleanup.sh`にあり、マーカーが配置されると`systemd.path`を介してトリガーされるため、即座に実行されます。

Warning
Warning

`resettable`機能を使用する場合、Rancherからノードやクラスターを削除した際の動作として、データを消去して再登録を強制することが前提となります。この状況ではデータが確実に失われるため、自動リセットを実行することが確実な場合にのみ使用してください。

1.11 次のステップ

このガイドを使用した後に調査することをお勧めするリソースをいくつか紹介します。