Skip to main content
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

アプリの管理を開始します

共同作成者

お先にどうぞ "Astra Control 管理にクラスタを追加"では、クラスターにアプリケーションをインストールし(Astra Controlの外部)、Astra Controlの[アプリケーション]ページに移動して、アプリケーションとそのリソースを定義できます。

実行中のポッドを使用してストレージリソースを含むアプリケーション、または実行中のポッドを使用しないストレージリソースを含むアプリケーションを定義および管理できます。ポッドが実行されていないアプリケーションは、データ専用アプリケーションと呼ばれます。

アプリケーション管理の要件

Astra Control には、次のアプリケーション管理要件があります。

  • ライセンス:Astra Control Centerを使用してアプリケーションを管理するには、組み込みのAstra Control Center評価ライセンスまたはフルライセンスのいずれかが必要です。

  • 名前空間:アプリケーションは、Astra Controlを使用して、単一クラスタ上の1つ以上の指定された名前空間内で定義できます。アプリケーションには、同じクラスタ内の複数のネームスペースにまたがるリソースを含めることができます。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は、ネームスペーススコープの演算子を使用してインストールされたアプリをサポートします。これらの演算子は、一般的に「pass-by-reference」アーキテクチャではなく「pass-by-value」アーキテクチャで設計されています。オペレーターとそれがインストールするアプリは、同じ名前空間を使用する必要があります。これを確実にするために、オペレーターの配置YAMLファイルを変更する必要がある場合があります。

    これらのパターンに続くいくつかのオペレータアプリを次に示します。

    • "Apache K8ssandra"

      メモ K8ssandra では、 In Place リストア処理がサポートされます。新しいネームスペースまたはクラスタにリストアするには、アプリケーションの元のインスタンスを停止する必要があります。これは、ピアグループ情報がインスタンス間通信を行わないようにするためです。アプリケーションのクローニングはサポートされていません。
    • "Jenkins CI"

    • "Percona XtraDB クラスタ"

    Astra Controlでは、「パスバイリファレンス」アーキテクチャ(CockroachDBオペレータなど)で設計されたオペレータをクローニングできない場合があります。クローニング処理では、クローニング処理の一環として独自の新しいシークレットが存在する場合でも、クローニングされたオペレータがソースオペレータから Kubernetes シークレットを参照しようとします。Astra Control がソースオペレータの Kubernetes シークレットを認識しないため、クローニング処理が失敗する場合があります。

クラスタにアプリをインストールします

お先にどうぞ "クラスタが追加されました" Astra Controlを使用すると、アプリケーションをインストールしたり、クラスタ上の既存のアプリケーションを管理したりできます。1つ以上の名前空間にスコープされているすべてのアプリケーションを管理できます。

アプリケーションを定義します

Astra Controlがクラスタ上のネームスペースを検出したら、管理するアプリケーションを定義できます。を選択できます 1つ以上のネームスペースにまたがるアプリケーションを管理します または ネームスペース全体を単一のアプリケーションとして管理。データ保護処理に必要な精度のレベルが重要になります。

Astra Controlを使用すると、階層の両方のレベル(ネームスペースとそのネームスペースまたはスパニングネームスペース内のアプリケーション)を別 々 に管理できますが、いずれか一方を選択することを推奨します。Astra Control で実行したアクションは、ネームスペースレベルとアプリケーションレベルの両方で同時に実行される場合、失敗する可能性があります。

ヒント たとえば、「Maria」に対して、毎週同じ頻度でバックアップを作成するように設定することもできますが、同じネームスペースにある「MariaDB」をバックアップする頻度を高く設定する必要があるとします。これらのニーズに基づいて、アプリケーションを個別に管理する必要があります。また、シングルネームスペースアプリケーションとして管理する必要はありません。
作業を開始する前に
このタスクについて

アプリケーションとして管理するリソースを定義します

