Skip to main content
Astra Control Service
All cloud providers
  • Amazon Web Services
  • Google Cloud
  • Microsoft Azure
  • All cloud providers

Enable Astra Control Provisioner

Contributors netapp-dbagwell

Astra Trident versions 23.10 and later include the option to use Astra Control Provisioner, which enables licensed Astra Control users to access advanced storage provisioning functionality. Astra Control Provisioner provides this extended functionality in addition to standard Astra Trident CSI-based functionality. You can use this procedure to enable and install Astra Control Provisioner.

Your Astra Control Service subscription automatically includes the license for Astra Control Provisioner use.

In coming Astra Control updates, Astra Control Provisioner will replace Astra Trident as storage provisioner and orchestrator and be mandatory for Astra Control use. Because of this, it's strongly recommended that Astra Control users enable Astra Control Provisioner. Astra Trident will continue to remain open source and be released, maintained, supported, and updated with new CSI and other features from NetApp.

How do I know if I need to enable Astra Control Provisioner?

If you add a cluster to Astra Control Service that does not have Astra Trident previously installed, the cluster will be marked as Eligible. After you add the cluster to Astra Control, Astra Control Provisioner will be automatically enabled.

If your cluster is not marked Eligible, it will be marked Partially eligible because of one of the following:

  • It's using an older version of Astra Trident

  • It's using an Astra Trident 23.10 that does not yet have the provisioner option enabled

  • It's a cluster type that does not allow automatic enablement

For Partially eligible cases, use these instructions to manually enable Astra Control Provisioner for your cluster.

A screenshot depicting cluster eligibility in the Add cluster workflow

Before you enable Astra Control Provisioner

If you have an existing Astra Trident without Astra Control Provisioner and want to enable Astra Control Provisioner, do the following first:

  • If you have Astra Trident installed, confirm that its version is within a four-release window: You can perform a direct upgrade to Astra Trident 24.02 with Astra Control Provisioner if your Astra Trident is within a four-release window of version 24.02. For example, you can directly upgrade from Astra Trident 23.04 to 24.02.

  • Confirm that your cluster has an AMD64 system architecture: The Astra Control Provisioner image is provided in both AMD64 and ARM64 CPU architectures, but only AMD64 is supported by Astra Control.

