

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

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

# Argo CD 機能を作成する
<a name="create-argocd-capability"></a>

このトピックでは、Amazon EKS クラスターに Argo CD 機能を作成する方法について説明します。

## 前提条件
<a name="_prerequisites"></a>

Argo CD 機能を作成する前に、以下の点を確認してください。
+ サポート対象の Kubernetes バージョン (標準サポートと延長サポートのすべてのバージョンがサポート対象) を実行している Amazon EKS クラスターが存在する
+  **AWS アイデンティティセンターが設定されている** - Argo CD の認証に必要 (ローカルユーザーはサポート対象外)
+ Argo CD に対するアクセス許可が付与された IAM 機能ロールがある
+ EKS クラスターに機能リソースを作成するための十分な IAM アクセス許可がある
+  クラスターと通信できるように `kubectl` が設定されていること
+ (オプション) Argo CD CLI をインストールしてクラスターとリポジトリの管理を容易にしている
+ (CLI/eksctl の場合) 適切な CLI ツールがインストールおよび設定されている

IAM 機能ロールを作成する手順については、「[Amazon EKS 機能 IAM ロール](capability-role.md)」を参照してください。アイデンティティセンターのセットアップについては、「[AWS アイデンティティセンターの使用を開始する](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)」を参照してください。

**重要**  
Argo CD でどの AWS リソースにアクセスできるかは、どの IAM 機能ロールを使用するかによって決まります。例えば、Git リポジトリへのアクセスには CodeConnections を利用し、シークレットへのアクセスには Secrets Manager を使用します。最小特権のアクセス許可を付与した適切なロールを作成する際のガイダンスについては、「[Amazon EKS 機能 IAM ロール](capability-role.md)」および「[EKS 機能のセキュリティに関する考慮事項](capabilities-security.md)」を参照してください。

## ツールを選択する
<a name="_choose_your_tool"></a>

AWS マネジメントコンソール、AWS CLI、または eksctl を使用して、Argo CD 機能を作成できます。
+  [コンソールを使用して Argo CD 機能を作成する](argocd-create-console.md) - 指示に従って操作する場合はコンソールを使用します。
+  [AWS CLI を使用して Argo CD 機能を作成する](argocd-create-cli.md) - スクリプトを作成して自動化を図る場合は AWS CLI を使用します。
+  [eksctl を使用して Argo CD 機能を作成する](argocd-create-eksctl.md) - Kubernetes ネイティブの操作をする場合は eksctl を使用します。

## Argo CD 機能を作成するとどうなるか
<a name="_what_happens_when_you_create_an_argo_cd_capability"></a>

Argo CD 機能を作成すると、次のようになります。

1. EKS が AWS コントロールプレーンに Argo CD 機能サービスを作成します。

1. カスタムリソース定義 (CRD) がクラスターにインストールされます。

1. Kubernetes のベースラインアクセス許可を付与する機能固有のアクセスエントリポリシーを使用して、IAM 機能ロールのアクセスエントリを自動的に作成します (「[EKS 機能のセキュリティに関する考慮事項](capabilities-security.md)」を参照)。

1. Argo CD がカスタムリソース (Application、ApplicationSet、AppProject) の監視を開始します。

1. 機能のステータスが `CREATING` から `ACTIVE` に変わります。

1. Argo CD UI が URL 経由でアクセス可能になります。

機能がアクティブになったら、宣言型ソースからデプロイするようにクラスターに Argo CD Application を作成できます。

**注記**  
自動的に作成されるアクセスエントリは、アプリケーションをクラスターにデプロイするアクセス許可を付与しません。アプリケーションをデプロイするには、ターゲットクラスターごとに追加の Kubernetes RBAC アクセス許可を設定する必要があります。クラスターの登録とアクセスの設定の詳細については、「[ターゲットクラスターを登録する](argocd-register-clusters.md)」を参照してください。

## 次のステップ
<a name="_next_steps"></a>

Argo CD 機能の作成後:
+  [Argo CD の概念](argocd-concepts.md) - GitOps の原則、同期ポリシー、マルチクラスターパターンについて学ぶ
+  [Argo CD の使用](working-with-argocd.md) - リポジトリアクセスを設定し、ターゲットクラスターを登録して、Application を作成する
+  [Argo CD に関する考慮事項](argocd-considerations.md) - マルチクラスターアーキテクチャパターンと高度な設定を探る

# コンソールを使用して Argo CD 機能を作成する
<a name="argocd-create-console"></a>

このトピックでは、AWS マネジメントコンソール を使用して Argo CD 機能を作成する方法について説明します。