を指定できます "アプリケーションを構成するKubernetesリソース" Astra Controlで管理したい。アプリケーションを定義すると、Kubernetesクラスタの要素を1つのアプリケーションにグループ化できます。このKubernetesリソースの集まりは、ネームスペースとラベル選択条件によって分類されます。

アプリケーションを定義することで、クローン、スナップショット、バックアップなどのAstra Control操作に含めるものをより細かく制御できます。

警告 アプリケーションを定義するときは、保護ポリシーを使用して複数のアプリケーションにKubernetesリソースを含めないようにしてください。Kubernetesリソースの保護ポリシーが重複していると、原因 のデータが競合する可能性があります 詳細については、例を参照してください。
を展開して、アプリケーションネームスペースへのクラスタを対象としたリソースの追加について詳しく説明します。

ネームスペースリソースに関連付けられているクラスタリソースを、自動的に含まれるアストラコントロールに加えてインポートできます。特定のグループ、種類、バージョンのリソースを含むルールを追加し、必要に応じてラベルを付けることができます。この処理は、Astra Controlに自動的に含まれないリソースがある場合などに実行します。

Astra Controlに自動的に含まれる、クラスタを対象としたリソースを除外することはできません。

以下を追加できます apiVersions (APIバージョンと組み合わせたグループ)。

リソースの種類 1回あたりのバージョン(グループ+バージョン)

ClusterRole

rbac.authorization.k8s.io/v1

ClusterRoleBinding

rbac.authorization.k8s.io/v1

CustomResource

apiextensions.k8s.io/v1、apiextensions.k8s.io/v1beta1

CustomResourceDefinition

apiextensions.k8s.io/v1、apiextensions.k8s.io/v1beta1

MutatingWebhookConfiguration

admissionregistration.k8s.io/v1

ValidatingWebhookConfiguration

admissionregistration.k8s.io/v1

手順
  1. [アプリケーション(Applications)]ページで、[定義( Define)]を選択します

  2. [アプリケーションの定義(* Define application)]ウィンドウで、アプリケーション名を入力します。

  3. [Cluster]ドロップダウン・リストから、アプリケーションが実行されているクラスタを選択します。

  4. 名前空間」ドロップダウンリストからアプリケーションの名前空間を選択します。

    メモ アプリケーションは、Astra Controlを使用して、単一クラスタ上の1つ以上の指定された名前空間内で定義できます。アプリケーションには、同じクラスタ内の複数のネームスペースにまたがるリソースを含めることができます。Astra Controlでは、複数のクラスタ間でアプリケーションを定義する機能はサポートされていません。
  5. (オプション)各ネームスペースにKubernetesリソースのラベルを入力します。ラベルまたはラベルの選択基準(クエリー)を1つ指定できます。

    ヒント Kubernetes のラベルの詳細については、 "Kubernetes の公式ドキュメントを参照してください"
  6. (オプション)「名前空間の追加」を選択し、ドロップダウンリストから名前空間を選択して、アプリケーションの名前空間を追加します。

  7. (オプション)追加するネームスペースのラベルまたはラベルの選択基準を1つ入力します。

  8. (オプション)Astra Controlに自動的に含まれるリソースに加えて、クラスタを対象としたリソースを含めるには、*クラスタを対象とした追加のリソースを含める*をチェックし、次の手順を実行します。

    1. 含めるルールを追加」を選択します。

    2. グループ:ドロップダウンリストから、リソースのAPIグループを選択します。

    3. *kind *:ドロップダウンリストから'オブジェクトスキーマの名前を選択します

    4. バージョン:APIのバージョンを入力します。

    5. ラベルセレクタ:必要に応じて、ルールに追加するラベルを指定します。このラベルは、このラベルに一致するリソースのみを取得するために使用します。ラベルを指定しないと、Astra Controlは、そのクラスタに指定されている種類のリソースのすべてのインスタンスを収集します。

    6. エントリに基づいて作成されたルールを確認します。

    7. 「 * 追加」を選択します。

      ヒント クラスタを対象としたリソースルールは必要な数だけ作成できます。[アプリケーションの定義の概要]にルールが表示されます。
  9. [ * 定義( Define ) ] を選択します

  10. [定義(Define *)]を選択した後、必要に応じて他のアプリケーションについても同じ手順を繰り返します。

