2.2. インストールテンプレートの概要


インストールテンプレートは、インストールアーティファクトのセットを生成するために使用されるデータドリブンテンプレートです。これらのテンプレートは Golang の text/template 形式に従っており、ClusterInstance カスタムリソースのデータを使用してインスタンス化されます。これにより、同様の設定を持ちながらも値が異なる各ターゲットクラスターのインストールマニフェストを動的に作成できるようになります。

さまざまなインストール方法やクラスタートポロジーに基づいて複数のセットを作成することもできます。SiteConfig Operator は、次のタイプのインストールテンプレートをサポートします。

クラスターレベル
クラスター固有のフィールドのみを参照する必要があるテンプレート。
ノードレベル
クラスター固有のフィールドとノード固有のフィールドの両方を参照できるテンプレート。

インストールテンプレートの詳細は、次のドキュメントを参照してください。

2.2.1. テンプレート関数

テンプレート化されたフィールドをカスタマイズできます。SiteConfig Operator は、すべての sprig ライブラリー関数 をサポートします。

ClusterInstance API は、カスタムマニフェストの作成時に使用できる次の関数も提供します。

toYaml
toYaml 関数は、項目を YAML 文字列にエンコードします。項目を YAML に変換できない場合、関数は空の文字列を返します。

次に示す、ClusterInstance.Spec.Proxy フィールドの .toYaml 仕様の例を参照してください。

Copy to Clipboard Toggle word wrap
{{ if .Spec.Proxy }}
  proxy:
{{ .Spec.Proxy | toYaml | indent 4 }}
{{ end }}

2.2.2. デフォルトのテンプレートセット

SiteConfig Operator は、Operator がインストールされているのと同じ namespace に、次の検証済みかつイミュータブルなデフォルトテンプレートセットを提供します。

インストール方法テンプレートタイプファイル名テンプレートコンテンツ

Assisted Installer

クラスターレベルのテンプレート

ai-cluster-templates-v1.yaml

AgentClusterInstall
ClusterDeployment
InfraEnv
KlusterletAddonConfig
ManagedCluster

ノードレベルのテンプレート

ai-node-templates-v1.yaml

BareMetalHost
NMStateConfig

Image-based Install Operator

クラスターレベルのテンプレート

ibi-cluster-templates-v1.yaml

ClusterDeployment
KlusterletAddonConfig
ManagedCluster

ノードレベルのテンプレート

ibi-node-templates-v1.yaml

BareMetalHost
ImageClusterInstall
NetworkSecret

ClusterInstance API の詳細は、ClusterInstance API を参照してください。

2.2.3. 特殊なテンプレート変数

SiteConfig Operator は、テンプレートで使用できる特殊なテンプレート変数のセットを提供します。次のリストを参照してください。

CurrentNode
SiteConfig Operator は、ノードオブジェクトの反復を明示的に制御し、テンプレーティングで処理されている現在のノードのすべてのコンテンツにアクセスするために、この変数を公開します。
InstallConfigOverrides
マージされた networkTypecpuPartitioningMode、および installConfigOverrides コンテンツが含まれます。
ControlPlaneAgents
コントロールプレーンエージェントの数で構成され、ClusterInstance ノードオブジェクトから自動的に導出されます。
WorkerAgents
ワーカーエージェントの数で構成され、ClusterInstance ノードオブジェクトから自動的に導出されます。

テキストテンプレート内のフィールド名を大文字にして、カスタムテンプレート化されたフィールドを作成します。

たとえば、ClusterInstance spec フィールドは .Spec 接頭辞で参照されます。ただし、特殊変数フィールドは .SpecialVars 接頭辞を使用して参照する必要があります。

重要: spec.nodes フィールドに .Spec.Nodes 接頭辞を使用するのではなく、.SpecialVars.CurrentNode 特殊テンプレート変数を使用して参照する必要があります。

たとえば、CurrentNode 特殊テンプレート変数を使用して現在のノードの name および namespace を指定する場合は、次の形式でフィールド名を使用します。

Copy to Clipboard Toggle word wrap
name: "{{ .SpecialVars.CurrentNode.HostName }}"
namespace: "{{ .Spec.ClusterName }}"

2.2.4. マニフェスト順序のカスタマイズ

siteconfig.open-cluster-management.io/sync-wave アノテーションを使用して、マニフェストが作成、更新、削除される順序を制御できます。アノテーションは整数を値として取得し、その整数が wave を構成します。

