

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

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

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

eksctl を使用して Amazon EKS クラスターで Argo CD 機能を作成します。

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

## 前提条件
<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 へのアクセスに必要なユーザーとグループを作成します。
+  **AWS アイデンティティセンターのユーザーまたはグループが少なくとも 1 つ** – Argo CD の RBAC ロールマッピングを割り当て、Argo CD UI へのアクセスを提供するには、アイデンティティセンターインスタンスに少なくとも 1 人のユーザーまたは 1 つのグループを設定する必要があります。

## ステップ 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
```

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

## (オプション) プライベートエンドポイントを設定する
<a name="_optional_configure_a_private_endpoint"></a>

デフォルトでは、Argo CD UI と API エンドポイントはインターネット経由でパブリックにアクセスできます。アクセスを制限する必要がある場合は、VPC エンドポイントを設定できます。ネットワークセキュリティ要件が厳格な環境では、この設定をお勧めします。

### EKS 機能用の VPC エンドポイントを作成する
<a name="_create_a_vpc_endpoint_for_eks_capabilities"></a>

VPC 内に EKS 機能サービスのインターフェイス VPC エンドポイントを作成します。{{vpc-id}}、{{subnet-id-1 subnet-id-2}}、{{sg-id}}、{{region-code}} を実際の値に置き換えます。

```
aws ec2 create-vpc-endpoint \
  --vpc-endpoint-type Interface \
  --service-name com.amazonaws.{{region-code}}.eks-capabilities \
  --vpc-id {{vpc-id}} \
  --subnet-ids {{subnet-id-1 subnet-id-2}} \
  --security-group-ids {{sg-id}} \
  --region {{region-code}}
```

**注記**  
高可用性を実現するには、サブネットが異なるアベイラビリティーゾーンにある必要があります。
セキュリティグループでは、Argo CD UI と API にアクセスする必要があるネットワークからのインバウンド HTTPS (ポート 443) トラフィックを許可する必要があります。
このコマンドで返される VPC エンドポイント ID をメモしてください。機能を作成するときに必要になります。

### VPC エンドポイントが利用可能であることを確認する
<a name="_verify_the_vpc_endpoint_is_available"></a>

```
aws ec2 describe-vpc-endpoints \
  --vpc-endpoint-ids {{vpce-xxxxxxxx}} \
  --query 'VpcEndpoints[0].State' \
  --output text \
  --region {{region-code}}
```

続行する前に、状態が `available` と表示されるまで待ちます。

## ステップ 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::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` です。

プライベートアクセス用に VPC エンドポイントを設定した場合は、機能定義に `networkConfiguration` セクションを追加します。{{vpce-xxxxxxxx}} を実際の VPC エンドポイント 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::{{111122223333}}:role/ArgoCDCapabilityRole
    deletePropagationPolicy: RETAIN
    networkConfiguration:
      elasticNetworkInterfaces:
        vpcEndpointId: {{vpce-xxxxxxxx}}
    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
```

**注記**  
プライベートエンドポイントを有効にすると、Argo CD UI と API は VPC エンドポイント経由でのみアクセスできます。Argo CD インターフェイスにアクセスするには、ユーザーは VPC (またはピアリングされたネットワーク) に接続されている必要があります。

## ステップ 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 機能リソースを管理する