

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

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

# ACK 機能を作成する
<a name="create-ack-capability"></a>

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

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

ACK 機能を作成する前に、以下の点を確認してください。
+ Amazon EKS クラスター
+ ACK で AWS リソースを管理するためのアクセス許可が IAM 機能ロールに付与されている
+ EKS クラスターに機能リソースを作成するための十分な IAM アクセス許可がある
+ 適切な CLI ツールがインストールおよび設定されているか、EKS コンソールにアクセスできる

IAM 機能ロールを作成する手順については、「[Amazon EKS 機能 IAM ロール](capability-role.md)」を参照してください。

**重要**  
ACK は、AWS リソースを作成、変更、削除する権限を付与するインフラストラクチャ管理機能です。これは、制御に慎重を要する管理者範囲の機能です。クラスターに Kubernetes リソースを作成するためのアクセス許可があれば誰でも、IAM 機能ロールのアクセス許可に従って、ACK で AWS リソースを効果的に作成できます。ACK でどの AWS リソースを作成および管理できるかは、どの IAM 機能ロールを使用するかによって決まります。最小特権のアクセス許可を付与した適切なロールを作成する際のガイダンスについては、「[Amazon EKS 機能 IAM ロール](capability-role.md)」および「[EKS 機能のセキュリティに関する考慮事項](capabilities-security.md)」を参照してください。

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

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

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

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

1. EKS が、ACK 機能サービスを作成して、クラスター内のリソースをモニタリングおよび管理するように設定します。

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

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

1. 機能が、指定した IAM 機能ロールを引き受けます。

1. ACK が、クラスター内のカスタムリソースを監視し始めます。

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

アクティブになったら、AWS リソースを管理するための ACK カスタムリソースをクラスターに作成できます。

**注記**  
自動的に作成されたアクセスエントリには、AWS リソースを管理するための ACK アクセス許可を付与する `AmazonEKSACKPolicy` が含まれます。Kubernetes シークレットを参照する一部の ACK リソース (パスワード付きの RDS データベースなど) には、追加のアクセスエントリポリシーが必要です。アクセスエントリの詳細と追加のアクセス許可の設定方法については、「[EKS 機能のセキュリティに関する考慮事項](capabilities-security.md)」を参照してください。

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

ACK 機能の作成後:
+  [ACK の概念](ack-concepts.md) - ACK の概念を理解し、AWS リソースの使用を開始する
+  [ACK の概念](ack-concepts.md) - 調整、フィールドエクスポート、リソース採用パターンについて学ぶ
+  [ACK アクセス許可を設定する](ack-permissions.md) - IAM アクセス許可およびマルチアカウントパターンを設定する

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

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

## ACK 機能を作成する
<a name="_create_the_ack_capability"></a>

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

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

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

1. 左側のナビゲーションで、**[Kubernetes 用 AWS コントローラー (ACK)]** を選択します。

1. **[Kubernetes 用 AWS コントローラー (ACK) 機能]** を選択します。

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

     IAM コンソールが新しいタブに開かれます。信頼ポリシーと `AdministratorAccess` 管理ポリシーには、値があらかじめ入力されています。このポリシーを選択解除し、必要に応じて他のアクセス許可を追加できます。

     ロールを作成して EKS コンソールに戻ると、そのロールが自動的に選択されます。
**重要**  
提案された `AdministratorAccess` ポリシーは、幅広いアクセス許可を付与し、使用開始を効率化することを目的としています。本番稼働で使用する場合は、これをカスタムポリシーに置き換えて、そのポリシーでは ACK で管理する特定の AWS サービスに必要なアクセス許可のみを付与します。最小特権ポリシーを作成する際のガイダンスについては、「[ACK アクセス許可を設定する](ack-permissions.md)」および「[EKS 機能のセキュリティに関する考慮事項](capabilities-security.md)」を参照してください。

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

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

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

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

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

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

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

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

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

 **コンソールの使用** 

1. Amazon EKS コントロールでクラスターに移動します。

1. **[リソース]** タブを選択します。

1. **[拡張機能]** を選択します。

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

AWS リソースに使用可能な多数の CRD がリストされます。

 **kubectl を使用する** 

```
kubectl api-resources | grep services.k8s.aws
```

AWS リソースに使用可能な多数の API がリストされます。

**注記**  
Kubernetes 用 AWS コントローラーの機能は、さまざまな AWS リソース用に多数の CRD をインストールします。

## 次のステップ
<a name="_next_steps"></a>
+  [ACK の概念](ack-concepts.md) - ACK の概念を理解して使用を開始する
+  [ACK アクセス許可を設定する](ack-permissions.md) - 他の AWS サービスに対して IAM アクセス許可を設定する
+  [機能リソースの使用](working-with-capabilities.md) - ACK 機能リソースを管理する

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