## 前提条件
<a name="_prerequisites"></a>
+  **AWS アイデンティティセンターが設定されていること** – Argo CD での認証には AWS アイデンティティセンターが必要です。ローカルユーザーはサポートされていません。AWS アイデンティティセンターをセットアップしていない場合は、「[AWS アイデンティティセンターの使用を開始する](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)」を参照してアイデンティティセンターインスタンスを作成し、「[ユーザーを追加する](https://docs.aws.amazon.com/singlesignon/latest/userguide/addusers.html)」と「[グループを追加する](https://docs.aws.amazon.com/singlesignon/latest/userguide/addgroups.html)」を参照して Argo CD へのアクセスに必要なユーザーとグループを作成します。

## Argo CD 機能を作成する
<a name="_create_the_argo_cd_capability"></a>

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

1. クラスター名を選択して、クラスターの詳細ページを開きます。

1. **[機能]** タブを選択します。

1. 左のナビゲーションで、**[Argo CD]** を選択します。

1. **[Argo CD 機能を作成]** を選択します。

1. **IAM 機能ロール**に対して以下の操作を行います。
   + IAM 機能ロールが既に存在する場合は、ドロップダウンから選択します。
   + ロールを作成する必要がある場合は、**[Argo CD ロールを作成]** を選択します。

     IAM コンソールが新しいタブに開かれます。信頼ポリシーには値があらかじめ入力され、Secrets Manager にはフル読み取りアクセスが付与されています。デフォルトでは他にアクセス許可は追加されませんが、必要に応じて追加することもできます。CodeCommit リポジトリや他の AWS サービスを使用する場合は、ロールを作成する前に適切なアクセス許可を追加します。

     ロールを作成して EKS コンソールに戻ると、そのロールが自動的に選択されます。
**注記**  
AWS Secrets Manager または AWS CodeConnections とをオプションで統合する場合は、ロールにアクセス許可を追加する必要があります。IAM ポリシーの例と設定ガイダンスについては、「[AWS Secrets Manager を使用してアプリケーションシークレットを管理する](integration-secrets-manager.md)」および「[AWS CodeConnections を使用して Git リポジトリに接続する](integration-codeconnections.md)」を参照してください。

1. AWS アイデンティティセンターの統合を設定します。

   1. **[AWS アイデンティティセンターの統合を有効にする]** を選択します。

   1. ドロップダウンからアイデンティティセンターインスタンスを選択します。

   1. ユーザーまたはグループを Argo CD ロール (ADMIN、EDITOR、または VIEWER) に割り当てて、RBAC 用にロールマッピングを設定します。

1. **[作成]** を選択します。

機能作成プロセスが始まります。

## 機能がアクティブであることを確認する
<a name="_verify_the_capability_is_active"></a>

1. **[機能]** タブで、Argo CD 機能のステータスを表示します。

1. ステータスが `CREATING` から `ACTIVE` に変わるまで待ちます。

1. アクティブになったら、この機能を使用する準備は完了です。

機能のステータスとトラブルシューティングの詳細については、「[機能リソースの使用](working-with-capabilities.md)」を参照してください。

## Argo CD UI にアクセスする
<a name="_access_the_argo_cd_ui"></a>

機能がアクティブになったら、以下の手順で Argo CD UI にアクセスできます。

1. Argo CD 機能のページで、**[Argo CD UI を開く]** を選択します。

1. Argo CD UI がブラウザの新しいタブに開かれます。

1. アプリケーションの作成とデプロイの管理を UI から行えるようになりました。

## 次のステップ
<a name="_next_steps"></a>
+  [Argo CD の使用](working-with-argocd.md) - リポジトリを設定し、クラスターを登録し、Application を作成する
+  [Argo CD に関する考慮事項](argocd-considerations.md) - マルチクラスターアーキテクチャと高度な設定
+  [機能リソースの使用](working-with-capabilities.md) - Argo CD 機能リソースを管理する

# AWS CLI を使用して Argo CD 機能を作成する
<a name="argocd-create-cli"></a>

このトピックでは、AWS CLI を使用して Argo CD 機能を作成する方法について説明します。

## 前提条件
<a name="_prerequisites"></a>
+  **AWS CLI** バージョン `2.12.3` 以降。バージョンを確認するには、`aws --version` を実行します。詳細についてはAWS コマンドラインインターフェイスユーザーガイドの「[インストール](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)」を参照してください。
+  **`kubectl`** - Kubernetes クラスターを操作するためのコマンドラインツール。詳細については、「[`kubectl` および `eksctl` のセットアップ](install-kubectl.md)」を参照してください。
+  **AWS アイデンティティセンターが設定されていること** – Argo CD での認証には AWS アイデンティティセンターが必要です。ローカルユーザーはサポートされていません。AWS アイデンティティセンターをセットアップしていない場合は、「[AWS アイデンティティセンターの使用を開始する](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)」を参照してアイデンティティセンターインスタンスを作成し、「[ユーザーを追加する](https://docs.aws.amazon.com/singlesignon/latest/userguide/addusers.html)」と「[グループを追加する](https://docs.aws.amazon.com/singlesignon/latest/userguide/addgroups.html)」を参照して Argo CD へのアクセスに必要なユーザーとグループを作成します。

## ステップ 1: IAM 機能ロールを作成する
<a name="_step_1_create_an_iam_capability_role"></a>

信頼ポリシーファイルを作成します。

```
cat > argocd-trust-policy.json << 'EOF'
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "capabilities.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
EOF
```

IAM ロールを作成します。

```
aws iam create-role \
  --role-name ArgoCDCapabilityRole \
  --assume-role-policy-document file://argocd-trust-policy.json
```

**注記**  
AWS Secrets Manager または AWS CodeConnections とをオプションで統合する場合は、ロールにアクセス許可を追加する必要があります。IAM ポリシーの例と設定ガイダンスについては、「[AWS Secrets Manager を使用してアプリケーションシークレットを管理する](integration-secrets-manager.md)」および「[AWS CodeConnections を使用して Git リポジトリに接続する](integration-codeconnections.md)」を参照してください。

## ステップ 2: Argo CD 機能を作成する
<a name="_step_2_create_the_argo_cd_capability"></a>

クラスターに Argo CD 機能リソースを作成します。

まず、アイデンティティセンターを設定するための環境変数を設定します。

```
# Get your Identity Center instance ARN (replace region if your IDC instance is in a different region)
export IDC_INSTANCE_ARN=$(aws sso-admin list-instances --region [.replaceable]`region` --query 'Instances[0].InstanceArn' --output text)

# Get a user ID for RBAC mapping (replace with your username and region if needed)
export IDC_USER_ID=$(aws identitystore list-users \
  --region [.replaceable]`region` \
  --identity-store-id $(aws sso-admin list-instances --region [.replaceable]`region` --query 'Instances[0].IdentityStoreId' --output text) \
  --query 'Users[?UserName==`your-username`].UserId' --output text)

echo "IDC_INSTANCE_ARN=$IDC_INSTANCE_ARN"
echo "IDC_USER_ID=$IDC_USER_ID"
```

アイデンティティセンター統合で機能を作成します。*region-code* をクラスターがある AWS リージョンに、*my-cluster* をクラスター名に、*idc-region-code* をお使いの IAM アイデンティティセンターが設定されているリージョンコードに置き換えます。

```
aws eks create-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd \
  --type ARGOCD \
  --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/ArgoCDCapabilityRole \
  --delete-propagation-policy RETAIN \
  --configuration '{
    "argoCd": {
      "awsIdc": {
        "idcInstanceArn": "'$IDC_INSTANCE_ARN'",
        "idcRegion": "'[.replaceable]`idc-region-code`'"
      },
      "rbacRoleMappings": [{
        "role": "ADMIN",
        "identities": [{
          "id": "'$IDC_USER_ID'",
          "type": "SSO_USER"
        }]
      }]
    }
  }'
```

このコマンドはすぐに戻りますが、EKS が必要な機能インフラストラクチャとコンポーネントを作成するため、機能がアクティブになるまでにはしばらく時間がかかります。EKS は、この機能に関連する Kubernetes カスタムリソース定義をその作成時にクラスターにインストールします。

**注記**  
クラスターが存在しないというエラーやアクセス許可がないというエラーが表示された場合は、以下の点を確認します。  
クラスター名が正しいこと
AWS CLI が正しいリージョンに設定されていること
必要な IAM アクセス許可を追加したこと

## ステップ 3: 機能がアクティブであることを確認する
<a name="_step_3_verify_the_capability_is_active"></a>

機能がアクティブになるまで待機します。*region-code* はクラスターが配置された AWS リージョンに置き換え、*my-cluster* はクラスターの名前に置き換えます。

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd \
  --query 'capability.status' \
  --output text
```

ステータスが `ACTIVE` と表示されたら、機能の準備は完了です。ステータスが `ACTIVE` になるまで、次のステップに進まないでください。

機能の詳細全体を表示することもできます。

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd
```

## ステップ 4: カスタムリソースが使用可能であることを確認する
<a name="_step_4_verify_custom_resources_are_available"></a>

機能がアクティブになったら、Argo CD カスタムリソースがクラスターで使用可能になっていることを確認します。

```
kubectl api-resources | grep argoproj.io
```

`Application` と `ApplicationSet` のリソースタイプがリストされます。

## 次のステップ
<a name="_next_steps"></a>
+  [Argo CD の使用](working-with-argocd.md) - リポジトリを設定し、クラスターを登録し、Application を作成する
+  [Argo CD に関する考慮事項](argocd-considerations.md) - マルチクラスターアーキテクチャと高度な設定
+  [機能リソースの使用](working-with-capabilities.md) - Argo CD 機能リソースを管理する

# eksctl を使用して Argo CD 機能を作成する
<a name="argocd-create-eksctl"></a>

このトピックでは、eksctl で Argo CD 機能を作成する方法について説明します。

**注記**  
以下のステップを実行するには、eksctl バージョン `0.220.0` 以降が必要です。バージョンを確認するには、`eksctl version` を実行します。

## ステップ 1: IAM 機能ロールを作成する
<a name="_step_1_create_an_iam_capability_role"></a>

信頼ポリシーファイルを作成します。

```
cat > argocd-trust-policy.json << 'EOF'
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "capabilities.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
EOF
```

IAM ロールを作成します。

```
aws iam create-role \
  --role-name ArgoCDCapabilityRole \
  --assume-role-policy-document file://argocd-trust-policy.json
```

**注記**  
こうした基本的なセットアップの場合、追加の IAM ポリシーは必要ありません。リポジトリ認証情報や CodeConnections に Secrets Manager を使用する場合は、ロールにアクセス許可を追加する必要があります。IAM ポリシーの例と設定ガイダンスについては、「[AWS Secrets Manager を使用してアプリケーションシークレットを管理する](integration-secrets-manager.md)」および「[AWS CodeConnections を使用して Git リポジトリに接続する](integration-codeconnections.md)」を参照してください。

## ステップ 2: AWS アイデンティティセンター設定を取得する
<a name="step_2_get_your_shared_aws_identity_center_configuration"></a>

RBAC 設定用にアイデンティティセンターインスタンス ARN とユーザー ID を取得します。

```
# Get your Identity Center instance ARN
aws sso-admin list-instances --query 'Instances[0].InstanceArn' --output text

# Get a user ID for admin access (replace 'your-username' with your Identity Center username)
aws identitystore list-users \
  --identity-store-id $(aws sso-admin list-instances --query 'Instances[0].IdentityStoreId' --output text) \
  --query 'Users[?UserName==`your-username`].UserId' --output text
```

これらの値をメモしてください。次のステップで必要になります。

## ステップ 3: eksctl 設定ファイルを作成する
<a name="_step_3_create_an_eksctl_configuration_file"></a>

`argocd-capability.yaml` という名前のファイルを作成し、次の内容を記述します。各プレースホルダーの値をそれぞれクラスター名、クラスターのリージョン、IAM ロール ARN、アイデンティティセンターインスタンス ARN、アイデンティティセンターリージョン、およびユーザー ID に置き換えます。

```
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: my-cluster
  region: cluster-region-code

capabilities:
  - name: my-argocd
    type: ARGOCD
    roleArn: arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole
    deletePropagationPolicy: RETAIN
    configuration:
      argocd:
        awsIdc:
          idcInstanceArn: arn:aws:sso:::instance/ssoins-123abc
          idcRegion: idc-region-code
        rbacRoleMappings:
          - role: ADMIN
            identities:
              - id: 38414300-1041-708a-01af-5422d6091e34
                type: SSO_USER
```

**注記**  
RBAC マッピングに複数のユーザーまたはグループを追加できます。グループの場合、`type: SSO_GROUP` を使用してグループ ID を指定します。使用可能なロールは、`ADMIN`、`EDITOR`、および `VIEWER` です。

## ステップ 4: Argo CD 機能を作成する
<a name="_step_4_create_the_argo_cd_capability"></a>

設定ファイルを適用します。

```
eksctl create capability -f argocd-capability.yaml
```

このコマンドはすぐに戻りますが、機能がアクティブになるまでにはしばらく時間がかかります。

## ステップ 5: 機能がアクティブであることを確認する
<a name="_step_5_verify_the_capability_is_active"></a>

機能のステータスを確認します。*region-code* はクラスターがある AWS リージョンに、*my-cluster* はクラスターの名前に置き換えます。

```
eksctl get capability \
  --region region-code \
  --cluster my-cluster \
  --name my-argocd
```

ステータスが `ACTIVE` と表示されたら、機能の準備は完了です。

## ステップ 6: カスタムリソースが使用可能であることを確認する
<a name="_step_6_verify_custom_resources_are_available"></a>

機能がアクティブになったら、Argo CD カスタムリソースがクラスターで使用可能になっていることを確認します。

```
kubectl api-resources | grep argoproj.io
```

`Application` と `ApplicationSet` のリソースタイプがリストされます。

## 次のステップ
<a name="_next_steps"></a>
+  [Argo CD の使用](working-with-argocd.md) - Argo CD Application を作成および管理する方法を学ぶ
+  [Argo CD に関する考慮事項](argocd-considerations.md) - SSO とマルチクラスターアクセスを設定する
+  [機能リソースの使用](working-with-capabilities.md) - Argo CD 機能リソースを管理する