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資源*:使用未由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所支援的儲存類別時、才會管理狀態化應用程式。Astra Control Service 支援 Astra Control Provisioner 或一般 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版本結合的群組):

資源種類 每個版本(群組+版本)

ClusterRole

rbac.authorization.k8s.io/v1

ClusterRoleBinding

rbac.authorization.k8s.io/v1

CustomResource

apiextensions.k8s.io/v1、apiextensions.k8s.io/v1bet1

CustomResourceDefinition

apiextensions.k8s.io/v1、apiextensions.k8s.io/v1bet1

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. 選取*「Add*」。

      提示 您可以根據需要建立任意數量的叢集範圍資源規則。這些規則會出現在「定義應用程式摘要」中。
  9. 選擇*定義*。

  10. 選取*定義*之後、視需要為其他應用程式重複此程序。

定義完應用程式之後、應用程式會出現在中 Healthy 請在應用程式頁面的應用程式清單中說明。您現在可以複製並建立備份與快照。

註 您剛新增的應用程式可能會在「受保護的」欄下顯示警告圖示、表示尚未備份且尚未排程備份。
提示 若要查看特定應用程式的詳細資料、請選取應用程式名稱。

若要查看新增至此應用程式的資源、請選取*資源*索引標籤。在「資源」欄中選取資源名稱後的數字、或在「搜尋」中輸入資源名稱、以查看所包含的其他叢集範圍資源。

定義要以應用程式形式管理的命名空間

您可以將命名空間中的所有Kubernetes資源新增至Astra Control管理、方法是將該命名空間的資源定義為應用程式。如果您需要、這種方法最好是個別定義應用程式 "打算管理及保護特定命名空間中的所有資源" 以類似的方式、並以相同的時間間隔進行。

步驟
  1. 從「叢集」頁面中選取叢集。

  2. 選取「命名空間」索引標籤。

  3. 選取包含您要管理之應用程式資源的命名空間「動作」功能表、然後選取*「定義為應用程式*」。

    提示 如果要定義多個應用程式、請從命名空間清單中選取、然後選取左上角的*「Actions」(動作)按鈕、然後選取「define as application*」(定義為應用程式*)。這會在個別命名空間中定義多個個別應用程式。如需多命名空間應用程式、請參閱 定義要以應用程式形式管理的資源
    註 選取「顯示系統命名空間」核取方塊、顯示預設不會用於應用程式管理的系統命名空間。 快照顯示「命名空間」索引標籤中可用的*「顯示系統命名空間*」選項。 "瞭解更多資訊"

程序完成後、與命名空間相關聯的應用程式會顯示在「Associated applices」(相關應用程式)欄中。

[ 技術預覽 ] 使用 Kubernetes 自訂資源定義應用程式

您可以使用自訂資源( CR )將 Kubernetes 資源定義為應用程式、以指定您要使用 Astra Control 管理的資源。如果您想要個別管理這些資源、或是在命名空間中管理所有 Kubernetes 資源、則可以新增叢集範圍的資源、例如、如果您想以類似的方式、在一般時間間隔管理和保護特定命名空間中的所有資源。

步驟
  1. 建立自訂資源( CR )檔案並命名(例如、 astra_mysql_app.yaml)。

  2. 在中命名應用程式 metadata.name

  3. 定義要管理的應用程式資源:

    spec.includedClusterScopedResources

    除了 Astra Control 自動包含的資源類型之外、還包括叢集範圍的資源類型:

    • * spec.includedClusterScopedResources*: _ (選用) _ 要納入的叢集範圍資源類型清單。

      • * 群組版本 Kind* : _ (選擇性) _ 明確識別種類。

        • * 群組 * : _ (若使用 groupVersionKind 則為必填) _ 要納入的資源的 API 群組。

        • * 版本 * : _ (如果使用 groupVersionKind 則需要) _ 要包含的資源的 API 版本。

        • * 種類 * : _ (如果使用 groupVersionKind 則需要) _ 要包含的資源種類。

      • * 標籤選取器 * : _ (選用) _ 一組資源的標籤查詢。它僅用於擷取符合標籤的資源。如果您未提供標籤、Astra Control會收集為該叢集指定之資源種類的所有執行個體。對 matchLabels 和 matchExpedions 的結果進行 AND 運算。

        • *matchLabels * : _ (選用) _ { key 、 value } 對的地圖。matchLabels 對應中的單一 {key,value} 相當於 matchExpions 元素、其中的關鍵欄位為 "key" 、運算子為 "in " 、值陣列僅包含 "value" 。這些要求均已與之進行 AND 運算。

        • *matchExpedions * : _ (選擇性) _ 標籤選取器要求清單。這些要求均已與之進行 AND 運算。

          • * 機碼 * : _ (若使用媒合、則為必填) _ 與標籤選取器相關的標籤機碼。

          • * 運算子 * : _ (若使用媒合、則為必填) _ 代表金鑰與一組值的關係。有效的運算子為 InNotInExistsDoesNotExist

          • * 值 * : _ (若使用媒合、則為必填) _ 字串值的陣列。如果運算子是 InNotIn`的值數組不能爲空。如果運算子是 `Exists 或 `DoesNotExist`的值數組必須爲空。

    spec.includedNamespaces

    在應用程式中的這些資源中包含命名空間和資源:

    • * spec.includedNamespaces*: _ (必要) _ 定義用於資源選擇的命名空間和選用篩選器。

      • * 命名空間 * : _ (必填) _ 包含您要使用 Astra Control 管理的應用程式資源的命名空間。

      • * 標籤選取器 * : _ (選用) _ 一組資源的標籤查詢。它僅用於擷取符合標籤的資源。如果您未提供標籤、Astra Control會收集為該叢集指定之資源種類的所有執行個體。對 matchLabels 和 matchExpedions 的結果進行 AND 運算。

        • *matchLabels * : _ (選用) _ { key 、 value } 對的地圖。matchLabels 對應中的單一 {key,value} 相當於 matchExpions 元素、其中的關鍵欄位為 "key" 、運算子為 "in " 、值陣列僅包含 "value" 。這些要求均已與之進行 AND 運算。

        • *matchExpedions * : _ (選擇性) _ 標籤選取器要求清單。 keyoperator 為必填項目。這些要求均已與之進行 AND 運算。

          • * 機碼 * : _ (若使用媒合、則為必填) _ 與標籤選取器相關的標籤機碼。

          • * 運算子 * : _ (若使用媒合、則為必填) _ 代表金鑰與一組值的關係。有效的運算子為 InNotInExistsDoesNotExist

          • * 值 * : _ (如果使用匹配運算、則為必填) _ 字串值的陣列。如果運算子是 InNotIn`的值數組不能爲空。如果運算子是 `Exists 或 `DoesNotExist`的值數組必須爲空。

    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本身不會顯示用於管理。