19.14. クラスターアクティビティーを監視するための RAN ポリシーの適用


ゼロ変更プロビジョニング (ZTP) は Red Hat Advanced Cluster Management(RHACM) を使用して、ラジオアクセスネットワーク (RAN) ポリシーを適用し、クラスターアクティビティーを自動的に監視します。

ポリシージェネレーター (PolicyGen) は、事前定義されたカスタムリソースからの ACM ポリシーの作成を容易にする Kustomize プラグインです。Policy Categorization、Source CR ポリシー、および PolicyGenTemplate の 3 つの主要な項目があります。PolicyGen は、ポリシーと配置のバインディングおよびルールを生成するものに依存します。

以下の図は、RAN ポリシージェネレーターが GitOps および ACM と対話する方法を示しています。

RAN policy generator

RAN ポリシーは主に 3 つのグループに分類されます。

Common
Common カテゴリーに存在するポリシーは、サイトプランによって表されるすべてのクラスターに適用されます。
グループ
Groups カテゴリーに存在するポリシーは、クラスターのグループに適用されます。クラスターのすべてのグループには、Groups カテゴリー下に存在する独自のポリシーを指定できます。たとえば、Groups/group1 は、group1 に属するクラスターに適用される独自のポリシーを持つことができます。
サイト
Sites カテゴリーに存在するポリシーが特定のクラスターに適用されます。クラスターでは、Sites カテゴリーに存在する独自のポリシーを指定できます。たとえば、Sites/cluster1 の独自のポリシーが cluster1 に適用されます。

以下の図は、ポリシーの生成方法を示しています。

Generating policies

19.14.1. ソースカスタムリソースポリシーの適用

ソースカスタムリソースポリシーには、以下が含まれます。

  • SR-IOV ポリシー
  • PTP ポリシー
  • Performance Add-on Operator ポリシー
  • MachineConfigPool ポリシー
  • SCTP ポリシー

メタデータまたは spec/data への使用可能なオーバーレイを考慮して、ACM ポリシーを生成するソースカスタムリソースを定義する必要があります。たとえば、common-namespace-policy には、全マネージドクラスターに存在する namespace 定義が含まれます。この namespace は Common category の下に配置され、すべてのクラスターではその仕様やデータは変更されません。

Namespace ポリシーの例

以下の例は、この namespace のソースカスタムリソースを示しています。

apiVersion: v1
kind: Namespace
metadata:
 name: openshift-sriov-network-operator
 labels:
   openshift.io/run-level: "1"
Copy to Clipboard Toggle word wrap

出力例

この namespace を適用する生成されたポリシーには、以下の例のように変更なしに上記のように namespace が含まれます。

apiVersion: policy.open-cluster-management.io/v1
kind: Policy
metadata:
   name: common-sriov-sub-ns-policy
   namespace: common-sub
   annotations:
       policy.open-cluster-management.io/categories: CM Configuration Management
       policy.open-cluster-management.io/controls: CM-2 Baseline Configuration
       policy.open-cluster-management.io/standards: NIST SP 800-53
spec:
   remediationAction: enforce
   disabled: false
   policy-templates:
       - objectDefinition:
           apiVersion: policy.open-cluster-management.io/v1
           kind: ConfigurationPolicy
           metadata:
               name: common-sriov-sub-ns-policy-config
           spec:
               remediationAction: enforce
               severity: low
               namespaceselector:
                   exclude:
                       - kube-*
                   include:
                       - '*'
               object-templates:
                   - complianceType: musthave
                     objectDefinition:
                       apiVersion: v1
                       kind: Namespace
                       metadata:
                           labels:
                               openshift.io/run-level: "1"
                           name: openshift-sriov-network-operator
Copy to Clipboard Toggle word wrap

SRIOV ポリシーの例

以下の例は、クラスターごとに異なる仕様を持つ異なるクラスターに存在する SriovNetworkNodePolicy 定義を示しています。この例では、SriovNetworkNodePolicy のソースカスタムリソースも示しています。

apiVersion: sriovnetwork.openshift.io/v1
kind: SriovNetworkNodePolicy
metadata:
  name: sriov-nnp
  namespace: openshift-sriov-network-operator
spec:
  # The $ tells the policy generator to overlay/remove the spec.item in the generated policy.
  deviceType: $deviceType
  isRdma: false
  nicSelector:
    pfNames: [$pfNames]
  nodeSelector:
    node-role.kubernetes.io/worker: ""
  numVfs: $numVfs
  priority: $priority
  resourceName: $resourceName
Copy to Clipboard Toggle word wrap

出力例

SriovNetworkNodePolicy 名と namespace はすべてのクラスターで同じであるため、どちらもソース SriovNetworkNodePolicy で定義されます。ただし、生成されたポリシーには、$deviceType$numVfs を各クラスターのポリシーを調整するために入力パラメーターとして必要になります。以下の例のように、生成されたポリシーが表示されます。