Steps
  1. Access the NetApp Astra Control image registry:

    1. Log on to the Astra Control Service UI and record your Astra Control account ID.

      1. Select the figure icon at the top right of the page.

      2. Select API access.

      3. Write down your account ID.

    2. From the same page, select Generate API token and copy the API token string to the clipboard and save it in your editor.

    3. Log into the Astra Control registry using your preferred method:

      docker login cr.astra.netapp.io -u <account-id> -p <api-token>
      crane auth login cr.astra.netapp.io -u <account-id> -p <api-token>
  2. (Custom registries only) Follow these steps to move the image to your custom registry. If you aren't using a registry, follow the Trident operator steps in the next section.

    Note You can use Podman instead of Docker for the following commands. If you are using a Windows environment, PowerShell is recommended.
    Docker
    1. Pull the Astra Control Provisioner image from the registry:

      Note The image pulled will not support multiple platforms and will only support the same platform as the host that pulled the image, such as Linux AMD64.
      docker pull cr.astra.netapp.io/astra/trident-acp:24.02.0 --platform <cluster platform>

      Example:

      docker pull cr.astra.netapp.io/astra/trident-acp:24.02.0 --platform linux/amd64
    2. Tag the image:

      docker tag cr.astra.netapp.io/astra/trident-acp:24.02.0 <my_custom_registry>/trident-acp:24.02.0
    3. Push the image to your custom registry:

      docker push <my_custom_registry>/trident-acp:24.02.0
    Crane
    1. Copy the Astra Control Provisioner manifest to your custom registry:

      crane copy cr.astra.netapp.io/astra/trident-acp:24.02.0 <my_custom_registry>/trident-acp:24.02.0
  3. Determine if the original Astra Trident installation method used an operator (either manually or with Helm) or tridentctl.

  4. Enable Astra Control Provisioner in Astra Trident using the installation method you used originally:

    Astra Trident operator
    1. Download the Astra Trident installer and extract it.

    2. Complete these steps if you have not yet installed Astra Trident or if you removed the operator from your original Astra Trident deployment:

      1. Create the CRD:

        kubectl create -f deploy/crds/trident.netapp.io_tridentorchestrators_crd_post1.16.yaml
      2. Create the trident namespace (kubectl create namespace trident) or confirm that the trident namespace still exists (kubectl get all -n trident). If the namespace has been removed, create it again.

    3. Update Astra Trident to 24.02.0:

      Note For clusters running Kubernetes 1.24 or earlier, use bundle_pre_1_25.yaml. For clusters running Kubernetes 1.25 or later, use bundle_post_1_25.yaml.
      kubectl -n trident apply -f trident-installer/deploy/<bundle-name.yaml>
    4. Verify Astra Trident is running:

      kubectl get torc -n trident

      Response:

      NAME      AGE
      trident   21m
    5. If you have a registry that uses secrets, create a secret to use to pull the Astra Control Provisioner image:

      kubectl create secret docker-registry <secret_name> -n trident --docker-server=<my_custom_registry> --docker-username=<username> --docker-password=<token>
    6. Edit the TridentOrchestrator CR and make the following edits:

      kubectl edit torc trident -n trident
      1. Set a custom registry location for the Astra Trident image or pull it from the Astra Control registry (tridentImage: <my_custom_registry>/trident:24.02.0 or tridentImage: netapp/trident:24.02.0).

      2. Enable Astra Control Provisioner (enableACP: true).

      3. Set the custom registry location for the Astra Control Provisioner image or pull it from the Astra Control registry (acpImage: <my_custom_registry>/trident-acp:24.02.0 or acpImage: cr.astra.netapp.io/astra/trident-acp:24.02.0).

      4. If you established image pull secrets earlier in this procedure, you can set them here (imagePullSecrets: - <secret_name>). Use the same name secret name you established in the previous steps.

      apiVersion: trident.netapp.io/v1
      kind: TridentOrchestrator
      metadata:
        name: trident
      spec:
        debug: true
        namespace: trident
        tridentImage: <registry>/trident:24.02.0
        enableACP: true
        acpImage: <registry>/trident-acp:24.02.0
        imagePullSecrets:
        - <secret_name>
    7. Save and exit the file. The deployment process will begin automatically.

    8. Verify the operator, deployment, and replicasets are created.

      kubectl get all -n trident
      Important There should only be one instance of the operator in a Kubernetes cluster. Do not create multiple deployments of the Astra Trident operator.
    9. Verify the trident-acp container is running and that acpVersion is 24.02.0 with a status of Installed:

      kubectl get torc -o yaml

      Response:

      status:
        acpVersion: 24.02.0
        currentInstallationParams:
          ...
          acpImage: <registry>/trident-acp:24.02.0
          enableACP: "true"
          ...
        ...
        status: Installed
    tridentctl
    1. Download the Astra Trident installer and extract it.

    2. If you have an existing Astra Trident, uninstall it from the cluster that hosts it.

    3. Install Astra Trident with Astra Control Provisioner enabled (--enable-acp=true):

      ./tridentctl -n trident install --enable-acp=true --acp-image=mycustomregistry/trident-acp:24.02
    4. Confirm that Astra Control Provisioner has been enabled:

      ./tridentctl -n trident version

      Response:

      +----------------+----------------+-------------+ | SERVER VERSION | CLIENT VERSION | ACP VERSION | +----------------+----------------+-------------+ | 24.02.0 | 24.02.0 | 24.02.0. | +----------------+----------------+-------------+
    Helm
    1. If you have Astra Trident 23.07.1 or earlier installed, uninstall the operator and other components.

    2. If your Kubernetes cluster is running 1.24 or earlier, delete psp:

      kubectl delete psp tridentoperatorpod
    3. Add the Astra Trident Helm repository:

      helm repo add netapp-trident https://netapp.github.io/trident-helm-chart
    4. Update the Helm chart:

      helm repo update netapp-trident

      Response:

      Hang tight while we grab the latest from your chart repositories...
      ...Successfully got an update from the "netapp-trident" chart repository
      Update Complete. ⎈Happy Helming!⎈
    5. List the images:

      ./tridentctl images -n trident

      Response:

      | v1.28.0            | netapp/trident:24.02.0|
      |                    | docker.io/netapp/trident-autosupport:24.02|
      |                    | registry.k8s.io/sig-storage/csi-provisioner:v4.0.0|
      |                    | registry.k8s.io/sig-storage/csi-attacher:v4.5.0|
      |                    | registry.k8s.io/sig-storage/csi-resizer:v1.9.3|
      |                    | registry.k8s.io/sig-storage/csi-snapshotter:v6.3.3|
      |                    | registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.10.0 |
      |                    | netapp/trident-operator:24.02.0 (optional)
    6. Ensure that trident-operator 24.02.0 is available:

      helm search repo netapp-trident/trident-operator --versions

      Response:

      NAME                            CHART VERSION   APP VERSION     DESCRIPTION
      netapp-trident/trident-operator 100.2402.0      24.02.0         A
    7. Use helm install and run one of the following options that include these settings:

      • A name for your deployment location

      • The Astra Trident version

      • The name of the Astra Control Provisioner image

      • The flag to enable the provisioner

      • (Optional) A local registry path. If you are using a local registry, your Trident images can be located in one registry or different registries, but all CSI images must be located in the same registry.

      • The Trident namespace

    Options
    • Images without a registry

    helm install trident netapp-trident/trident-operator --version 100.2402.0 --set acpImage=cr.astra.netapp.io/astra/trident-acp:24.02.0 --set enableACP=true --set operatorImage=netapp/trident-operator:24.02.0 --set tridentAutosupportImage=docker.io/netapp/trident-autosupport:24.02 --set tridentImage=netapp/trident:24.02.0 --namespace trident
    • Images in one or more registries

    helm install trident netapp-trident/trident-operator --version 100.2402.0 --set acpImage=<your-registry>:<acp image> --set enableACP=true --set imageRegistry=<your-registry>/sig-storage --set operatorImage=netapp/trident-operator:24.02.0 --set tridentAutosupportImage=docker.io/netapp/trident-autosupport:24.02 --set tridentImage=netapp/trident:24.02.0 --namespace trident

    You can use helm list to review installation details such as name, namespace, chart, status, app version, and revision number.

    Note

    If you have any issues deploying Trident using Helm, run this command to fully uninstall Astra Trident:

    ./tridentctl uninstall -n trident

    Do not completely remove Astra Trident CRDs as part of your uninstall before attempting to enable Astra Control Provisioner again.

Result

Astra Control Provisioner functionality is enabled and you can use any features available for the version you are running.

After Astra Control Provisioner is installed, the cluster hosting the provisioner in the Astra Control UI will show an ACP version rather than Trident version field and current installed version number.

A screenshot depicting the ACP version location in UI