2.5. SiteConfig Operator を使用してシングルノード OpenShift クラスターをインストールする
デフォルトのインストールテンプレートを使用して、SiteConfig Operator でクラスターをインストールします。手順を完了するには、Image-Based Install Operator のインストールテンプレートを使用します。
必要なアクセス権: クラスター管理者
2.5.1. 前提条件
- GitOps ZTP を使用している場合は、GitOps ZTP 環境を設定します。環境を設定するには、GitOps ZTP 用のハブクラスターの準備 を参照してください。
- デフォルトのインストールテンプレートが必要です。デフォルトテンプレートの詳細は、デフォルトのテンプレートセット を参照してください。
基盤となる任意の Operator をインストールして設定します。
- シングルノード OpenShift の Image Based Install Operator の詳細とインストール方法は、Image Based Install Operator を参照してください。
- Assisted Installer をインストールするには、Assisted Installer を使用してオンプレミスクラスターをインストールする を参照してください。
SiteConfig Operator を使用してクラスターをインストールするには、次の手順を実行します。
2.5.2. ターゲット namespace を作成する
プルシークレット、BMC シークレット、追加のマニフェスト ConfigMap
オブジェクト、および ClusterInstance
カスタムリソースを作成する場合は、ターゲット namespace が必要です。
ターゲット namespace を作成するには、次の手順を実行します。
ターゲット namespace の YAML ファイルを作成します。
clusterinstance-namespace.yaml
という名前の次のサンプルファイルを参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: v1 kind: Namespace metadata: name: example-sno
apiVersion: v1 kind: Namespace metadata: name: example-sno
ファイルを適用してリソースを作成します。ハブクラスターで以下のコマンドを実行してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f clusterinstance-namespace.yaml
oc apply -f clusterinstance-namespace.yaml
2.5.3. プルシークレットを作成する
クラスターがコンテナーレジストリーからイメージをプルできるようにするには、プルシークレットが必要です。プルシークレットを作成するには、次の手順を実行します。
イメージをプルするための YAML ファイルを作成します。
pull-secret.yaml
という名前のファイルの次の例を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: v1 kind: Secret metadata: name: pull-secret namespace: example-sno data: .dockerconfigjson: <encoded_docker_configuration> type: kubernetes.io/dockerconfigjson
apiVersion: v1 kind: Secret metadata: name: pull-secret namespace: example-sno
1 data: .dockerconfigjson: <encoded_docker_configuration>
2 type: kubernetes.io/dockerconfigjson
ファイルを適用してリソースを作成します。ハブクラスターで以下のコマンドを実行してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f pull-secret.yaml
oc apply -f pull-secret.yaml
2.5.4. BMC シークレットを作成する
ベースボード管理コントローラー (BMC) に接続するにはシークレットが必要です。シークレットを作成するには、次の手順を実行します。
BMC シークレットの YAML ファイルを作成します。
example-bmc-secret.yaml
という名前の次のサンプルファイルを参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: v1 data: password: <password> username: <username> kind: Secret metadata: name: example-bmh-secret namespace: "example-sno" type: Opaque
apiVersion: v1 data: password: <password> username: <username> kind: Secret metadata: name: example-bmh-secret namespace: "example-sno"
1 type: Opaque
- 1
namespace
値がターゲット namespace と一致していることを確認します。
ファイルを適用してリソースを作成します。ハブクラスターで以下のコマンドを実行してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f example-bmc-secret.yaml
oc apply -f example-bmc-secret.yaml
2.5.5. オプション: 追加のマニフェストを作成する
ClusterInstance
カスタムリソースで参照する必要がある追加のマニフェストを作成できます。追加のマニフェストを作成するには、次の手順を実行します。
追加のマニフェスト
ConfigMap
オブジェクトの YAML ファイル (例:enable-crun.yaml
) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: v1 kind: ConfigMap metadata: name: enable-crun namespace: example-sno data: enable-crun-master.yaml: | apiVersion: machineconfiguration.openshift.io/v1 kind: ContainerRuntimeConfig metadata: name: enable-crun-master spec: machineConfigPoolSelector: matchLabels: pools.operator.machineconfiguration.openshift.io/master: "" containerRuntimeConfig: defaultRuntime: crun enable-crun-worker.yaml: | apiVersion: machineconfiguration.openshift.io/v1 kind: ContainerRuntimeConfig metadata: name: enable-crun-worker spec: machineConfigPoolSelector: matchLabels: pools.operator.machineconfiguration.openshift.io/worker: "" containerRuntimeConfig: defaultRuntime: crun
apiVersion: v1 kind: ConfigMap metadata: name: enable-crun namespace: example-sno
1 data: enable-crun-master.yaml: | apiVersion: machineconfiguration.openshift.io/v1 kind: ContainerRuntimeConfig metadata: name: enable-crun-master spec: machineConfigPoolSelector: matchLabels: pools.operator.machineconfiguration.openshift.io/master: "" containerRuntimeConfig: defaultRuntime: crun enable-crun-worker.yaml: | apiVersion: machineconfiguration.openshift.io/v1 kind: ContainerRuntimeConfig metadata: name: enable-crun-worker spec: machineConfigPoolSelector: matchLabels: pools.operator.machineconfiguration.openshift.io/worker: "" containerRuntimeConfig: defaultRuntime: crun
- 1
namespace
値がターゲット namespace と一致していることを確認します。
ハブクラスターで次のコマンドを実行してリソースを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f enable-crun.yaml
oc apply -f enable-crun.yaml
2.5.6. インストールマニフェストをレンダリングする
ClusterInstance
カスタムリソース内のテンプレートとサポートマニフェストを参照します。デフォルトクラスターおよびノードテンプレートを使用してインストールマニフェストをレンダリングするには、次の手順を実行します。
次の例のように、
example-sno
namespace でclusterinstance-ibi.yaml
という名前のClusterInstance
カスタムリソースを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow apiVersion: siteconfig.open-cluster-management.io/v1alpha1 kind: ClusterInstance metadata: name: "example-clusterinstance" namespace: "example-sno" spec: holdInstallation: false extraManifestsRefs: - name: extra-machine-configs - name: enable-crun pullSecretRef: name: "pull-secret" [...] clusterName: "example-sno" [...] clusterImageSetNameRef: "img4.17-x86-64" [...] templateRefs: - name: ibi-cluster-templates-v1 namespace: rhacm [...] nodes: [...] bmcCredentialsName: name: "example-bmh-secret" [...] templateRefs: - name: ibi-node-templates-v1 namespace: rhacm [...]
apiVersion: siteconfig.open-cluster-management.io/v1alpha1 kind: ClusterInstance metadata: name: "example-clusterinstance" namespace: "example-sno"
1 spec: holdInstallation: false extraManifestsRefs:
2 - name: extra-machine-configs - name: enable-crun pullSecretRef: name: "pull-secret"
3 [...] clusterName: "example-sno"
4 [...] clusterImageSetNameRef: "img4.17-x86-64" [...] templateRefs:
5 - name: ibi-cluster-templates-v1 namespace: rhacm [...] nodes: [...] bmcCredentialsName:
6 name: "example-bmh-secret" [...] templateRefs:
7 - name: ibi-node-templates-v1 namespace: rhacm [...]
- 1
ClusterInstance
カスタムリソース内のnamespace
が、定義したターゲットの namespace と一致していることを確認します。- 2
- 1 つ以上の追加マニフェスト
ConfigMap
オブジェクトのname
を参照します。 - 3
- プルシークレットの
name
を参照します。 - 4
ClusterInstance
カスタムリソースのclusterName
フィールドの値がnamespace
フィールドの値と一致していることを確認します。- 5
spec.templateRefs
フィールドでクラスターレベルのテンプレートのname
を参照してください。デフォルトのインストールテンプレートを使用している場合は、namespace
を Operator がインストールされている namespace と一致させる必要があります。- 6
- BMC シークレットの
name
を参照します。 - 7
spec.nodes.templateRefs
フィールドでノードレベルのテンプレートのname
を参照してください。デフォルトのインストールテンプレートを使用している場合は、namespace
を Operator がインストールされている namespace と一致させる必要があります。
次のコマンドを実行してファイルを適用し、リソースを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f clusterinstance-ibi.yaml
oc apply -f clusterinstance-ibi.yaml
カスタムリソースを作成すると、SiteConfig Operator は
ClusterInstance
カスタムリソースの調整を開始してからインストールマニフェストを検証してレンダリングします。SiteConfig Operator は、
ClusterDeployment
カスタムリソースの変更を継続的に監視し、対応するClusterInstance
カスタムリソースのクラスターインストールの進捗を更新します。次のコマンドを実行してプロセスを監視します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get clusterinstance <cluster_name> -n <target_namespace> -o yaml
oc get clusterinstance <cluster_name> -n <target_namespace> -o yaml
マニフェストの生成が成功すると、
status.conditions
セクションの出力が次の例のようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow message: Applied site config manifests reason: Completed status: "True" type: RenderedTemplatesApplied
message: Applied site config manifests reason: Completed status: "True" type: RenderedTemplatesApplied
次のコマンドを実行して、SiteConfig Operator がレンダリングしたマニフェストを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get clusterinstance <cluster_name> -n <target_namespace> -o jsonpath='{.status.manifestsRendered}'
oc get clusterinstance <cluster_name> -n <target_namespace> -o jsonpath='{.status.manifestsRendered}'
ステータス条件の詳細は、ClusterInstance API を参照してください。