apiVersion: policy.open-cluster-management.io/v1
kind: Policy
metadata:
    name: site-du-sno-1-sriov-nnp-mh-policy
    namespace: sites-sub
    annotations:
        policy.open-cluster-management.io/categories: CM Configuration Management
        policy.open-cluster-management.io/controls: CM-2 Baseline Configuration
        policy.open-cluster-management.io/standards: NIST SP 800-53
spec:
    remediationAction: enforce
    disabled: false
    policy-templates:
        - objectDefinition:
            apiVersion: policy.open-cluster-management.io/v1
            kind: ConfigurationPolicy
            metadata:
                name: site-du-sno-1-sriov-nnp-mh-policy-config
            spec:
                remediationAction: enforce
                severity: low
                namespaceselector:
                    exclude:
                        - kube-*
                    include:
                        - '*'
                object-templates:
                    - complianceType: musthave
                      objectDefinition:
                        apiVersion: sriovnetwork.openshift.io/v1
                        kind: SriovNetworkNodePolicy
                        metadata:
                            name: sriov-nnp-du-mh
                            namespace: openshift-sriov-network-operator
                        spec:
                            deviceType: vfio-pci
                            isRdma: false
                            nicSelector:
                                pfNames:
                                    - ens7f0
                            nodeSelector:
                                node-role.kubernetes.io/worker: ""
                            numVfs: 8
                            resourceName: du_mh
Copy to Clipboard Toggle word wrap
注記

必要な入力パラメーターを $value で定義する (例: $deviceType) は必須ではありません。$ は、ポリシージェネレーターに対して、生成されたポリシーからアイテムを削除するか、または生成されたポリシーからアイテムを削除します。そうしないと、値は変更されません。

19.14.2. PolicyGenTemplate

PolicyGenTemplate.yaml ファイルはカスタムリソース定義 (CRD) で、生成されたポリシーを分類する場所と上書きする必要のある項目を指示するカスタムリソース定義 (CRD) です。

以下の例は、PolicyGenTemplate.yaml ファイルを示しています。

apiVersion: ran.openshift.io/v1
kind: PolicyGenTemplate
metadata:
  name: "group-du-sno"
  namespace: "group-du-sno"
spec:
  bindingRules:
    group-du-sno: ""
  mcp: "master"
  sourceFiles:
    - fileName: ConsoleOperatorDisable.yaml
      policyName: "console-policy"
    - fileName: ClusterLogging.yaml
      policyName: "cluster-log-policy"
      spec:
        curation:
          curator:
            schedule: "30 3 * * *"
          collection:
            logs:
              type: "fluentd"
              fluentd: {}
Copy to Clipboard Toggle word wrap

group-du-ranGen.yaml ファイルは、group-du という名前のグループ下のポリシーグループを定義します。このファイルは、sourceFiles で定義される他のポリシーのノードセレクターとして使用される MachineConfigPool worker-du を定義します。sourceFiles に存在するすべてのソースファイルに ACM ポリシーが生成されます。また、group-du ポリシーのクラスター選択ルールを有効にするために、単一の配置バインディングと配置ルールが生成されます。

ソースファイル PtpConfigSlave.yaml を例として使用し、PtpConfigSlave には PtpConfig カスタムリソース (CR) の定義があります。PtpConfigSlave サンプルの生成ポリシーは group-du-ptp-config-policy という名前です。生成された group-du-ptp-config-policy に定義される PtpConfig CR は du-ptp-slave という名前です。PtpConfigSlave.yaml で定義された spec は、du-ptp-slave の下に、ソースファイルで定義された他の spec 項目と共に配置されます。

以下の例は、group-du-ptp-config-policy を示しています。

apiVersion: policy.open-cluster-management.io/v1
kind: Policy
metadata:
  name: group-du-ptp-config-policy
  namespace: groups-sub
  annotations:
    policy.open-cluster-management.io/categories: CM Configuration Management
    policy.open-cluster-management.io/controls: CM-2 Baseline Configuration
    policy.open-cluster-management.io/standards: NIST SP 800-53
spec:
    remediationAction: enforce
    disabled: false
    policy-templates:
        - objectDefinition:
            apiVersion: policy.open-cluster-management.io/v1
            kind: ConfigurationPolicy
            metadata:
                name: group-du-ptp-config-policy-config
            spec:
                remediationAction: enforce
                severity: low
                namespaceselector:
                    exclude:
                        - kube-*
                    include:
                        - '*'
                object-templates:
                    - complianceType: musthave
                      objectDefinition:
                        apiVersion: ptp.openshift.io/v1
                        kind: PtpConfig
                        metadata:
                            name: slave
                            namespace: openshift-ptp
                        spec:
                            recommend:
                                - match:
                                - nodeLabel: node-role.kubernetes.io/worker-du
                                  priority: 4
                                  profile: slave
                            profile:
                                - interface: ens5f0
                                  name: slave
                                  phc2sysOpts: -a -r -n 24
                                  ptp4lConf: |
                                    [global]
                                    #
                                    # Default Data Set
                                    #
                                    twoStepFlag 1
                                    slaveOnly 0
                                    priority1 128
                                    priority2 128
                                    domainNumber 24
                                    .....
