Skip to main content
Astra Control Service
所有云提供商
  • Amazon Web Services
  • Google Cloud
  • Microsoft Azure
  • 所有云提供商
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

开始管理应用程序

贡献者

你先请 "将 Kubernetes 集群添加到 Astra Control"、您可以在集群上安装应用程序(在Astra Control之外)、然后转到Astra Control中的应用程序页面来定义应用程序。

您可以定义和管理包含存储资源且运行Pod的应用程序、或者包含存储资源且未运行任何Pod的应用程序。没有运行Pod的应用程序称为纯数据应用程序。

应用程序管理要求

Astra Control 具有以下应用程序管理要求:

  • 许可:要管理10个以上的名称空间,您需要订阅Astra Control。

  • 命名空间:可以使用Astra Control在单个集群上的一个或多个指定命名空间内定义应用程序。一个应用程序可以包含跨越同一集群中多个命名空间的资源。Astra Control不支持在多个集群之间定义应用程序。

  • 存储类:如果您安装的应用程序明确设置了存储类、并且需要克隆该应用程序、则克隆操作的目标集群必须具有最初指定的存储类。将具有显式设置的存储类的应用程序克隆到没有相同存储类的集群将失败。

  • * Kubernetes Resources* :使用非 Astra Control 收集的 Kubernetes 资源的应用程序可能没有完整的应用程序数据管理功能。Astra Control 收集以下 Kubernetes 资源:

    ClusterRole

    ClusterRoleBinding

    ConfigMap

    CronJob

    CustomResourceDefinition

    CustomResource

    DaemonSet

    DeploymentConfig

    HorizontalPodAutoscaler

    Ingress

    MutatingWebhook

    NetworkPolicy

    PersistentVolumeClaim

    Pod

    PodDisruptionBudget

    PodTemplate

    ReplicaSet

    Role

    RoleBinding

    Route

    Secret

    Service

    ServiceAccount

    StatefulSet

    ValidatingWebhook

支持的应用程序安装方法

Astra Control 支持以下应用程序安装方法:

  • * 清单文件 * : Astra Control 支持使用 kubectl 从清单文件安装的应用程序。例如:

    kubectl apply -f myapp.yaml
  • * Helm 3* :如果使用 Helm 安装应用程序,则 Astra Control 需要 Helm 版本 3 。完全支持管理和克隆随 Helm 3 安装的应用程序(或从 Helm 2 升级到 Helm 3 )。不支持管理随 Helm 2 安装的应用程序。

  • 操作员部署的应用程序:Astra Control支持使用命名空间范围的操作员安装的应用程序、这些应用程序通常采用"按价值传递"而不是"按参考传递"架构设计。操作员及其安装的应用程序必须使用相同的命名空间;您可能需要为操作员修改部署 .yaml 文件,以确保情况确实如此。

    以下是一些遵循这些模式的操作员应用程序:

    • "Apache K8ssandra"

      备注 对于 K8ssandra ,支持原位还原操作。要对新命名空间或集群执行还原操作,需要关闭应用程序的原始实例。这是为了确保传输的对等组信息不会导致跨实例通信。不支持克隆应用程序。
    • "Jenkins CI"

    • "Percona XtraDB 集群"

    Astra Control可能无法克隆使用"按参考传递"架构设计的运算符(例如CockroachDB运算符)。在这些类型的克隆操作期间,克隆的操作员会尝试引用源操作员提供的 Kubernetes 机密,尽管在克隆过程中他们拥有自己的新机密。克隆操作可能会失败,因为 Astra Control 不知道源运算符中的 Kubernetes 密钥。

在集群上安装应用程序

你先请 "已添加集群" 对于Astra Control、您可以在集群上安装应用程序或管理现有应用程序。可以管理范围限定为一个或多个命名空间的任何应用程序。

只有当存储位于Astra Control支持的存储类上时、Astra Control才会管理有状态应用程序。Asta Control Service支持Asta Control配置程序或通用CSI驱动程序支持的任何存储类。

定义应用程序

在Astra Control发现集群上的命名空间后、您可以定义要管理的应用程序。您可以选择 管理跨越一个或多个命名空间的应用程序将整个命名空间作为一个应用程序进行管理。这一切都可以细化到数据保护操作所需的粒度级别。

虽然您可以使用Astra Control单独管理层次结构的两个级别(命名空间和该命名空间中的应用程序或跨命名空间)、但最佳做法是选择一个或另一个。如果在命名空间和应用程序级别同时执行操作,则在 Astra Control 中执行的操作可能会失败。

提示 例如、您可能希望为"Maria"设置一个每周节奏的备份策略、但您可能需要比该策略更频繁地备份"MariaDB"(位于同一命名空间中)。根据这些需求、您需要单独管理这些应用程序、而不是作为单命名空间应用程序来管理。
开始之前
关于此任务

定义要作为应用程序进行管理的资源

