Add a private self-managed cluster to Astra Control Service
After you set up your environment, you're ready to create a Kubernetes cluster and then add it to Astra Control Service.
A self-managed cluster is a cluster that you directly provision and manage. Astra Control Service supports self-managed clusters that run in a public cloud environment. You can add a self-managed cluster to Astra Control Service by uploading a kubeconfig.yaml
file. You'll need to ensure the cluster meets the requirements outlined here.
Supported Kubernetes distributions
You can use Astra Control Service to manage the following types of private, self-managed clusters:
Kubernetes distribution | Supported versions |
---|---|
Kubernetes (Upstream) |
1.27 to 1.29 |
Rancher Kubernetes Engine (RKE) |
RKE 1: Versions 1.24.17, 1.25.13, 1.26.8 with Rancher Manager 2.7.9 |
Red Hat OpenShift Container Platform |
4.12 through 4.14 |
These instructions assume that you have already created a private cluster and prepared a secure method to remotely access it.
You need to perform the following tasks to add your private cluster to Astra Control Service:
Install Astra Connector
Before you add a private cluster, you need to install Astra Connector on the cluster so that Astra Control can communicate with it. Refer to Install the previous version of Astra Connector for private clusters managed with non-Kubernetes-native workflows for instructions.
Set up persistent storage
Configure persistent storage for the cluster. Refer to the Get Started documentation for more information about configuring persistent storage:
Add the private self-managed cluster to Astra Control Service
You can now add the private cluster to Astra Control Service.
Before you begin
A self-managed cluster is a cluster that you directly provision and manage. Astra Control Service supports self-managed clusters that run in a public cloud environment. Your self-managed clusters can use Astra Control Provisioner to interface with NetApp storage services, or they can use Container Storage Interface (CSI) drivers to interface with Amazon Elastic Block Store (EBS), Azure Managed Disks, and Google Persistent Disk.
Astra Control Service supports self-managed clusters that use the following Kubernetes distributions:
-
Red Hat OpenShift Container Platform
-
Rancher Kubernetes Engine
-
Upstream Kubernetes
Your self-managed cluster needs to meet the following requirements:
-
The cluster must be accessible via the internet.
-
If you are using or plan to use storage enabled with CSI drivers, the appropriate CSI drivers must be installed on the cluster. For more information on using CSI drivers to integrate storage, refer to the documentation for your storage service.
-
You have access to the cluster kubeconfig file that includes only one context element. Follow these instructions to generate a kubeconfig file.
-
If you are adding the cluster using a kubeconfig file that references a private Certificate Authority (CA), add the following line to the
cluster
section of the kubeconfig file. This enables Astra Control to add the cluster:insecure-skip-tls-verify: true
-
Rancher only: When managing application clusters in a Rancher environment, modify the application cluster's default context in the kubeconfig file provided by Rancher to use a control plane context instead of the Rancher API server context. This reduces load on the Rancher API server and improves performance.
-
Astra Control Provisioner requirements: You should have a properly configured Astra Control Provisioner, including its Astra Trident components, to manage clusters.
-
Review Astra Trident environment requirements: Prior to installing or upgrading Astra Control Provisioner, review the supported frontends, backends, and host configurations.
-
Enable Astra Control Provisioner functionality: It's highly recommended that you install Astra Trident 23.10 or later and enable Astra Control Provisioner advanced storage functionality. In coming releases, Astra Control will not support Astra Trident if the Astra Control Provisioner is not also enabled.
-
Configure a storage backend: At least one storage backend must be configured in Astra Trident on the cluster.
-
Configure a storage class: At least one storage class must be configured in Astra Trident on the cluster. If a default storage class is configured, ensure that it is the only storage class that has the default annotation.
-
Configure a volume snapshot controller and install a volume snapshot class: Install a volume snapshot controller so that snapshots can be created in Astra Control. Create at least one
VolumeSnapshotClass
using Astra Trident.
-
-
On the Dashboard, select Manage Kubernetes cluster.
Follow the prompts to add the cluster.
-
Provider: Select the Other tab to add details about your self-managed cluster.
-
Other: Provide details about your self-managed cluster by uploading a
kubeconfig.yaml
file or by pasting the contents of thekubeconfig.yaml
file from your clipboard.If you create your own kubeconfig
file, you should define only one context element in it. Refer to these instructions for information about creatingkubeconfig
files. -
Credential name: Provide a name for the self-managed cluster credential you are uploading to Astra Control. By default, the credential name is auto-populated as the name of the cluster.
-
Private route identifier: Enter the private route identifier, which you can obtain from the Astra Connector. If you query the Astra Connector via the
kubectl get astraconnector -n astra-connector
command, the private route identifier is referred to as theASTRACONNECTORID
.The private route identifier is the name associated with the Astra Connector that enables a private Kubernetes cluster to be managed by Astra. In this context, a private cluster is a Kubernetes cluster that does not expose its API server to the internet. -
Select Next.
-
(Optional) Storage: Optionally, select the storage class that you'd like Kubernetes applications deployed to this cluster to use by default.
-
To select a new default storage class for the cluster, enable the Assign a new default storage class check box.
-
Select a new default storage class from the list.
Each cloud provider storage service displays the following price, performance, and resilience information:
-
Cloud Volumes Service for Google Cloud: Price, performance, and resilience information
-
Google Persistent Disk: No price, performance, or resilience information available
-
Azure NetApp Files: Performance and resilience information
-
Azure Managed disks: No price, performance, or resilience information available
-
Amazon Elastic Block Store: No price, performance, or resilience information available
-
Amazon FSx for NetApp ONTAP: No price, performance, or resilience information available
-
NetApp Cloud Volumes ONTAP: No price, performance, or resilience information available
Each storage class can utilize one of the following services:
-
-
-
Select Next.
-
Review & Approve: Review the configuration details.
-
Select Add to add the cluster to Astra Control Service.
Change the default storage class
You can change the default storage class for a cluster.
Change the default storage class using Astra Control
You can change the default storage class for a cluster from within Astra Control. If your cluster uses a previously installed storage backend service, you might not be able to use this method to change the default storage class (the Set as default action is not selectable). In this case, you can Change the default storage class using the command line.
-
In the Astra Control Service UI, select Clusters.
-
On the Clusters page, select the cluster that you want to change.
-
Select the Storage tab.
-
Select the Storage classes category.
-
Select the Actions menu for the storage class that you want to set as default.
-
Select Set as default.
Change the default storage class using the command line
You can change the default storage class for a cluster using Kubernetes commands. This method works regardless of your cluster's configuration.
-
Log in to your Kubernetes cluster.
-
List the storage classes in your cluster:
kubectl get storageclass
-
Remove the default designation from the default storage class. Replace <SC_NAME> with the name of the storage class:
kubectl patch storageclass <SC_NAME> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
-
Mark a different storage class as default. Replace <SC_NAME> with the name of the storage class:
kubectl patch storageclass <SC_NAME> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
-
Confirm the new default storage class:
kubectl get storageclass