Copy to Clipboard Toggle word wrap

19.14.3. カスタムリソースポリシー作成時の考慮事項

  • ACM ポリシーの作成に使用されるカスタムリソースは、そのメタデータおよび仕様/データへの使用可能なオーバーレイに基づいて定義する必要があります。たとえば、カスタムリソース metadata.name がクラスター間で変更されない場合は、カスタムリソースファイルに metadata.name 値を設定する必要があります。カスタムリソースに同じクラスターに複数のインスタンスがある場合、カスタムリソース metadata.name はポリシーテンプレートファイルで定義する必要があります。
  • 特定のマシン設定プールのノードセレクターを適用するには、ポリシージェネレーターがポリシーテンプレートで mcp の値で $mcp 値をセットアップするには、ノードセレクターの値を $mcp に設定する必要があります。
  • サブスクリプションソースファイルは変更されません。

19.14.4. RAN ポリシーの生成

前提条件

手順

  1. policyGenerator.yaml ファイルを参照するように kustomization.yaml ファイルを設定します。以下の例は、PolicyGenerator 定義を示しています。

    apiVersion: policyGenerator/v1
    kind: PolicyGenerator
    metadata:
      name: acm-policy
      namespace: acm-policy-generator
    # The arguments should be given and defined as below with same order --policyGenTempPath= --sourcePath= --outPath= --stdout --customResources
    argsOneLiner: ./ranPolicyGenTempExamples ./sourcePolicies ./out true false
    Copy to Clipboard Toggle word wrap

    ここで、

    • policyGenTempPathpolicyGenTemp ファイルへのパスです。
    • sourcePath: ソースポリシーへのパスです。
    • outPath: 生成された ACM ポリシーを保存するパスです。
    • stdout: true の場合、生成されたポリシーをコンソールに出力します。
    • CustomResources : true の場合、ACM ポリシーなしで sourcePolicies ファイルから CR を生成します。
  2. 以下のコマンドを実行して PolicyGen をテストします。

    $ cd cnf-features-deploy/ztp/ztp-policy-generator/
    Copy to Clipboard Toggle word wrap
    $ XDG_CONFIG_HOME=./ kustomize build --enable-alpha-plugins
    Copy to Clipboard Toggle word wrap

    以下の例のように、out ディレクトリーが想定されるポリシーで作成されます。

    out
    ├── common
    │   ├── common-log-sub-ns-policy.yaml
    │   ├── common-log-sub-oper-policy.yaml
    │   ├── common-log-sub-policy.yaml
    │   ├── common-pao-sub-catalog-policy.yaml
    │   ├── common-pao-sub-ns-policy.yaml
    │   ├── common-pao-sub-oper-policy.yaml
    │   ├── common-pao-sub-policy.yaml
    │   ├── common-policies-placementbinding.yaml
    │   ├── common-policies-placementrule.yaml
    │   ├── common-ptp-sub-ns-policy.yaml
    │   ├── common-ptp-sub-oper-policy.yaml
    │   ├── common-ptp-sub-policy.yaml
    │   ├── common-sriov-sub-ns-policy.yaml
    │   ├── common-sriov-sub-oper-policy.yaml
    │   └── common-sriov-sub-policy.yaml
    ├── groups
    │   ├── group-du
    │   │   ├── group-du-mc-chronyd-policy.yaml
    │   │   ├── group-du-mc-mount-ns-policy.yaml
    │   │   ├── group-du-mcp-du-policy.yaml
    │   │   ├── group-du-mc-sctp-policy.yaml
    │   │   ├── group-du-policies-placementbinding.yaml
    │   │   ├── group-du-policies-placementrule.yaml
    │   │   ├── group-du-ptp-config-policy.yaml
    │   │   └── group-du-sriov-operconfig-policy.yaml
    │   └── group-sno-du
    │       ├── group-du-sno-policies-placementbinding.yaml
    │       ├── group-du-sno-policies-placementrule.yaml
    │       ├── group-sno-du-console-policy.yaml
    │       ├── group-sno-du-log-forwarder-policy.yaml
    │       └── group-sno-du-log-policy.yaml
    └── sites
        └── site-du-sno-1
            ├── site-du-sno-1-policies-placementbinding.yaml
            ├── site-du-sno-1-policies-placementrule.yaml
            ├── site-du-sno-1-sriov-nn-fh-policy.yaml
            ├── site-du-sno-1-sriov-nnp-mh-policy.yaml
            ├── site-du-sno-1-sriov-nw-fh-policy.yaml
            ├── site-du-sno-1-sriov-nw-mh-policy.yaml
            └── site-du-sno-1-.yaml
    Copy to Clipboard Toggle word wrap

    一般的なポリシーは、すべてのクラスターに適用されるため、フラットです。ただし、グループとサイトには、異なるクラスターに適用されるため、グループとサイトごとにサブディレクトリーがあります。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る