アプリケーションの定義が完了すると、アプリケーションがに表示されます Healthy 「アプリケーション」ページのアプリケーションのリストに表示されます。クローンを作成し、バックアップとスナップショットを作成できるようになりました。

メモ 追加したアプリケーションの保護列に警告アイコンが表示されている場合は、バックアップされておらず、まだバックアップのスケジュールが設定されていないことを示しています。
ヒント 特定のアプリケーションの詳細を表示するには、アプリケーション名を選択します。

このアプリに追加されたリソースを表示するには、*リソース*タブを選択します。Resource列でリソース名のあとの番号を選択するか、Searchでリソース名を入力して、追加のクラスタを対象としたリソースを確認します。

アプリケーションとして管理するネームスペースを定義します

ネームスペースのリソースをアプリケーションとして定義することで、ネームスペース内のすべてのKubernetesリソースをAstra Control管理に追加できます。特定の名前空間内のすべてのリソースを同じような方法で、共通の間隔で管理および保護する場合は、アプリケーションを個別に定義することをお勧めします。

手順
  1. クラスタページで、クラスタを選択します。

  2. [名前空間]タブを選択します。

  3. 管理するアプリケーションリソースを含む名前空間のアクションメニューを選択し、*アプリケーションとして定義*を選択します。

    ヒント 複数のアプリケーションを定義する場合は、名前空間リストから選択し、左上隅の*アクション*ボタンを選択して、*アプリケーションとして定義*を選択します。これにより、個 々 のネームスペースに複数のアプリケーションが定義されます。マルチネームスペースアプリケーションについては、を参照してください アプリケーションとして管理するリソースを定義します
    メモ [システムネームスペースを表示(Show system Namespaces)]チェックボックスを選択して、アプリケーション管理で通常はデフォルトで使用されないシステムネームスペースを表示します。 名前空間タブで使用可能な*システム名前空間の表示*オプションを示すスクリーンショット。 "詳細はこちら"

このプロセスが完了すると、ネームスペースに関連付けられているアプリケーションがに表示されます Associated applications 列(Column):

[テクニカルプレビュー] Kubernetesのカスタムリソースを使用したアプリケーションの定義

カスタムリソース(CR)を使用してアプリケーションとして定義することで、Astra Controlで管理するKubernetesリソースを指定できます。たとえば、特定のネームスペース内のすべてのリソースを同様の方法で共通の間隔で管理および保護する場合は、それらのリソースを個別に管理するか、またはネームスペース内のすべてのKubernetesリソースを個別に管理する場合は、クラスタ対象のリソースを追加できます。