1 つの wave に 1 つ以上のマニフェストを追加できます。値を指定しない場合、アノテーションはデフォルト値 0 を取得します。

SiteConfig Operator は、リソースの作成時または更新時にマニフェストを昇順で調整し、リソースを降順で削除します。

次の例では、SiteConfig Operator がマニフェストを作成または更新すると、AgentClusterInstall および ClusterDeployment カスタムリソースは最初の wave で調整され、KlusterletAddonConfig および ManagedCluster カスタムリソースは 3 番目の wave で調整されます。

Copy to Clipboard Toggle word wrap
apiVersion: v1
data:
  AgentClusterInstall: |-
    ...
        siteconfig.open-cluster-management.io/sync-wave: "1"
    ...
  ClusterDeployment: |-
    ...
        siteconfig.open-cluster-management.io/sync-wave: "1"
    ...
  InfraEnv: |-
    ...
        siteconfig.open-cluster-management.io/sync-wave: "2"
    ...
  KlusterletAddonConfig: |-
    ...
        siteconfig.open-cluster-management.io/sync-wave: "3"
    ...
  ManagedCluster: |-
    ...
        siteconfig.open-cluster-management.io/sync-wave: "3"
    ...
kind: ConfigMap
metadata:
  name: assisted-installer-templates
  namespace: example-namespace

SiteConfig Operator がリソースを削除すると、KlusterletAddonConfig および ManagedCluster カスタムリソースが最初に削除され、AgentClusterInstall および ClusterDeployment カスタムリソースは最後に削除されます。

2.2.5. 追加のアノテーションとラベルの設定

ClusterInstance API の extraAnnotations フィールドと extraLabels フィールドを使用して、クラスターレベルとノードレベルの両方のインストールマニフェストに追加のアノテーションとラベルを設定できます。SiteConfig Operator は、ClusterInstance リソースで指定したマニフェストに追加のアノテーションとラベルを適用します。

追加のアノテーションとラベルを作成するときは、SiteConfig Operator がそれらをすべての一致するマニフェストに適用できるように、マニフェストタイプを指定する必要があります。ただし、アノテーションとラベルは任意であり、アプリケーションにとって意味のある任意のキーと値のペアを設定できます。

注記: 追加のアノテーションとラベルは、参照されたテンプレートを通じてレンダリングされたリソースにのみ適用されます。

extraAnnotationsextraLabels の次の例の適用例を確認してください。

extraAnnotationsextraLabels の応用例

Copy to Clipboard Toggle word wrap
apiVersion: siteconfig.open-cluster-management.io/v1alpha1
kind: ClusterInstance
metadata:
  name: "example-sno"
  namespace: "example-sno"
spec:
  [...]
  clusterName: "example-sno"
  extraAnnotations: 
1

    ClusterDeployment:
      myClusterAnnotation: success
  extraLabels: 
2

    ManagedCluster:
      common: "true"
      group-du: ""
  nodes:
    - hostName: "example-sno.example.redhat.com"
      role: "master"
      extraAnnotations: 
3

        BareMetalHost:
          myNodeAnnotation: success
      extraLabels: 
4

        BareMetalHost:
          "testExtraLabel": "success"

1 2
このフィールドは、SiteConfig Operator が ManagedCluster マニフェストおよび ClusterDeployment マニフェストに適用するクラスターレベルのアノテーションとラベルをサポートします。
3 4
このフィールドは、SiteConfig Operator が BareMetalHost マニフェストに適用するノードレベルのアノテーションとラベルをサポートします。
  • 次のコマンドを実行すると、追加のラベルが適用されていることを確認できます。

    Copy to Clipboard Toggle word wrap
    oc get managedclusters example-sno -ojsonpath='{.metadata.labels}' | jq

    適用されたラベルの次の例を確認してください。

    適用されたラベルの例

    Copy to Clipboard Toggle word wrap
    {
      "common": "true",
      "group-du": "",
      ...
    }

  • 次のコマンドを実行すると、追加のアノテーションが適用されていることを確認できます。
Copy to Clipboard Toggle word wrap
oc get bmh example-sno.example.redhat.com -n example-sno -ojsonpath='{.metadata.annotations}' | jq

適用されたアノテーションの次の例を確認してください。

適用されたアノテーションの例

Copy to Clipboard Toggle word wrap
{
  "myNodeAnnotation": "success",
  ...
}

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.