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

Astra Control Service から Kubernetes クラスタの管理を開始します

寄稿者

環境のセットアップが完了したら、 Kubernetes クラスタを作成し、 Astra Control Service に追加することができます。

Kubernetes クラスタを作成

まだクラスタがない場合は、を満たすクラスタを作成できます "Amazon Elastic Kubernetes Service(EKS)用のAstra制御サービスの要件"。まだクラスタがない場合は、を満たすクラスタを作成できます "Google Kubernetes Engine ( GKE )用 Astra Control Service の要件"。まだクラスタがない場合は、を満たすクラスタを作成できます "Azure NetApp Files を備えた Azure Kubernetes Service ( AKS )の Astra 制御サービスの要件" または "Azure 管理ディスクを使用する Azure Kubernetes Service ( AKS )の Astra 制御サービスの要件"

注記 Astra Control Serviceは、Azure Active Directory(Azure AD)を使用して認証とID管理を行うAKSクラスタをサポートします。クラスタを作成するときは、の手順に従ってください "公式ドキュメント" をクリックして、Azure ADを使用するようにクラスタを設定してください。AKSで管理されるAzure AD統合の要件をクラスタが満たしていることを確認する必要があります。

をアップロードすることで、Astra Control Serviceに自己管理型クラスタを追加できます kubeconfig.yaml ファイル。クラスタがに記載された要件を満たしていることを確認する必要があります Kubernetes クラスタの管理を開始します

Kubernetes クラスタの管理を開始します

Astra Control Service にログインしたら、最初にクラスタの管理を開始します。クラウドプロバイダまたは自己管理クラスタによって管理されているクラスタを追加できます。Astra Control Serviceにクラスタを追加する前に、特定のタスクを実行し、クラスタが一定の要件を満たしていることを確認する必要があります。

クラウドプロバイダが管理するクラスタに必要なもの
Amazon Web Services の
Microsoft Azure
Google Cloud
自己管理型クラスタに必要なもの

自社で管理するクラスタでは、Astra Tridentを使用してネットアップのストレージサービスを操作することも、CSI(Container Storage Interface)ドライバを使用して他のストレージサービスを操作することもできます。

Astra Control Serviceは、次のKubernetesディストリビューションを使用して、自己管理型クラスタをサポートします。

  • Red Hat OpenShift Container Platform

  • Rancher Kubernetes Engineの略

  • アップストリームKubernetes

自己管理型クラスタは、次の要件を満たしている必要があります。

  • クラスタにインターネット経由でアクセスできる必要があります。

  • CSIドライバで有効にしたストレージを使用または使用する予定の場合は、適切なCSIドライバをクラスタにインストールする必要があります。CSIドライバを使用してストレージを統合する方法の詳細については、ご使用のストレージサービスのマニュアルを参照してください。

  • ネットアップストレージを使用している場合や使用を計画している場合は、Astra Tridentのバージョンがインストールされていることを確認してください "Astra Control Serviceによってサポートされます"

    注記 可能です "Astra Tridentを導入" Tridentオペレータ(手動またはHelmチャートを使用)またはを使用します tridentctl。Astra Tridentのインストールまたはアップグレードを行う前に、を参照してください "サポートされるフロントエンド、バックエンド、およびホスト構成"
    • * Tridentストレージバックエンドが設定されています*:少なくとも1つのAstra Tridentストレージバックエンドが必要です "を設定します" クラスタのポリシーを確認してください。

    • * Tridentストレージクラスを設定*:少なくとも1つのAstra Tridentストレージクラスが必要です "を設定します" クラスタのポリシーを確認してください。デフォルトのストレージクラスが設定されている場合は、1つのストレージクラスだけにそのアノテーションを設定します。

    • * Astra Tridentボリュームスナップショットコントローラとボリュームスナップショットクラスがインストールおよび設定されている*:ボリュームスナップショットコントローラがである必要があります "インストール済み" Astra Controlでスナップショットを作成できるようにします。Astra Tridentが少なくとも1つ VolumeSnapshotClass はい "セットアップ" 管理者による。

  • Kubeconfigにアクセス可能:にアクセスできます クラスタkubeconfig コンテキスト要素が1つだけ含まれます。

  • rancherのみ: Rancher環境でアプリケーションクラスタを管理する場合、rancherから提供されたkubeconfigファイルでアプリケーションクラスタのデフォルトコンテキストを変更して、rancher APIサーバコンテキストではなくコントロールプレーンコンテキストを使用します。これにより、 Rancher API サーバの負荷が軽減され、パフォーマンスが向上します。

