

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

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

# 機能の Kubernetes リソース
<a name="capability-kubernetes-resources"></a>

クラスターで機能を有効にしたら、後は通常クラスターで Kubernetes カスタムリソースを作成して管理することでクラスターを操作することになります。機能ごとに独自のカスタムリソース定義 (CRD) セットを策定して、それぞれに固有の機能で Kubernetes API を拡張できます。

## Argo CD リソース
<a name="_argo_cd_resources"></a>

Argo CD 機能を有効にすると、次の Kubernetes リソースを作成および管理できます。

 **アプリケーション**   
Git リポジトリからターゲットクラスターへのデプロイを定義します。`Application` リソースでは、ソースリポジトリ、ターゲット名前空間、同期ポリシーを指定します。Argo CD 機能インスタンスごとに最大 1,000 個の `Application` リソースを作成できます。

 **ApplicationSet**   
テンプレートから複数の `Application` リソースを生成し、マルチクラスターとマルチ環境のデプロイを可能にします。`ApplicationSet` リソースは、ジェネレーターを使用して、クラスターリストや Git ディレクトリといったソースに基づいて `Application` リソースを動的に作成します。

 **AppProject**   
`Application` リソースを論理的にグループ化してアクセスを制御します。`AppProject` リソースは、`Application` リソースが使用できるリポジトリ、クラスター、名前空間を定義して、マルチテナンシーとセキュリティ境界を有効にします。

`Application` リソースの例:

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/org/repo
    targetRevision: main
    path: manifests
  destination:
    server: https://kubernetes.default.svc
    namespace: production
```

Argo CD のリソースと概念の詳細については、「[Argo CD の概念](argocd-concepts.md)」を参照してください。

## kro リソース
<a name="_kro_resources"></a>

kro 機能を有効にすると、次の Kubernetes リソースを作成および管理できます。

 **ResourceGraphDefinition (RGD)**   
複数の Kubernetes と AWS リソースを高次の抽象化に構成するカスタム API を定義します。プラットフォームチームは、ガードレールに沿ってパターンを再利用可能できるように `ResourceGraphDefinition` リソースを作成します。

 **カスタムリソースインスタンス**   
`ResourceGraphDefinition` リソースを作成したら、`ResourceGraphDefinition` で定義されたカスタム API のインスタンスを作成できます。kro は、`ResourceGraphDefinition` に指定されたリソースを自動的に作成および管理します。

`ResourceGraphDefinition` リソースの例:

```
apiVersion: kro.run/v1alpha1
kind: ResourceGraphDefinition
metadata:
  name: web-application
spec:
  schema:
    apiVersion: v1alpha1
    kind: WebApplication
    spec:
      name: string
      replicas: integer
  resources:
    - id: deployment
      template:
        apiVersion: apps/v1
        kind: Deployment
        # ... deployment spec
    - id: service
      template:
        apiVersion: v1
        kind: Service
        # ... service spec
```

`WebApplication` インスタンスの例:

```
apiVersion: v1alpha1
kind: WebApplication
metadata:
  name: my-web-app
  namespace: default
spec:
  name: my-web-app
  replicas: 3
```

このインスタンスを適用すると、kro は `ResourceGraphDefinition` に定義された `Deployment` リソースと `Service` リソースを自動的に作成します。

kro のリソースと概念の詳細については、「[kro の概念](kro-concepts.md)」を参照してください。

## ACK リソース
<a name="_ack_resources"></a>

ACK 機能を有効にすると、Kubernetes カスタムリソースを使用して AWS リソースを作成および管理できます。ACK では 50 を超える AWS サービスの 200 を超える CRD を策定できるため、Kubernetes ワークロードと共に AWS リソースを定義し、Kubernetes で専用の AWS インフラストラクチャリソースを管理できます。

ACK リソースの例:

 **S3 バケット**   
 `Bucket` リソースは、バージョニング、暗号化、ライフサイクルポリシーを備えた Amazon S3 バケットを作成および管理します。

 **RDS DBInstance**   
 `DBInstance` リソースは、自動バックアップとメンテナンス期間を備えた Amazon RDS データベースインスタンスをプロビジョニングして管理します。

 **DynamoDB テーブル**   
 `Table` リソースは、プロビジョニング済みのキャパシティまたはオンデマンドキャパシティを備えた DynamoDB テーブルを作成および管理します。

 **IAM ロール**   
 `Role` リソースは、AWS サービスアクセスの信頼ポリシーとアクセス許可ポリシーを備えた IAM ロールを定義します。

 **Lambda 関数**   
 `Function` リソースは、コード、ランタイム、実行ロール設定を備えた Lambda 関数を作成および管理します。

`Bucket` リソースの指定例:

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: my-app-bucket
spec:
  name: my-unique-bucket-name-12345
  versioning:
    status: Enabled
  encryption:
    rules:
      - applyServerSideEncryptionByDefault:
          sseAlgorithm: AES256
```

ACK のリソースと概念の詳細については、「[ACK の概念](ack-concepts.md)」を参照してください。

## リソースの制限
<a name="_resource_limits"></a>

EKS 機能には、次のリソース制限があります。

 **Argo CD の使用制限**:
+ Argo CD 機能インスタンスあたり最大 1,000 個の `Application` リソース
+ Argo CD 機能インスタンスあたり最大 100 個のリモートクラスターを設定可能

 **リソース設定の制限**:
+ Argo CD では `Application` リソースあたり最大 150 個の Kubernetes リソース
+ kro では `ResourceGraphDefinition` あたり最大 64 個の Kubernetes リソース

**注記**  
これらの制限は、各機能インスタンスで管理されるリソースの数に適用されます。さらに厳しい制限が必要な場合は、複数のクラスターに機能をデプロイできます。

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

機能に固有のタスクと高度な設定については、以下のトピックを参照してください。
+  [ACK の概念](ack-concepts.md) – ACK の概念およびリソースライフサイクルを理解する
+  [Argo CD の使用](working-with-argocd.md) – GitOps ワークフローに Argo CD 機能を使用する
+  [kro の概念](kro-concepts.md) – kro の概念とリソース構成を理解する