

 **帮助改进此页面** 

要帮助改进本用户指南，请选择位于每个页面右侧窗格中的**在 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 功能实例创建 1000 个 `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）**   
定义一个自定义 API，该 API 将多个 Kubernetes 和 Amazon 资源组合成更高级别的抽象。平台团队可创建 `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 自定义资源创建和管理 Amazon 资源。ACK 为 50 多项 Amazon 服务提供超过 200 个 CRD，允许您在使用 Kubernetes 工作负载的同时定义 Amazon 资源，并使用 Kubernetes 管理专用的 Amazon 基础设施资源。

ACK 资源示例：

 **S3Bucket**   
 `Bucket` 资源使用版本控制、加密和生命周期策略创建和管理 Amazon S3 存储桶。

 **RDS DBInstance**   
 `DBInstance` 资源通过自动备份和维护时段预置和管理 Amazon RDS 数据库实例。

 **DynamoDB 表**   
 `Table` 资源使用已预置或按需容量创建和管理 DynamoDB 表。

 **IAM 角色**   
 `Role` 资源通过信任策略和权限策略来定义 IAM 角色，以实现 Amazon 服务访问。

 **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 功能实例最多 1000 个 `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 的基本概念及资源组合编排