(オプション)Astra Tridentのバージョンを確認

クラスタがストレージサービスにAstra Tridentを使用している場合は、インストールされているAstra Tridentのバージョンが最新であることを確認します。

手順
  1. Astra Tridentのバージョンを確認

    kubectl get tridentversions -n trident

    Astra Tridentがインストールされている場合は、次のような出力が表示されます。

    NAME      VERSION
    trident   22.10.0

    Astra Tridentがインストールされていない場合は、次のような出力が表示されます。

    error: the server doesn't have a resource type "tridentversions"
    注記 Astra Tridentがインストールされていないか、最新でない場合に、クラスタがストレージサービス用のAstra Tridentを使用するには、作業を進める前に最新バージョンのAstra Tridentをインストールする必要があります。を参照してください "Astra Trident のドキュメント" 手順については、を参照し
  2. ポッドが実行されていることを確認します。

    kubectl get pods -n trident
  3. サポートされているAstra Tridentドライバをストレージクラスで使用しているかどうかを確認します。プロビジョニング担当者の名前はとします csi.trident.netapp.io。次の例を参照してください。

    kubectl get sc

    回答例:

    NAME                   PROVISIONER                    RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    ontap-gold (default)   csi.trident.netapp.io          Delete          Immediate           true                   5d23h
adminロールのkubeconfigを作成します(Rancher、OpenShift、およびアップストリームのKubernetesを実行する環境 クラスタ)

手順を実行する前に、マシンに次のものがあることを確認してください。

  • Kubectl V1.19以降がインストールされています

  • アクティブなコンテキストのクラスタ管理者権限があるアクティブな kubeconfig です

手順
  1. 次の手順でサービスアカウントを作成します。

    1. という名前のサービスアカウントファイルを作成します astracontrol-service-account.yaml

      名前と名前空間を必要に応じて調整します。ここで変更を行った場合は、以降の手順でも同じ変更を適用する必要があります。

    astracontrol-service-account.yaml

    +

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: astracontrol-service-account
      namespace: default
    1. サービスアカウントを適用します。

      kubectl apply -f astracontrol-service-account.yaml
  2. 次のようにクラスタ管理者権限を付与します。

    1. を作成します ClusterRoleBinding という名前のファイルです astracontrol-clusterrolebinding.yaml

      必要に応じて、サービスアカウントの作成時に変更した名前と名前空間を調整します。

    astracontrol-clusterrolebinding.yaml

    +

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: astracontrol-admin
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-admin
    subjects:
    - kind: ServiceAccount
      name: astracontrol-service-account
      namespace: default
    1. クラスタロールバインドを適用します。

      kubectl apply -f astracontrol-clusterrolebinding.yaml
  3. サービスアカウントのシークレットを一覧表示します(置き換えます) <context> インストールに適したコンテキストを使用して、次の操作を行います。

    kubectl get serviceaccount astracontrol-service-account --context <context> --namespace default -o json

    出力の末尾は次のようになります。

    "secrets": [
    { "name": "astracontrol-service-account-dockercfg-vhz87"},
    { "name": "astracontrol-service-account-token-r59kr"}
    ]

    内の各要素のインデックス secrets アレイは0から始まります。上記の例では、のインデックスです astracontrol-service-account-dockercfg-vhz87 は0、のインデックスです astracontrol-service-account-token-r59kr は1です。出力で、 "token" という単語が含まれるサービスアカウント名のインデックスをメモしてください。

  4. 次のように kubeconfig を生成します。

    1. を作成します create-kubeconfig.sh ファイル。交換してください TOKEN_INDEX 次のスクリプトの先頭に正しい値を入力します。

      create-kubeconfig.sh
      # Update these to match your environment.
      # Replace TOKEN_INDEX with the correct value
      # from the output in the previous step. If you
      # didn't change anything else above, don't change
      # anything else here.
      
      SERVICE_ACCOUNT_NAME=astracontrol-service-account
      NAMESPACE=default
      NEW_CONTEXT=astracontrol
      KUBECONFIG_FILE='kubeconfig-sa'
      
      CONTEXT=$(kubectl config current-context)
      
      SECRET_NAME=$(kubectl get serviceaccount ${SERVICE_ACCOUNT_NAME} \
        --context ${CONTEXT} \
        --namespace ${NAMESPACE} \
        -o jsonpath='{.secrets[TOKEN_INDEX].name}')
      TOKEN_DATA=$(kubectl get secret ${SECRET_NAME} \
        --context ${CONTEXT} \
        --namespace ${NAMESPACE} \
        -o jsonpath='{.data.token}')
      
      TOKEN=$(echo ${TOKEN_DATA} | base64 -d)
      
      # Create dedicated kubeconfig
      # Create a full copy
      kubectl config view --raw > ${KUBECONFIG_FILE}.full.tmp
      
      # Switch working context to correct context
      kubectl --kubeconfig ${KUBECONFIG_FILE}.full.tmp config use-context ${CONTEXT}
      
      # Minify
      kubectl --kubeconfig ${KUBECONFIG_FILE}.full.tmp \
        config view --flatten --minify > ${KUBECONFIG_FILE}.tmp
      
      # Rename context
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        rename-context ${CONTEXT} ${NEW_CONTEXT}
      
      # Create token user
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        set-credentials ${CONTEXT}-${NAMESPACE}-token-user \
        --token ${TOKEN}
      
      # Set context to use token user
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        set-context ${NEW_CONTEXT} --user ${CONTEXT}-${NAMESPACE}-token-user
      
      # Set context to correct namespace
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        set-context ${NEW_CONTEXT} --namespace ${NAMESPACE}
      
      # Flatten/minify kubeconfig
      kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \
        view --flatten --minify > ${KUBECONFIG_FILE}
      
      # Remove tmp
      rm ${KUBECONFIG_FILE}.full.tmp
      rm ${KUBECONFIG_FILE}.tmp
    2. コマンドをソースにし、 Kubernetes クラスタに適用します。

      source create-kubeconfig.sh
  5. (オプション)クラスタにわかりやすい名前にコバーベキューの名前を変更します。クラスタのクレデンシャルを保護します。

    chmod 700 create-kubeconfig.sh
    mv kubeconfig-sa.txt YOUR_CLUSTER_NAME_kubeconfig
