28 Elemental #
28.1 Common(通常のネットワーキング) #
28.1.1 Rancherサービスを公開する #
RKE2またはK3sを使用する場合、管理クラスターからのサービス(このコンテキストではRancher)はデフォルトでは公開されないため、公開する必要があります。 RKE2とK3sの両方にTraefik Ingressコントローラーがあります。 現在のワークフローでは、サービスをアナウンスするためにMetalLB(L2またはBGPアドバタイズメント経由)を使用し、それぞれのIngressコントローラーを使用して`HelmChartConfig`経由でIngressを作成することが推奨されています。新しいIngressオブジェクトを作成すると、既存のセットアップが上書きされるためです。
Rancher Primeを(Helm経由で)インストールし、必要な値を構成します
hostname: rancher-192.168.64.101.sslip.io replicas: 1 bootstrapPassword: Admin global.cattle.psp.enabled: "false"Rancherを公開するためにLoadBalancerサービスを作成します
kubectl apply -f - <<EOF apiVersion: helm.cattle.io/v1 kind: HelmChartConfig metadata: name: rke2-traefik namespace: kube-system spec: valuesContent: |- ingressClass: isDefaultClass: true ports: web: hostPort: null # disallow hostPort exposedPort: 80 websecure: hostPort: null # disallow hostPort exposedPort: 443 service: enabled: true type: LoadBalancer spec: externalTrafficPolicy: Local allocateLoadBalancerNodePorts: false # k8s GA from 1.24; supported by MetalLB EOFHelmの値で以前セットアップしたIPアドレスを使用して、サービス用のIPアドレスプールを作成します。
kubectl apply -f - <<EOF apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: ingress-ippool namespace: metallb-system spec: addresses: - 192.168.64.101/32 serviceAllocation: priority: 100 serviceSelectors: - matchExpressions: - {key: app.kubernetes.io/name, operator: In, values: [rke2-traefik]} EOFIPアドレスプール用のL2アドバタイズメントを作成します。
kubectl apply -f - <<EOF apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: ingress-l2-adv namespace: metallb-system spec: ipAddressPools: - ingress-ippool EOFElementalが正しくインストールされていることを確認します。
管理ノードにElementalオペレーターとElemental UIをインストールします。
ダウンストリームノードにElemental設定と登録コードを追加します。これにより、Edge Image Builderがそのマシンにリモート登録オプションを含めるようになります。
28.2 ハードウェア固有 #
28.2.1 Trusted Platform Module #
Trusted Platform Module(TPM)構成を適切に処理する必要があります。 そうしないと、以下のようなエラーが発生します。
Nov 25 18:17:06 eled elemental-register[4038]: Error: registering machine: cannot generate authentication token: opening tpm for getting attestation data: TPM device not availableこれは、次のいずれかのアプローチで軽減できます。
仮想マシンの設定でTPMを有効にする
MacOSでUTMを使用した例
`MachineRegistration`リソースでTPMシードに負の値を指定してTPMをエミュレートします
apiVersion: elemental.cattle.io/v1beta1
kind: MachineRegistration
metadata:
name: ...
namespace: ...
spec:
...
elemental:
...
registration:
emulate-tpm: true
emulated-tpm-seed: -1`MachineRegistration`リソースでTPMを無効にします
apiVersion: elemental.cattle.io/v1beta1
kind: MachineRegistration
metadata:
name: ...
namespace: ...
spec:
...
elemental:
...
registration:
emulate-tpm: false