

 **このページの改善にご協力ください** 

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「**GitHub でこのページを編集する**」リンクを選択してください。

# Argo CD 機能に関する問題をトラブルシューティングする
<a name="argocd-troubleshooting"></a>

このトピックでは、機能のヘルスチェック、アプリケーション同期の問題、リポジトリ認証、マルチクラスターデプロイなど、EKS Capability for Argo CD をトラブルシューティングする際のガイダンスを示します。

**注記**  
EKS の機能は完全に管理され、クラスターの外部で実行されます。Argo CD サーバーログや `argocd` 名前空間にアクセスすることはできません。トラブルシューティングでは、機能のヘルス、アプリケーションのステータス、および設定に焦点を当てています。

## 機能はアクティブなのにアプリケーションが同期しない
<a name="_capability_is_active_but_applications_arent_syncing"></a>

Argo CD 機能のステータスが `ACTIVE` であるのにアプリケーションが同期しない場合は、機能のヘルスとアプリケーションのステータスを確認してください。

 **機能のヘルスを確認する**:

機能のヘルスとステータスの問題は、EKS コンソールまたは AWS CLI を使用して表示できます。

 **コンソール:**

1. https://console.aws.amazon.com/eks/home\$1/clusters で Amazon EKS コンソールを開きます。

1. クラスター名を選択します。

1. **[オブザーバビリティ]** タブを選択します。

1. **[クラスターを監視する]** を選択します。

1. **[機能]** タブを選択すると、すべての機能のヘルスとステータスが表示されます。

 **AWS CLI**:

```
# View capability status and health
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd

# Look for issues in the health section
```

 **一般的な原因:**
+  **リポジトリが設定されていない**: Git リポジトリが Argo CD に追加されていません。
+  **認証に失敗した**: SSH キー、トークン、または CodeCommit 認証情報が無効です。
+  **Application が作成されていない**: クラスターに Application リソースが存在しません。
+  **同期ポリシー**: 手動同期が必要です (自動同期は有効になっていません)。
+  **IAM アクセス許可**: CodeCommit または Secrets Manager に対するアクセス許可がありません。

 **アプリケーションのステータスを確認する**:

```
# List applications
kubectl get application -n argocd

# View sync status
kubectl get application my-app -n argocd -o jsonpath='{.status.sync.status}'

# View application health
kubectl get application my-app -n argocd -o jsonpath='{.status.health}'
```

 **アプリケーションの条件を確認する**:

```
# Describe application to see detailed status
kubectl describe application my-app -n argocd

# View application health
kubectl get application my-app -n argocd -o jsonpath='{.status.health}'
```

## アプリケーションが「進行中」のまま変化しない
<a name="_applications_stuck_in_progressing_state"></a>

アプリケーションが `Progressing` であるのに `Healthy` に達しない場合は、アプリケーションのリソースステータスとイベントを確認してください。

 **リソースのヘルスを確認する**:

```
# View application resources
kubectl get application my-app -n argocd -o jsonpath='{.status.resources}'

# Check for unhealthy resources
kubectl describe application my-app -n argocd | grep -A 10 "Health Status"
```

 **一般的な原因:**
+  **デプロイの準備が完了していない**: ポッドの起動に失敗したか、準備状況プローブが失敗しています。
+  **リソースの依存関係**: リソースが他のリソースの準備を待っています。
+  **イメージプルエラー**: コンテナイメージにアクセスできません。
+  **リソースが不十分**: クラスターでポッドの CPU やメモリが不足しています。

 **ターゲットクラスターの設定を検証する** (マルチクラスター設定の場合):

```
# List registered clusters
kubectl get secret -n argocd -l argocd.argoproj.io/secret-type=cluster

# View cluster secret details
kubectl get secret cluster-secret-name -n argocd -o yaml
```

## リポジトリの認証に失敗する
<a name="_repository_authentication_failures"></a>

Argo CD が Git リポジトリにアクセスできない場合は、認証設定を確認してください。

 **CodeCommit リポジトリの場合**:

IAM 機能ロールに CodeCommit へのアクセス許可があることを確認します。

```
# View IAM policies
aws iam list-attached-role-policies --role-name my-argocd-capability-role
aws iam list-role-policies --role-name my-argocd-capability-role

# Get specific policy details
aws iam get-role-policy --role-name my-argocd-capability-role --policy-name policy-name
```

ロールにはリポジトリに対する `codecommit:GitPull` アクセス許可が必要です。

 **プライベート Git リポジトリの場合**:

リポジトリの認証情報が正しく設定されていることを確認します。

```
# Check repository secret exists
kubectl get secret -n argocd repo-secret-name -o yaml
```

シークレットに適切な認証情報 (SSH キー、トークン、またはユーザー名/パスワード) が含まれていることを確認します。

 **Secrets Manager を使用するリポジトリの場合**:

```
# Verify IAM Capability Role has Secrets Manager permissions
aws iam list-attached-role-policies --role-name my-argocd-capability-role

# Test secret retrieval
aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:region-code:111122223333:secret:my-secret
```

## マルチクラスターデプロイに関する問題
<a name="_multi_cluster_deployment_issues"></a>

アプリケーションがリモートクラスターにデプロイされていない場合は、クラスターの登録とアクセスの設定を確認してください。

 **クラスターの登録を確認する**:

```
# List registered clusters
kubectl get secret -n argocd -l argocd.argoproj.io/secret-type=cluster

# Verify cluster secret format
kubectl get secret CLUSTER_SECRET_NAME -n argocd -o yaml
```

`server` フィールドに、Kubernetes API URL ではなく EKS クラスター ARN が含まれていることを確認します。

 **ターゲットクラスターのアクセスエントリを確認する**:

ターゲットクラスターで、Argo CD 機能ロールにアクセスエントリがあることを確認します。

```
# List access entries (run on target cluster or use AWS CLI)
aws eks list-access-entries --cluster-name target-cluster

# Describe specific access entry
aws eks describe-access-entry \
  --cluster-name target-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/my-argocd-capability-role
```

 **クロスアカウントの IAM アクセス許可を確認する**:

クロスアカウントデプロイの場合、ターゲットクラスターで Argo CD 機能ロールにアクセスエントリがあることを確認します。マネージド機能は、IAM ロールの引き受けではなく、クロスアカウントアクセスの EKS アクセスエントリを使用します。

マルチクラスター設定の詳細については、「[ターゲットクラスターを登録する](argocd-register-clusters.md)」を参照してください。

## 次のステップ
<a name="_next_steps"></a>
+  [Argo CD に関する考慮事項](argocd-considerations.md) - Argo CD の考慮事項とベストプラクティス
+  [Argo CD の使用](working-with-argocd.md) - Argo CD Application を作成して管理する
+  [ターゲットクラスターを登録する](argocd-register-clusters.md) - マルチクラスターデプロイを設定する
+  [EKS 機能をトラブルシューティングする](capabilities-troubleshooting.md) - 一般的な機能をトラブルシューティングする際のガイダンス