手順
  1. ダッシュボードで、 * Kubernetes クラスタの管理 * を選択します。

    プロンプトに従ってクラスタを追加します。

  2. プロバイダ:クラウドプロバイダを選択し、新しいクラウドインスタンスを作成するために必要なクレデンシャルを入力するか、使用する既存のクラウドインスタンスを選択します。

  3. * Amazon Web Services *:JSONファイルをアップロードするか、クリップボードからそのJSONファイルの内容を貼り付けて、Amazon Web Services IAMユーザアカウントの詳細を指定します。

    JSONファイルに、クラスタを作成したIAMユーザのクレデンシャルを含める必要があります。

  4. * Microsoft Azure * : JSON ファイルをアップロードするか、クリップボードからその JSON ファイルの内容を貼り付けて、 Azure サービスプリンシパルの詳細を指定します。

    JSON ファイルに、サービスプリンシパルの作成時に Azure CLI からの出力が含まれている必要があります。サブスクリプション ID を含めることで、 Astra に自動的に追加されるようにすることもできます。ID が必要な場合は、 JSON の指定後に手動で ID を入力する必要があります。

  5. * Google Cloud Platform * :ファイルをアップロードするか、クリップボードからコンテンツを貼り付けて、サービスアカウントのキーファイルを提供します。

    Astra Control Service は、サービスアカウントを使用して、 Google Kubernetes Engine で実行されているクラスタを検出します。

  6. その他:をアップロードして、自己管理クラスタに関する詳細を指定します kubeconfig.yaml ファイルまたはの内容を貼り付けます kubeconfig.yaml クリップボードからファイル。

    注記 自分で作成する場合は kubeconfig ファイルには、* 1つの*コンテキストエレメントのみを定義する必要があります。を参照してください "Kubernetes のドキュメント" を参照してください kubeconfig ファイル。
    1. クラウドインスタンス名(プロバイダ管理クラスタの場合):このクラスタの追加時に作成される新しいクラウドインスタンスの名前を指定します。の詳細を確認してください "クラウドインスタンス"

      注記 クラスタのリストから選択するときは、「Eligible」タブに注意してください。警告が表示された場合は、警告にカーソルを合わせて、クラスタに問題があるかどうかを確認します。たとえば、クラスタにワーカーノードがないことがわかります。

