16.2.2.4. GitOps ZTP を使用した OADP Operator のインストールと設定
アップグレードを開始する前に、GitOps ZTP を使用して OADP Operator をインストールして設定します。
手順
ztp-site-generateコンテナーイメージから次の CR を抽出し、source-crディレクトリーにプッシュします。OadpSubscriptionNS.yamlファイルの例:apiVersion: v1 kind: Namespace metadata: name: openshift-adp annotations: ran.openshift.io/ztp-deploy-wave: "2" labels: kubernetes.io/metadata.name: openshift-adpOadpSubscriptionOperGroup.yamlファイルの例:apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: redhat-oadp-operator namespace: openshift-adp annotations: ran.openshift.io/ztp-deploy-wave: "2" spec: targetNamespaces: - openshift-adpOadpSubscription.yamlファイルの例:apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: redhat-oadp-operator namespace: openshift-adp annotations: ran.openshift.io/ztp-deploy-wave: "2" spec: channel: stable-1.4 name: redhat-oadp-operator source: redhat-operators sourceNamespace: openshift-marketplace installPlanApproval: Manual status: state: AtLatestKnownOadpOperatorStatus.yamlファイルの例:apiVersion: operators.coreos.com/v1 kind: Operator metadata: name: redhat-oadp-operator.openshift-adp annotations: ran.openshift.io/ztp-deploy-wave: "2" status: components: refs: - kind: Subscription namespace: openshift-adp conditions: - type: CatalogSourcesUnhealthy status: "False" - kind: InstallPlan namespace: openshift-adp conditions: - type: Installed status: "True" - kind: ClusterServiceVersion namespace: openshift-adp conditions: - type: Succeeded status: "True" reason: InstallSucceededディレクトリー構造の例:
├── kustomization.yaml ├── sno │ ├── example-cnf.yaml │ ├── ran-common.yaml │ ├── ran-group-du-sno-templated.yaml │ ├── ran-group-du-sno-validator.yaml │ └── ns.yaml ├── source-crs │ ├── OadpSubscriptionNS.yaml │ ├── OadpSubscriptionOperGroup.yaml │ ├── OadpSubscription.yaml │ ├── OadpOperatorStatus.yaml共通の
PolicyGeneratorCR に CR を追加します。apiVersion: policy.open-cluster-management.io/v1 kind: PolicyGenerator metadata: name: common-latest placementBindingDefaults: name: common-latest-placement-binding policyDefaults: namespace: ztp-common placement: labelSelector: common: "true" du-profile: "latest" remediationAction: inform severity: low evaluationInterval: compliant: 10m noncompliant: 10s policies: - name: subscriptions-policy policyAnnotations: ran.openshift.io/ztp-deploy-wave: "2" manifests: - path: source-crs/data-protection/OadpSubscriptionNS.yaml - path: source-crs/data-protection/OadpSubscriptionOperGroup.yaml - path: source-crs/data-protection/OadpSubscription.yaml - path: source-crs/data-protection/OadpOperatorStatus.yaml [...]ターゲットクラスター専用の
DataProtectionApplicationCR と S3 シークレットを作成します。ztp-site-generateコンテナーイメージから次の CR を抽出し、source-crディレクトリーにプッシュします。OadpDataProtectionApplication.yamlファイルの例:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: dataprotectionapplication namespace: openshift-adp annotations: ran.openshift.io/ztp-deploy-wave: "100" spec: configuration: restic: enable: false velero: defaultPlugins: - aws - openshift resourceTimeout: 10m backupLocations: - velero: config: profile: "default" region: minio s3Url: $url insecureSkipTLSVerify: "true" s3ForcePathStyle: "true" provider: aws default: true credential: key: cloud name: cloud-credentials objectStorage: bucket: $bucketName prefix: $prefixName status: conditions: - reason: Complete status: "True" type: Reconciled-
永続ボリュームの内容はアップグレード後に保持され、再利用されるため、イメージベースアップグレードでは
spec.configuration.restic.enableをfalseに設定する必要があります。 -
bucketは、S3 バックエンドで作成されるバケット名を定義します。prefixは、バケット内に自動的に作成されるサブディレクトリーの名前を定義します。バケットと接頭辞の組み合わせは、それらの間の干渉を避けるために、各ターゲットクラスターごとに一意である必要があります。各ターゲットクラスターに一意のストレージディレクトリーを確保するには、Red Hat Advanced Cluster Management のハブテンプレート機能を使用できます (例:prefix: {{hub .ManagedClusterName hub}})。
OadpSecret.yamlファイルの例:apiVersion: v1 kind: Secret metadata: name: cloud-credentials namespace: openshift-adp annotations: ran.openshift.io/ztp-deploy-wave: "100" type: OpaqueOadpBackupStorageLocationStatus.yamlファイルの例:apiVersion: velero.io/v1 kind: BackupStorageLocation metadata: name: dataprotectionapplication-1 namespace: openshift-adp annotations: ran.openshift.io/ztp-deploy-wave: "100" status: phase: AvailableBackupStorageLocationリソースのnameの値は、対応するDataProtectionApplicationリソースと一致する特定の命名規則に従う必要があります。-
名前は、
<DataProtectionApplication.metadata.name>-<index>のパターンを使用する必要があります。 -
<index>は、DataProtectionApplicationリソースのspec.backupLocationsフィールド内の対応するエントリーの位置を表します。位置は1から始まります。 -
OadpDataProtectionApplication.yamlファイルでDataProtectionApplicationリソースのmetadata.nameの値を変更する場合は、BackupStorageLocationリソースのmetadata.nameフィールドも新しい値に合わせて更新する必要があります。
OadpBackupStorageLocationStatus.yamlCR は、OADP によって作成されたバックアップストレージの場所の可用性を確認します。-
永続ボリュームの内容はアップグレード後に保持され、再利用されるため、イメージベースアップグレードでは
オーバーライド付きの
ポリシー生成CR をサイトに追加します。apiVersion: policy.open-cluster-management.io/v1 kind: PolicyGenerator metadata: name: example-cnf placementBindingDefaults: name: example-cnf-placement-binding policyDefaults: namespace: ztp-site placement: labelSelector: matchExpressions: - key: sites operator: In values: - example-cnf - key: du-profile operator: In values: - latest remediationAction: inform severity: low evaluationInterval: compliant: 10m noncompliant: 10s policies: - name: oadp-config-policy policyAnnotations: ran.openshift.io/ztp-deploy-wave: "100" manifests: ... - path: source-crs/data-protection/OadpSecret.yaml patches: - data: cloud: <your_credentials> - path: source-crs/data-protection/OadpDataProtectionApplication.yaml patches: - spec: backupLocations: - velero: config: region: minio s3Url: <your_S3_URL> profile: "default" insecureSkipTLSVerify: "true" s3ForcePathStyle: "true" provider: aws default: true credential: key: cloud name: cloud-credentials objectStorage: bucket: ibu prefix: '{{hub .ManagedClusterName hub}}' - path: source-crs/data-protection/OadpBackupStorageLocationStatus.yaml各項目の説明:
your_credentials- S3 ストレージバックエンドの認証情報を指定します。
OadpDataProtectionApplication.yaml-
OadpDataProtectionApplicationCR に複数のbackupLocationsエントリーが定義されている場合は、ステータス追跡のために、対応するOadpBackupStorageLocationCR がそれぞれの場所に追加されていることを確認します。追加の各OadpBackupStorageLocationCR の名前が、OadpBackupStorageLocationStatus.yamlファイルの例で説明されている正しいインデックスでオーバーライドされていることを確認してください。 your_S3_URL- S3 互換バケットの URL を指定します。
bucketとprefix-
bucket は、S3 バックエンドで作成されるバケット名を定義します。たとえば、ibu です。prefixは、bucket内に自動的に作成されるサブディレクトリーの名前を定義します。bucketとprefixの組み合わせは、それらの間の干渉を避けるために、各ターゲットクラスターごとに一意である必要があります。各ターゲットクラスターに固有のストレージディレクトリーを確保するには、例に示すように、Red Hat Advanced Cluster Management のハブテンプレート機能を使用できます。