はじめに
コミット
56169b71(リリース v0.13.0 付近) のソースで検証。コマンドはmake・kubectl・kind が動く Linux ホストを想定。
前提
- 演算子を載せる Kubernetes クラスタ。ローカル作業なら repo の
make tilt-upが kind クラスタを作る。 - Ironic backend。ironic provisioner が本番の既定で、Ironic Standalone Operator (IrSO) か
ironic-deployment/の kustomize base でデプロイする。 - IPMI または Redfish で到達できる対応 BMC を持つサーバが最低 1 台と、network または virtual media のブート経路。開発中はハードの代わりに
fixturebackend を使える。
インストール
開発ワークフローは repo の Makefile を使う (出典 1, 出典 6)。
bash
git clone https://github.com/metal3-io/baremetal-operator
cd baremetal-operator
make install最初の動く構成
CRD をクラスタに導入する。
bashmake installコントローラを kustomize で展開し、ironic plugin 込みでローカル起動する。ironic backend は別途デプロイが必要 (IrSO か
ironic-deployment/の base)。bashmake deploy make run最小の
BareMetalHostを作る。動くホストには BMC アドレス、credentials secret、起動 NIC の MAC (BMC ではなくホスト NIC)、online: trueが要る (出典 6)。yamlapiVersion: metal3.io/v1alpha1 kind: BareMetalHost metadata: name: node-0 spec: online: true bootMACAddress: 00:11:22:33:44:55 bmc: address: redfish://192.168.1.10/redfish/v1/Systems/1 credentialsName: node-0-bmc-secret
動作確認
ホストの状態を確認する。State 列は provisioning 状態機械 (registering・inspecting・available・provisioning・provisioned) を反映する。
bash
kubectl get bmhshort name bmh / bmhost は CRD で定義され (apis/metal3.io/v1alpha1/baremetalhost_types.go:855-:863)、Status・State・BMC・Online・Error の print 列もここにある。
次に読むもの
- Metal3 Book が本番デプロイ・Ironic backend・BMC 設定をカバーする。
- 単体テストは envtest 前提で
make unitで動く (素のgo testは不可)。e2e は libvirt VM と BMC エミュレータを使い./hack/ci-e2e.shで実行する。 - ベアメタル上に Kubernetes クラスタを作るには
cluster-api-provider-metal3を参照 (採用事例・エコシステム に記載)。