

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

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

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

このトピックでは、eksctl を使用して kro (Kube Resource Orchestrator) 機能を作成する方法について説明します。

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

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

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

```
cat > kro-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 KROCapabilityRole \
  --assume-role-policy-document file://kro-trust-policy.json
```

**注記**  
ACK や Argo CD とは異なり、kro は信頼ポリシー以外の追加の IAM アクセス許可を必要としません。kro はクラスター内で完全に動作し、AWS API コールを行いません。

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

eksctl を使用して kro 機能を作成します。*region-code* はクラスターがある AWS リージョンに、*my-cluster* はクラスターの名前に置き換えます。

```
eksctl create capability \
  --region region-code \
  --cluster my-cluster \
  --name my-kro \
  --type KRO \
  --role-arn arn:aws:iam::[.replaceable]111122223333:role/KROCapabilityRole
```

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

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

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

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

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

## ステップ 4: Kubernetes リソースを管理するためのアクセス許可を付与する
<a name="_step_4_grant_permissions_to_manage_kubernetes_resources"></a>

デフォルトでは、kro は ResourceGraphDefinitions とそのインスタンスのみを作成および管理できます。kro が ResourceGraphDefinitions で定義されている基盤となる Kubernetes リソースを作成および管理できるようにするには、`AmazonEKSClusterAdminPolicy` アクセスポリシーを機能のアクセスエントリに関連付けます。

機能ロール ARN を取得します。

```
CAPABILITY_ROLE_ARN=$(aws eks describe-capability \
  --region region-code \
  --cluster my-cluster \
  --name my-kro \
  --query 'capability.roleArn' \
  --output text)
```

クラスター管理ポリシーを関連付けます。

```
aws eks associate-access-policy \
  --region region-code \
  --cluster my-cluster \
  --principal-arn $CAPABILITY_ROLE_ARN \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
  --access-scope type=cluster
```

**重要**  
`AmazonEKSClusterAdminPolicy` は、すべての Kubernetes リソースを作成および管理するための広範なアクセス許可を付与し、使用開始を効率化することを目的としています。本番稼働用には、ResourceGraphDefinitions が管理する特定のリソースに必要なアクセス許可のみを付与する、より制限の厳しい RBAC ポリシーを作成します。最小特権のアクセス許可の設定に関するガイダンスについては、「[kro アクセス許可の設定](kro-permissions.md)」および「[EKS 機能のセキュリティに関する考慮事項](capabilities-security.md)」を参照してください。

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

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

```
kubectl api-resources | grep kro.run
```

`ResourceGraphDefinition` リソースタイプがリストされます。

## 次のステップ
<a name="_next_steps"></a>
+  [kro の概念](kro-concepts.md) - kro の概念とリソース構成を理解する
+  [kro の概念](kro-concepts.md) - SimpleSchema、CEL 式、構成パターンについて学ぶ
+  [機能リソースの使用](working-with-capabilities.md) - kro 機能リソースを管理する