32 ライフサイクルのアクション #
このセクションでは、デプロイしたATIPクラスタのライフサイクル管理アクションについて説明します。
32.1 管理クラスタのアップグレード #
管理クラスタのアップグレードには複数のコンポーネントが関係します。アップグレードする必要がある一般的なコンポーネントのリストについては、Day
2
管理クラスタ(第24章 「管理クラスタ」)のドキュメントを参照してください。
このセットアップに固有のコンポーネントをアップグレードする手順を以下に示します。
Metal3のアップグレード
Metal3
をアップグレードするには、次のコマンドを使用してHelmリポジトリキャッシュを更新し、最新のチャートをフェッチしてHelmチャートリポジトリからMetal3
をインストールします。
helm repo update helm fetch suse-edge/metal3
その後、現在の設定をファイルにエクスポートしてから、その前のファイルを使用してMetal3
のバージョンをアップグレードすると、簡単にアップグレードできます。新しいバージョンで何らかの変更が必要な場合、アップグレードの前にそのファイルを編集できます。
helm get values metal3 -n metal3-system -o yaml > metal3-values.yaml helm upgrade metal3 suse-edge/metal3 \ --namespace metal3-system \ -f metal3-values.yaml \ --version=0.7.1
32.2 ダウンストリームクラスタのアップグレード #
ダウンストリームクラスタをアップグレードするには、複数のコンポーネントを更新する必要があります。次の各セクションでは、各コンポーネントのアップグレードプロセスについて説明します。
オペレーティングシステムのアップグレード
このプロセスでは、次の参照資料を確認して、新しいオペレーティングシステムバージョンで新しいイメージを構築します。EIB
で生成されたこの新しいイメージにより、次のプロビジョニングフェーズでは、指定した新しいオペレーティングシステムバージョンが使用されます。次の手順では、この新しいイメージを使用してノードをアップグレードします。
RKE2クラスタのアップグレード
自動化されたワークフローを使用してRKE2
クラスタをアップグレードするために必要な変更は次のとおりです。
次のセクションに示す
capi-provisioning-example.yaml
のブロックRKE2ControlPlane
を次のように変更します。仕様ファイルにロールアウト戦略を追加します。
${RKE2_NEW_VERSION}
を置き換えて、RKE2
クラスタのバージョンを新しいバージョンに変更します。
apiVersion: controlplane.cluster.x-k8s.io/v1alpha1
kind: RKE2ControlPlane
metadata:
name: single-node-cluster
namespace: default
spec:
infrastructureRef:
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: Metal3MachineTemplate
name: single-node-cluster-controlplane
replicas: 1
serverConfig:
cni: cilium
rolloutStrategy:
rollingUpdate:
maxSurge: 0
agentConfig:
format: ignition
additionalUserData:
config: |
variant: fcos
version: 1.4.0
systemd:
units:
- name: rke2-preinstall.service
enabled: true
contents: |
[Unit]
Description=rke2-preinstall
Wants=network-online.target
Before=rke2-install.service
ConditionPathExists=!/run/cluster-api/bootstrap-success.complete
[Service]
Type=oneshot
User=root
ExecStartPre=/bin/sh -c "mount -L config-2 /mnt"
ExecStart=/bin/sh -c "sed -i \"s/BAREMETALHOST_UUID/$(jq -r .uuid /mnt/openstack/latest/meta_data.json)/\" /etc/rancher/rke2/config.yaml"
ExecStart=/bin/sh -c "echo \"node-name: $(jq -r .name /mnt/openstack/latest/meta_data.json)\" >> /etc/rancher/rke2/config.yaml"
ExecStartPost=/bin/sh -c "umount /mnt"
[Install]
WantedBy=multi-user.target
kubelet:
extraArgs:
- provider-id=metal3://BAREMETALHOST_UUID
version: ${RKE2_NEW_VERSION}
nodeName: "localhost.localdomain"
次のセクションに示す
capi-provisioning-example.yaml
のブロックMetal3MachineTemplate
を次のように変更します。イメージ名およびチェックサムを、前の手順で生成した新しいバージョンに変更します。
ディレクティブ
nodeReuse
を追加してtrue
に設定し、新しいノードが作成されないようにします。ディレクティブ
automatedCleaningMode
を追加してmetadata
に設定し、ノードの自動クリーニングを有効にします。
apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
kind: Metal3MachineTemplate
metadata:
name: single-node-cluster-controlplane
namespace: default
spec:
nodeReuse: True
template:
spec:
automatedCleaningMode: metadata
dataTemplate:
name: single-node-cluster-controlplane-template
hostSelector:
matchLabels:
cluster-role: control-plane
image:
checksum: http://imagecache.local:8080/${NEW_IMAGE_GENERATED}.sha256
checksumType: sha256
format: raw
url: http://imagecache.local:8080/${NEW_IMAGE_GENERATED}.raw
これらの変更を行った後、次にコマンドを使用してcapi-provisioning-example.yaml
ファイルをクラスタに適用できます。
kubectl apply -f capi-provisioning-example.yaml