手順
  1. カスタムリソース(CR)ファイルを作成し、という名前を付けます(例: astra_mysql_app.yaml)。

  2. アプリケーションに名前を付けます。 metadata.name

  3. 管理するアプリケーションリソースを定義します。

    spec.includedClusterScopedResources

    Astra Controlに自動的に含まれるもののほかに、クラスタを対象としたリソースタイプも含めます。

    • * spec.includedClusterScopedResources*:_(オプション)_含めるクラスタスコープのリソースタイプのリスト。

      • *groupVersionKind *:_(オプション)_unambiguouslyは種類を識別します。

        • group:_(groupVersionKindが使用されている場合は必須)含めるリソースのAPIグループ。

        • version:_(groupVersionKindが使用されている場合は必須)_含めるリソースのAPIバージョン。

        • kind:_(groupVersionKindを使用する場合は必須)_kind含めるリソースの種類。

      • *labelSelector *:_(オプション)_リソースセットのラベルクエリ。ラベルに一致するリソースのみを取得するために使用されます。ラベルを指定しないと、Astra Controlは、そのクラスタに指定されている種類のリソースのすべてのインスタンスを収集します。matchLabelsとmatchExpressionsの結果はANDで処理されます。

        • matchLabels:_(省略可能)_{key, value}ペアのマップ。matchLabelsマップ内の1つの{key, value}は、keyフィールドが"key"、演算子が"in"、value"のみを含むvalues配列を持つmatchExpressionsの要素に相当します。要件はANDで処理されます。

        • matchExpressions:_(オプション)_ラベルセレクタの要件のリスト。要件はANDで処理されます。

          • *key *:_(matchExpressionsを使用する場合は必須)_ラベルセレクタに関連付けられたラベルキー。

          • 演算子:_(matchExpressionsが使用されている場合は必須)_値のセットに対するキーの関係を表します。有効な演算子: InNotInExists および DoesNotExist

          • * values *:_(matchExpressionsを使用する場合は必須)_文字列値の配列。演算子が In または NotIn、values配列must_not_be empty。演算子が Exists または `DoesNotExist`values配列は空である必要があります。

    spec.includedNamespaces

    アプリケーション内のこれらのリソースに名前空間とリソースを含めます。

    • * spec.includedNamespaces*:_(必須)_リソース選択のための名前空間とオプションのフィルタを定義します。

      • ネームスペース(必須) Astra Controlで管理するアプリケーションリソースを含むネームスペース。

      • *labelSelector *:_(オプション)_リソースセットのラベルクエリ。ラベルに一致するリソースのみを取得するために使用されます。ラベルを指定しないと、Astra Controlは、そのクラスタに指定されている種類のリソースのすべてのインスタンスを収集します。matchLabelsとmatchExpressionsの結果はANDで処理されます。

        • matchLabels:_(省略可能)_{key, value}ペアのマップ。matchLabelsマップ内の1つの{key, value}は、keyフィールドが"key"、演算子が"in"、value"のみを含むvalues配列を持つmatchExpressionsの要素に相当します。要件はANDで処理されます。

        • matchExpressions:_(オプション)_ラベルセレクタの要件のリスト。 key および operator は必須です。要件はANDで処理されます。

          • *key *:_(matchExpressionsを使用する場合は必須)_ラベルセレクタに関連付けられたラベルキー。

          • 演算子:_(matchExpressionsが使用されている場合は必須)_値のセットに対するキーの関係を表します。有効な演算子: InNotInExists および DoesNotExist

          • * values *:_(matchExpressionsを使用する場合は必須)_文字列値の配列。演算子が In または NotIn、values配列must_not_be empty。演算子が Exists または `DoesNotExist`values配列は空である必要があります。

    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 Centerが表示されませんが、別のAstra Control Centerインスタンスを使用してAstra Control Centerインスタンスをバックアップおよびリストアできます。

例:リリースごとに保護ポリシーを分ける

この例では、DevOpsチームが「カナリアリリースの導入を管理しています。チームのクラスタにはnginxを実行するポッドが3つあります。そのうちの 2 つのポッドは、安定版リリース専用です。3 番目のポッドはカナリアリリース用です。

DevOpsチームのKubernetes管理者がラベルを追加します deployment=stable を使用して、安定版リリースポッドに移動しますチームがラベルを追加します deployment=canary カナリアリリースポッドに移動します。

チームの安定版リリースには、 1 時間ごとの Snapshot と日次バックアップの要件が含まれています。カナリアリリースはより一時的なリリースなので、ラベル付きのものは何でも短時間で、よりアグレッシブな保護ポリシーを作成したいと考えています deployment=canary

データの競合を回避するために、管理者は「カナリア」リリース用と「stable」リリース用の2つのアプリケーションを作成します。これにより、 Kubernetes オブジェクトの 2 つのグループに対して、バックアップ、 Snapshot 、およびクローニングの処理が分離されます。

詳細については、こちらをご覧ください