このトピックでは、AWS CLI を使用して Kubernetes 用 AWS コントローラー (ACK) 機能を作成する方法について説明します。

## 前提条件
<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)」を参照してください。

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

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

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

`AdministratorAccess` マネージドポリシーをロールにアタッチします。

```
aws iam attach-role-policy \
  --role-name ACKCapabilityRole \
  --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
```

**重要**  
提案された `AdministratorAccess` ポリシーは、幅広いアクセス許可を付与し、使用開始を効率化することを目的としています。本番稼働で使用する場合は、これをカスタムポリシーに置き換えて、そのポリシーでは ACK で管理する特定の AWS サービスに必要なアクセス許可のみを付与します。最小特権ポリシーを作成する際のガイダンスについては、「[ACK アクセス許可を設定する](ack-permissions.md)」および「[EKS 機能のセキュリティに関する考慮事項](capabilities-security.md)」を参照してください。

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

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

```
aws eks create-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-ack \
  --type ACK \
  --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/ACKCapabilityRole \
  --delete-propagation-policy RETAIN
```

このコマンドはすぐに戻りますが、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-ack \
  --query 'capability.status' \
  --output text
```

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

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

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

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

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

```
kubectl api-resources | grep services.k8s.aws
```

AWS リソースに使用可能な多数の API がリストされます。

**注記**  
Kubernetes 用 AWS コントローラーの機能は、さまざまな AWS リソース用に多数の CRD をインストールします。

## 次のステップ
<a name="_next_steps"></a>
+  [ACK の概念](ack-concepts.md) - ACK の概念を理解して使用を開始する
+  [ACK アクセス許可を設定する](ack-permissions.md) - 他の AWS サービスに対して IAM アクセス許可を設定する
+  [機能リソースの使用](working-with-capabilities.md) - ACK 機能リソースを管理する

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

このトピックでは、eksctl を使用して Kubernetes 用 AWS コントローラー (ACK) 機能を作成する方法について説明します。

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

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

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

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

`AdministratorAccess` マネージドポリシーをロールにアタッチします。

```
aws iam attach-role-policy \
  --role-name ACKCapabilityRole \
  --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
```

**重要**  
提案された `AdministratorAccess` ポリシーは、幅広いアクセス許可を付与し、使用開始を効率化することを目的としています。本番稼働で使用する場合は、これをカスタムポリシーに置き換えて、そのポリシーでは ACK で管理する特定の AWS サービスに必要なアクセス許可のみを付与します。最小特権ポリシーを作成する際のガイダンスについては、「[ACK アクセス許可を設定する](ack-permissions.md)」および「[EKS 機能のセキュリティに関する考慮事項](capabilities-security.md)」を参照してください。

**重要**  
このポリシーは、`"Resource": "*"` で S3 バケット管理に必要なアクセス許可を付与して、すべての S3 バケットに対してオペレーションを実行できるようにします。  
本番稼働で使用する場合: \$1 `Resource` フィールドを特定のバケット ARN または名前パターンに制限します。\$1 IAM 条件キーを使用すると、リソースタグでアクセスを制限できます。\$1 ユースケースに必要な最小限のアクセス許可のみを付与します。  
その他の AWS サービスについては、「[ACK アクセス許可を設定する](ack-permissions.md)」を参照してください。

ロールにポリシーを付与します。

```
aws iam attach-role-policy \
  --role-name ACKCapabilityRole \
  --policy-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):policy/ACKS3Policy
```

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

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

```
eksctl create capability \
  --cluster [.replaceable]`my-cluster` \
  --region [.replaceable]`region-code` \
  --name ack \
  --type ACK \
  --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/ACKCapabilityRole \
  --ack-service-controllers s3
```

**注記**  
`--ack-service-controllers` フラグはオプションです。省略した場合、ACK は使用可能なすべてのコントローラーを有効にします。パフォーマンスとセキュリティを高めるため、必要なコントローラーのみを有効にすることを検討してください。`--ack-service-controllers s3,rds,dynamodb` のように、複数のコントローラーを指定できます。

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

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

機能のステータスを確認します。

```
eksctl get capability \
  --cluster [.replaceable]`my-cluster` \
  --region [.replaceable]`region-code` \
  --name ack
```

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

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

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

```
kubectl api-resources | grep services.k8s.aws
```

AWS リソースに使用可能な多数の API がリストされます。

**注記**  
Kubernetes 用 AWS コントローラーの機能は、さまざまな AWS リソース用に多数の CRD をインストールします。

## 次のステップ
<a name="_next_steps"></a>
+  [ACK の概念](ack-concepts.md) - ACK の概念を理解して使用を開始する
+  [ACK アクセス許可を設定する](ack-permissions.md) - 他の AWS サービスに対して IAM アクセス許可を設定する
+  [機能リソースの使用](working-with-capabilities.md) - ACK 機能リソースを管理する