[+]

注記 「プライベート」アイコンが付いているクラスタを選択する場合は、プライベート IP アドレスが使用され、 Astra Control でクラスタを管理するために Astra コネクタが必要です。Astra Connector のインストールが必要であることを示すメッセージが表示された場合は、 "これらの手順を参照してください" をクリックして Astra コネクタをインストールし、クラスタの管理を有効にします。Astra コネクタをインストールしたら、クラスタが対応している必要があります。クラスタの追加に進みます。
  1. クレデンシャル名(自己管理クラスタの場合):Astra Controlにアップロードする自己管理クラスタクレデンシャルの名前を指定します。デフォルトでは、クレデンシャル名がクラスタの名前として自動的に入力されます。

  2. (オプション)* Storage *:このクラスタに導入されたKubernetesアプリケーションをデフォルトで使用するストレージクラスを選択します。

    注記

    各クラウドプロバイダのストレージサービスには、コスト、パフォーマンス、耐障害性に関する次の情報が表示されます。

    • Cloud Volumes Service for Google Cloud:価格、パフォーマンス、耐障害性に関する情報

    • Google Persistent Disk:コスト、パフォーマンス、耐障害性に関する情報は提供されません

    • Azure NetApp Files :パフォーマンスと耐障害性に関する情報

    • Azure Managed Disks:価格、パフォーマンス、耐障害性に関する情報は提供されません

    • Amazon Elastic Block Store:価格、パフォーマンス、耐障害性に関する情報がない

    • Amazon FSX for NetApp ONTAP :価格、パフォーマンス、耐障害性に関する情報は提供されません

    • NetApp Cloud Volumes ONTAP :価格、パフォーマンス、耐障害性に関する情報は提供されません

    ストレージクラスごとに、次のいずれかのサービスを利用できます。

結果

プロバイダ管理クラスタの場合:このクラウドプロバイダ用に初めて追加したクラスタの場合、Astra Control Serviceは、対象となるクラスタで実行されているアプリケーションのバックアップ用にクラウドプロバイダ用のオブジェクトストアを作成します。(このクラウドプロバイダに対して後続のクラスタを追加した場合、オブジェクトストアは作成されません)。デフォルトのストレージクラスを指定した場合は、指定したデフォルトのストレージクラスがAstra Control Serviceによって設定されます。Amazon Web ServicesまたはGoogle Cloud Platformで管理されるクラスタの場合、Astra Control Serviceはクラスタにも管理者アカウントを作成します。この処理には数分かかることがあります。

デフォルトのストレージクラスを変更する

クラスタのデフォルトのストレージクラスは変更できます。

Astra Controlを使用してデフォルトのストレージクラスを変更する

クラスタのデフォルトのストレージクラスは、Astra Control内から変更できます。以前にインストールしたストレージバックエンドサービスをクラスタで使用している場合は、このメソッドを使用してデフォルトのストレージクラスを変更できない可能性があります(*デフォルトに設定*アクションは選択できません)。この場合は、を実行できます コマンドラインを使用してデフォルトのストレージクラスを変更します

手順
  1. Astra Control Service UI で、 [* Clusters] を選択します。

  2. [* Clusters]ページで、変更するクラスタを選択します。

  3. [ * ストレージ * ] タブを選択します。

  4. ストレージクラス」カテゴリを選択します。

  5. デフォルトとして設定するストレージクラスの* Actions *メニューを選択します。

  6. デフォルトに設定」を選択します。

コマンドラインを使用してデフォルトのストレージクラスを変更します

Kubernetesコマンドを使用してクラスタのデフォルトのストレージクラスを変更することができます。この方法は、クラスタの構成に関係なく機能します。

手順
  1. Kubernetesクラスタにログインします。

  2. クラスタ内のストレージクラスを表示します。

    kubectl get storageclass
  3. デフォルトのストレージクラスからデフォルトの指定を削除する。<SC_NAME> をストレージクラスの名前に置き換えます。

    kubectl patch storageclass <SC_NAME> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
  4. 別のストレージクラスをデフォルトとしてマークします。<SC_NAME> をストレージクラスの名前に置き換えます。

    kubectl patch storageclass <SC_NAME> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
  5. 新しいデフォルトストレージクラスを確認します。

    kubectl get storageclass

を参照してください。