19.17. GitOps ZTP のトラブルシューティング
前述のように、ArgoCD パイプラインは、Git リポジトリーからハブクラスターに SiteConfig および PolicyGenTemplate カスタムリソース (CR) を同期します。このプロセスで、同期後フックはハブクラスターにも適用されるインストールおよびポリシー CR を作成します。このプロセスで発生する可能性のある問題のトラブルシューティングを行うには、以下の手順に従います。
19.17.1. インストール CR の生成の検証 リンクのコピーリンクがクリップボードにコピーされました!
SiteConfig は、サイト名と一致する名前を持つ namespace のハブクラスターに Installation カスタムリソース (CR) を適用します。ステータスを確認するには、以下のコマンドを入力します。
$ oc get AgentClusterInstall -n <cluster_name>
オブジェクトが返されない場合は、以下の手順を使用して ArgoCD パイプラインフローを SiteConfig からインストール CR にトラブルシューティングします。
手順
以下のコマンドのいずれかを使用して、
SiteConfigからハブクラスターへの同期を確認します。$ oc get siteconfig -Aまたは
$ oc get siteconfig -n clusters-subSiteConfigがない場合、以下のいずれかの状況が発生しました。クラスター アプリケーションは、Git リポジトリーからハブへの CR の同期に失敗しました。以下のコマンドを使用してこれを確認します。
$ oc describe -n openshift-gitops application clustersStatus: SyncedおよびRevision:は、サブスクライブしたリポジトリーにプッシュしたコミットの SHA です。- 同期前のフックが失敗しました。コンテナーイメージのプルに失敗した可能性があります。ArgoCD ダッシュボードで、クラスター アプリケーションで同期前のジョブのステータスを確認します。
post フックのジョブ実行を確認します。
$ oc describe job -n clusters-sub siteconfig-post-
成功すると、返される出力は
succeeded: 1となります。 - ジョブが失敗すると、ArgoCD はこれを再試行します。場合によっては、最初のパスが失敗し、2 番目のパスにジョブが渡されることを示すことがあります。
-
成功すると、返される出力は
post フックのジョブでエラーの有無を確認します。
$ oc get pod -n clusters-subsiteconfig-post-xxxxxPod の名前をメモします。$ oc logs -n clusters-sub siteconfig-post-xxxxxログでエラーを示す場合は、条件を修正し、修正された
SiteConfigまたはPolicyGenTemplateを Git リポジトリーにプッシュします。
19.17.2. ポリシー CR の生成の検証 リンクのコピーリンクがクリップボードにコピーされました!
ArgoCD は、ポリシーカスタムリソース (CR) を作成した PolicyGenTemplate と同じ namespace に生成します。同じトラブルシューティングフローは、共通、グループ、またはサイト ベースであるかに関係なく、PolicyGenTemplate から生成されたすべてのポリシー CR に適用されます。
ポリシー CR のステータスを確認するには、以下のコマンドを入力します。
$ export NS=<namespace>
$ oc get policy -n $NS
返される出力には、ポリシーラップされた CR の予想されるセットが表示されます。オブジェクトが返されない場合は、以下の手順を使用して ArgoCD パイプラインフローを SiteConfig からポリシー CR にトラブルシューティングします。
手順
PolicyGenTemplateのハブクラスターへの同期を確認します。$ oc get policygentemplate -Aまたは
$ oc get policygentemplate -n $NSPolicyGenTemplateが同期されていない場合、以下のいずれかの状況が発生しました。クラスターアプリケーションは、Git リポジトリーからハブへの CR の同期に失敗しました。以下のコマンドを使用してこれを確認します。
$ oc describe -n openshift-gitops application clustersStatus: SyncedおよびRevision:は、サブスクライブしたリポジトリーにプッシュしたコミットの SHA です。- 同期前のフックが失敗しました。コンテナーイメージのプルに失敗した可能性があります。ArgoCD ダッシュボードで、クラスター アプリケーションで同期前のジョブのステータスを確認します。
ポリシーがクラスターの namespace にコピーされていることを確認します。ACM がそのポリシーを
ManagedClusterに適用すると、ACM はポリシー CR オブジェクトをクラスターの namespace に適用します。$ oc get policy -n <cluster_name>ACM は、該当する共通、グループ、およびサイトポリシーをすべてここにコピーします。ポリシー名は
<policyNamespace>および<policyName> です。クラスター namespace にコピーされないポリシーの配置ルールを確認します。これらのポリシーの
PlacementRuleのmatchSelectorは、ManagedClusterのラベルと一致する必要があります 。$ oc get placementrule -n $NS見つからない common、group、または site ポリシーの
PlacementRule名をメモします。oc get placementrule -n $NS <placmentRuleName> -o yaml-
status decisions値にはクラスター名が含まれる必要があります。 仕様の
matchSelectorのkey valueは、マネージドクラスターのラベルと一致する必要があります。ManagedClusterのラベルを確認します。oc get ManagedCluster $CLUSTER -o jsonpath='{.metadata.labels}' | jq例
apiVersion: apps.open-cluster-management.io/v1 kind: PlacementRule metadata: name: group-test1-policies-placementrules namespace: group-test1-policies spec: clusterSelector: matchExpressions: - key: group-test1 operator: In values: - "" status: decisions: - clusterName: <cluster_name> clusterNamespace: <cluster_name>
-
すべてのポリシーが準拠していることを確認します。
oc get policy -n $CLUSTERNamespace、OperatorGroup、および Subscription ポリシーが準拠していても、Operator 設定ポリシーが準拠していない場合は、Operator がインストールされていない可能性があります。