您可以指定 "构成应用程序的Kubernetes资源" 要使用Astra Control进行管理的。通过定义应用程序、您可以将Kubernetes集群中的元素分组到一个应用程序中。此Kubernetes资源集合按命名空间和标签选择器标准进行组织。

通过定义应用程序、您可以更精细地控制要包含在Astra Control操作中的内容、包括克隆、快照和备份。

警告 定义应用程序时、请确保不在具有保护策略的多个应用程序中包含Kubernetes资源。Kubernetes资源上重叠的保护策略可能会发生发生原因 数据冲突。
阅读有关将集群范围的资源添加到应用程序命名空间的更多信息。

除了自动包含的Astra Control之外、您还可以导入与命名空间资源关联的集群资源。您可以添加一个规则、该规则将包含特定组的资源、种类、版本以及标签(可选)。如果存在Astra Control不会自动包含的资源、您可能需要执行此操作。

您不能排除Astra Control自动包含的任何集群范围的资源。

您可以添加以下内容 apiVersions (这些组与API版本结合使用):

资源种类 apiVersions (组+版本)

ClusterRole

rbac.authorization.k8s.io/v1

ClusterRoleBinding

rbac.authorization.k8s.io/v1

CustomResource

apiextensions.k8s.io/v1、apiextensions.k8s.io/v1bea1

CustomResourceDefinition

apiextensions.k8s.io/v1、apiextensions.k8s.io/v1bea1

MutatingWebhookConfiguration

可批准registration.K8s.IO/v1

ValidatingWebhookConfiguration

可批准registration.K8s.IO/v1

步骤
  1. 从应用程序页面中、选择*定义*。

  2. 在*定义应用程序*窗口中、输入应用程序名称。

  3. 在*集群*下拉列表中选择运行应用程序的集群。

  4. 从*命名空间*下拉列表中为应用程序选择一个命名空间。

    备注 可以使用Astra Control在单个集群上的一个或多个指定命名空间中定义应用程序。一个应用程序可以包含跨越同一集群中多个命名空间的资源。Astra Control不支持在多个集群之间定义应用程序。
  5. (可选)为每个命名空间中的Kubernetes资源输入一个标签。您可以指定单个标签或标签选择器条件(查询)。

    提示 要了解有关 Kubernetes 标签的更多信息, "请参阅Kubernetes官方文档"
  6. (可选)通过选择*添加命名空间*并从下拉列表中选择命名空间来为应用程序添加其他命名空间。

  7. (可选)为您添加的任何其他命名空间输入单个标签或标签选择器条件。

  8. (可选)要在Astra Control自动包含的资源之外还包括集群范围的资源、请选中*包括其他集群范围的资源*并完成以下操作:

    1. 选择*添加包含规则*。

    2. :从下拉列表中、选择API资源组。

    3. 种类:从下拉列表中、选择对象架构的名称。

    4. 版本:输入API版本。

    5. 标签选择器:也可以包括要添加到规则中的标签。此标签仅用于检索与此标签匹配的资源。如果不提供标签、则Astra Control将收集为该集群指定的所有资源类型的实例。

    6. 查看根据条目创建的规则。

    7. 选择 * 添加 * 。

      提示 您可以根据需要创建任意数量的集群范围资源规则。这些规则将显示在"定义应用程序摘要"中。
  9. 选择 * 定义 * 。

  10. 选择*定义*后、根据需要对其他应用程序重复此过程。

定义完应用程序后、该应用程序将显示在中 Healthy 在应用程序页面上的应用程序列表中的状态。现在、您可以克隆它并创建备份和快照。

备注 您刚刚添加的应用程序在 " 受保护 " 列下可能会显示一个警告图标,表示它尚未备份,并且尚未计划备份。
提示 要查看特定应用程序的详细信息,请选择应用程序名称。

要查看添加到此应用程序的资源、请选择*资源*选项卡。在资源列中选择资源名称后面的数字、或者在搜索中输入资源名称、以查看包含的其他集群范围资源。

定义要作为应用程序进行管理的命名空间

您可以通过将命名空间的资源定义为应用程序来将命名空间中的所有Kubernetes资源添加到Astra Control管理中。如果您需要单独定义应用程序、则最好使用此方法 "打算管理和保护特定命名空间中的所有资源" 以类似的方式并按通用间隔执行。

步骤
  1. 从集群页面中、选择一个集群。

  2. 选择*命名空间*选项卡。

  3. 选择包含要管理的应用程序资源的命名空间的"Actions"菜单、然后选择*定义为应用程序*。

    提示 如果要定义多个应用程序、请从命名空间列表中进行选择、然后选择左上角的*操作*按钮并选择*定义为应用程序*。这将在各个命名空间中定义多个单独的应用程序。有关多命名空间应用程序、请参见 定义要作为应用程序进行管理的资源
    备注 选中*显示系统命名空间*复选框以显示默认情况下在应用程序管理中不使用的系统命名空间。 显示命名空间选项卡中提供的*显示系统命名空间*选项的屏幕截图。 "阅读更多内容"

此过程完成后、与此命名空间关联的应用程序将显示在`Associated applications`列中。

[技术预览]使用Kubernetes自定义资源定义应用程序

您可以通过使用自定义资源(CR)将要使用Asta Control管理的Kubbernetes资源定义为应用程序来指定这些资源。如果要单独管理某个命名空间中的资源、或者要以类似方式并按相同间隔管理和保护某个特定命名空间中的所有资源、则可以添加集群范围的资源。

步骤
  1. 创建自定义资源(CR)文件并将其命名为(例如、 astra_mysql_app.yaml)。

  2. 在中命名应用程序 metadata.name

  3. 定义要管理的应用程序资源:

    spec.includedClusterScopedResources

    除了Asta Control自动包含的资源类型之外、还包括集群范围的资源类型:

    • * spec.includedClusterScopedResources*:_(可选)_要包含的集群范围资源类型列表。

      • groupVersion Kind:_(可选)_明确标识一种类型。

        • group:_(如果使用groupVersion Kind、则为必需项)_要包含的资源的API组。

        • 版本:_(如果使用groupVersionKind、则为必需项)_要包含的资源的API版本。

        • kind:_(如果使用groupVersion Kind、则为必填项)_要包含的资源种类。

      • labelSelecter:_(可选)_一组资源的标签查询。它仅用于检索与标签匹配的资源。如果不提供标签、则Astra Control将收集为该集群指定的所有资源类型的实例。将对“对等标签”和“对等显示”的结果进行AND运算。

        • 匹配标签:_(可选)_个{key、value}对的映射。在匹配标签映射中,单个{key,value}相当于m匹 配表达式的元素,该元素的键字段为“key”,运算符为“in”,值数组仅包含“value”。这些要求是AND。

        • 不符合要求:_(可选)_标签选择器要求列表。这些要求是AND。

          • key:_(如果使用了“对等表达式”,则为必需项)_与标签选择器关联的标签键。

          • 运算符:_(如果使用的是对等表达式则为必需项)_表示键与一组值的关系。有效运算符为 InNotInExistsDoesNotExist

          • values:_(如果使用的是匹配备用)_字符串值数组。如果运算符为 InNotIn,值数组必须为空。如果运算符为 ExistsDoesNotExist,值数组必须为空。

    spec.includedNamespaces

    在应用程序中的这些资源中包括名称和资源:

    • 。spec.includedNamespaces:_(必需)_用于定义命名空间和可选的资源选择筛选器。

      • 命名空间:_(必需)_包含要使用Astra Control管理的应用程序资源的命名空间。

      • labelSelecter:_(可选)_一组资源的标签查询。它仅用于检索与标签匹配的资源。如果不提供标签、则Astra Control将收集为该集群指定的所有资源类型的实例。将对“对等标签”和“对等显示”的结果进行AND运算。

        • 匹配标签:_(可选)_个{key、value}对的映射。在匹配标签映射中,单个{key,value}相当于m匹 配表达式的元素,该元素的键字段为“key”,运算符为“in”,值数组仅包含“value”。这些要求是AND。

        • 不符合要求:_(可选)_标签选择器要求列表。 keyoperator 为必填项。这些要求是AND。

          • key:_(如果使用了“对等表达式”,则为必需项)_与标签选择器关联的标签键。

          • 运算符:_(如果使用的是对等表达式则为必需项)_表示键与一组值的关系。有效运算符为 InNotInExistsDoesNotExist

          • :_(如果使用匹配备则为必需项)_字符串值数组。如果运算符为 InNotIn,值数组必须为空。如果运算符为 ExistsDoesNotExist,值数组必须为空。

    YAML示例:

    apiVersion: astra.netapp.io/v1
    kind: Application
    metadata:
      name: astra_mysql_app
    spec:
      includedNamespaces:
        - namespace: astra_mysql_app
          labelSelector:
            matchLabels:
              app: nginx
              env: production
            matchExpressions:
              - key: tier
                operator: In
                values:
                  - frontend
                  - backend
  4. 在您填充之后 astra_mysql_app.yaml 使用正确值的文件、应用CR:

    kubectl apply -f astra_mysql_app.yaml -n astra-connector

系统命名空间如何?

Astra Control还会发现Kubernetes集群上的系统命名空间。默认情况下、我们不会向您显示这些系统命名空间、因为您很少需要备份系统应用程序资源。

通过选中*显示系统命名空间*复选框、您可以从选定集群的命名空间选项卡中显示系统命名空间。

显示命名空间选项卡中提供的*显示系统命名空间*选项的屏幕截图。

提示 Astra Control 本身不是一个标准应用程序,而是一个 " 系统应用程序 " 。 您不应尝试管理 Astra Control 本身。默认情况下,用于管理的 Astra Control 本身不会显示。