Skip to content

Commit e806b5c

Browse files
committed
Clarify Kubernetes storage helper ownership
1 parent fa1e345 commit e806b5c

13 files changed

Lines changed: 150 additions & 118 deletions

File tree

config.example/group_vars/k8s_cluster.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,10 @@ dashboard_metrics_scraper_repo: "kubernetesui/metrics-scraper"
4646
# Ensure hosts file generation only runs across k8s cluster
4747
hosts_add_ansible_managed_hosts_groups: ["k8s_cluster"]
4848

49-
# NFS Client Provisioner
49+
# NFS Client Provisioner
5050
# Playbook: nfs-client-provisioner.yml
51+
# This convenience default creates a non-HA NFS export on the first control-plane
52+
# node. For production clusters, point this at site-owned storage or disable it.
5153
k8s_nfs_client_provisioner: true
5254
k8s_deploy_nfs_server: true
5355
k8s_nfs_mkdir: true # Set to false if an export dir is already configured with proper permissions

config.example/group_vars/netapp-trident.yml

Lines changed: 34 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,36 @@
11
---
22
# vars file for netapp-trident playbook
33

4-
# URL of the Trident installer package that you wish to download and use
5-
trident_version: "22.01.0"
4+
# Version of the Trident installer package to download when tridentctl is needed
5+
trident_version: "26.02.1"
66
trident_installer_url: "https://github.com/NetApp/trident/releases/download/v{{ trident_version }}/trident-installer-{{ trident_version }}.tar.gz"
77

8+
# Official Trident Helm chart settings
9+
trident_helm_repo_name: netapp-trident
10+
trident_helm_repo_url: https://netapp.github.io/trident-helm-chart
11+
trident_helm_release_name: trident-operator
12+
trident_helm_chart_name: "{{ trident_helm_repo_name }}/trident-operator"
13+
trident_helm_chart_version: "100.2602.1"
14+
815
# Namespace to install Trident in
916
trident_namespace: deepops-trident
1017

1118
# Denotes whether or not to create new backends after deploying trident
12-
# For more info, refer to: https://netapp-trident.readthedocs.io/en/stable-v20.04/kubernetes/operator-install.html#creating-a-trident-backend
13-
create_backends: true
19+
# For more info, refer to: https://docs.netapp.com/us-en/trident/trident-use/ontap-nas-examples.html
20+
create_backends: false
21+
trident_hide_backend_details: true
1422

1523
# List of backends to create
16-
# For more info on parameter values, refer to: https://netapp-trident.readthedocs.io/en/stable-v20.04/kubernetes/operations/tasks/backends/ontap.html
17-
# Note: Parameters other than those listed below are not avaible when creating a backend via DeepOps
24+
# For more info on parameter values, refer to: https://docs.netapp.com/us-en/trident/trident-use/ontap-nas-examples.html
25+
# Note: Parameters other than those listed below are not available when creating a backend via DeepOps
1826
# If you wish to use other parameter values, you must create your backend manually.
1927
backends_to_create:
2028
- backendName: ontap-flexvol
2129
storageDriverName: ontap-nas # only 'ontap-nas' and 'ontap-nas-flexgroup' are supported when creating a backend via DeepOps
22-
managementLIF: 10.61.188.40
23-
dataLIF: 192.168.200.41
24-
svm: ai221_data
25-
username: admin
26-
password: NetApp!23
30+
managementLIF: ontap-mgmt.example.com
31+
dataLIF: ontap-nfs.example.com
32+
svm: svm_nfs
33+
username: vsadmin
2734
storagePrefix: trident
2835
limitAggregateUsage: ""
2936
limitVolumeSize: ""
@@ -41,11 +48,10 @@ backends_to_create:
4148
tieringPolicy: none
4249
- backendName: ontap-flexgroup
4350
storageDriverName: ontap-nas-flexgroup # only 'ontap-nas' and 'ontap-nas-flexgroup' are supported when creating a backend via DeepOps
44-
managementLIF: 10.61.188.40
45-
dataLIF: 192.168.200.41
46-
svm: ai221_data
47-
username: admin
48-
password: NetApp!23
51+
managementLIF: ontap-mgmt.example.com
52+
dataLIF: ontap-nfs.example.com
53+
svm: svm_nfs
54+
username: vsadmin
4955
storagePrefix: trident
5056
limitAggregateUsage: ""
5157
limitVolumeSize: ""
@@ -64,12 +70,12 @@ backends_to_create:
6470
# Add additional backends as needed
6571

6672
# Denotes whether or not to create new StorageClasses for your NetApp storage
67-
# For more info, refer to: https://netapp-trident.readthedocs.io/en/stable-v20.04/kubernetes/operator-install.html#creating-a-storage-class
68-
create_StorageClasses: true
73+
# For more info, refer to: https://docs.netapp.com/us-en/trident/trident-use/create-stor-class.html
74+
create_StorageClasses: false
6975

7076
# List of StorageClasses to create
7177
# Note: Each item in the list should be an actual K8s StorageClass definition in yaml format
72-
# For more info on StorageClass definitions, refer to https://netapp-trident.readthedocs.io/en/stable-v20.04/kubernetes/concepts/objects.html#kubernetes-storageclass-objects.
78+
# For more info on StorageClass definitions, refer to https://docs.netapp.com/us-en/trident/trident-use/create-stor-class.html
7379
storageClasses_to_create:
7480
- apiVersion: storage.k8s.io/v1
7581
kind: StorageClass
@@ -90,30 +96,30 @@ storageClasses_to_create:
9096
# Add additional StorageClasses as needed
9197

9298
# Denotes whether or not to enable volume snapshots in your Kubernetes cluster
93-
# For more info, refer to: https://netapp-trident.readthedocs.io/en/stable-v21.01/kubernetes/operations/tasks/volumes/snapshots.html
94-
enable_volume_snapshots: true
99+
# For more info, refer to: https://docs.netapp.com/us-en/trident/trident-use/vol-snapshots.html
100+
enable_volume_snapshots: false
95101

96102
# List of volume snapshot CRDs to create
97103
volume_snapshot_CRD_manifest_URLs:
98-
- https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-3.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml
99-
- https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-3.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml
100-
- https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-3.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshots.yaml
104+
- https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.3/client/config/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml
105+
- https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.3/client/config/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml
106+
- https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.3/client/config/crd/snapshot.storage.k8s.io_volumesnapshots.yaml
101107

102108
# List of snapshot controller manifest URLs
103109
snapshot_controller_manifest_URLs:
104-
- https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-3.0/deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml
105-
- https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-3.0/deploy/kubernetes/snapshot-controller/setup-snapshot-controller.yaml
110+
- https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.3/deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml
111+
- https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.3/deploy/kubernetes/snapshot-controller/setup-snapshot-controller.yaml
106112

107113
# List of volume snapshot classes to create
108114
volume_snapshot_classes_to_create:
109-
- apiVersion: snapshot.storage.k8s.io/v1beta1
115+
- apiVersion: snapshot.storage.k8s.io/v1
110116
kind: VolumeSnapshotClass
111117
metadata:
112118
name: csi-snapclass
113119
driver: csi.trident.netapp.io
114120
deletionPolicy: Delete
115121

116-
# Denotes whether or not to copy tridenctl binary to localhost
122+
# Denotes whether or not to copy tridentctl binary to localhost
117123
copy_tridentctl_to_localhost: true
118124
# Directory that tridentctl will be copied to on localhost
119125
tridentctl_copy_to_directory: ../../ # will be copied to 'deepops/' directory

docs/deepops/proxy-k8s-cluster.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,4 @@ Before executing the scripts to continue setting up and installing services you
3737
1. Run the `scripts/deepops/proxy.sh` script to setup environment variables. Then continue running all the scripts necessary for your environment.
3838

3939
2. Rather than setup the variables for your current shell, you can run each script to use the proxy without impacting your current env. For example:
40-
`. scripts/deepops/proxy.sh && scripts/k8s/deploy_rook.sh`
40+
`. scripts/deepops/proxy.sh && DEEPOPS_ENABLE_DEPRECATED_ROOK=true scripts/k8s/deploy_rook.sh`

docs/k8s-cluster/README.md

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Instructions for deploying a GPU cluster with Kubernetes
1111
- [Persistent Storage](#persistent-storage)
1212
- [NFS Client Provisioner](#nfs-client-provisioner)
1313
- [Ceph Cluster (deprecated)](#ceph-cluster-deprecated)
14-
- [NetApp Astra Trident](#netapp-astra-trident)
14+
- [NetApp Trident](#netapp-trident)
1515
- [Monitoring](#monitoring)
1616
- [Logging](#logging)
1717
- [Centralized syslog](#centralized-syslog)
@@ -124,23 +124,26 @@ Run the following script to create an administrative user and print out the dash
124124

125125
#### NFS Client Provisioner
126126

127-
The default behavior of DeepOps is to setup an NFS server on the first `kube_control_plane` node. This temporary NFS server is used by the `nfs-client-provisioner` which is installed as the default StorageClass of a standard DeepOps deployment.
127+
The default DeepOps Kubernetes storage path is the `nfs-subdir-external-provisioner` chart, backed by an NFS export on the first `kube_control_plane` node. This is a convenience default for examples, smoke tests, and small internal clusters. It is not a highly available production storage design.
128128

129-
To use an existing nfs server server update the `k8s_nfs_server` and `k8s_nfs_export_path` variables in `config/group_vars/k8s-cluster.yml` and set the `k8s_deploy_nfs_server` to false in `config/group_vars/k8s-cluster.yml`. Additionally, the `k8s_nfs_mkdir` variable can be set to `false` if the export directory is already configured on the server.
129+
To use an existing NFS server, update the `k8s_nfs_server` and `k8s_nfs_export_path` variables in `config/group_vars/k8s-cluster.yml` and set `k8s_deploy_nfs_server` to `false`. Additionally, set `k8s_nfs_mkdir` to `false` if the export directory is already configured on the server.
130130

131131
To manually install or re-install the `nfs-client-provisioner` run:
132132

133133
```bash
134134
ansible-playbook playbooks/k8s-cluster/nfs-client-provisioner.yml
135135
```
136136

137-
To skip this installation set `k8s_nfs_client_provisioner` to `false`.
137+
To skip this installation, set `k8s_nfs_client_provisioner` to `false`.
138138

139139
#### Ceph Cluster (deprecated)
140140

141-
For a non-nfs based alternative, deploy a Ceph cluster running on Kubernetes for services that require persistent storage (such as Kubeflow):
141+
The Rook/Ceph helper is deprecated and community-supported. It predates the current Rook Helm chart layout and should not be used as a new production storage path without a site-owned Rook/Ceph design and validation plan.
142+
143+
For legacy environments that still use this helper, deploy a Ceph cluster running on Kubernetes with:
142144

143145
```bash
146+
export DEEPOPS_ENABLE_DEPRECATED_ROOK=true
144147
./scripts/k8s/deploy_rook.sh
145148
```
146149

@@ -150,17 +153,19 @@ Poll the Ceph status by running (this script will return when Ceph initializatio
150153
./scripts/k8s/deploy_rook.sh -w
151154
```
152155

153-
#### NetApp Astra Trident
156+
#### NetApp Trident
154157

155-
Deploy NetApp Astra Trident for services that require persistent storage (such as Kubeflow). Note that you must have a supported NetApp storage system/instance/service in order to use Astra Trident to provision persistent storage.
158+
The Trident role is optional and community-supported in DeepOps. Use it only when the site already has a supported NetApp storage system or service and a storage owner who can validate the backend, StorageClass, and snapshot policy against current NetApp documentation.
156159

157160
1. Set configuration parameters.
158161

159162
```bash
160163
vi config/group_vars/netapp-trident.yml
161164
```
162165

163-
2. Deploy Astra Trident using Ansible.
166+
By default, the example configuration installs Trident but does not create a backend, StorageClass, or snapshot controller. Set `create_backends`, `create_StorageClasses`, or `enable_volume_snapshots` to `true` only after replacing the example backend values with site-specific storage details and auth values.
167+
168+
2. Deploy Trident using Ansible.
164169

165170
```bash
166171
# NOTE: If SSH requires a password, add: `-k`
@@ -169,7 +174,7 @@ Deploy NetApp Astra Trident for services that require persistent storage (such a
169174
ansible-playbook -l k8s_cluster playbooks/k8s-cluster/netapp-trident.yml
170175
```
171176

172-
3. Verify that Astra Trident is running.
177+
3. Verify that Trident is running.
173178

174179
```bash
175180
./tridentctl -n deepops-trident version
@@ -181,11 +186,11 @@ Deploy NetApp Astra Trident for services that require persistent storage (such a
181186
+----------------+----------------+
182187
| SERVER VERSION | CLIENT VERSION |
183188
+----------------+----------------+
184-
| 22.01.0 | 22.01.0 |
189+
| 26.02.1 | 26.02.1 |
185190
+----------------+----------------+
186191
```
187192

188-
For more information on Astra Trident, please refer to the [official documentation](https://docs.netapp.com/us-en/trident/index.html).
193+
For more information on Trident, refer to the [official documentation](https://docs.netapp.com/us-en/trident/index.html).
189194

190195
### Monitoring
191196

docs/k8s-cluster/kubeflow.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ As part of the Kubeflow installation, the MPI Operator will also be installed. T
2929

3030
Deploy Kubernetes by following the [DeepOps Kubernetes Deployment Guide](README.md)
3131

32-
Kubeflow requires a DefaultStorageClass to be defined. By default DeepOps installs the `nfs-client-provisioner` using the [nfs-client-provisioner.yml playbook](../../playbooks/k8s-cluster/nfs-client-provisioner.yml). This playbook can re run manually. As an NFS alternative [Ceph](../../scripts/k8s/deploy_rook.sh), [Trident](../../playbooks/k8s-cluster/netapp-trident.yml) or an alternative StorageClass can be used.
32+
Kubeflow requires a DefaultStorageClass to be defined. By default DeepOps installs the `nfs-client-provisioner` using the [nfs-client-provisioner.yml playbook](../../playbooks/k8s-cluster/nfs-client-provisioner.yml). This playbook can be rerun manually. For production or HA storage, use a site-owned StorageClass. The legacy [Ceph](../../scripts/k8s/deploy_rook.sh) helper is deprecated, and [Trident](../../playbooks/k8s-cluster/netapp-trident.yml) is optional and community-supported unless a site storage owner validates it.
3333

3434
Deploy Kubeflow:
3535

@@ -125,6 +125,6 @@ To correct this issue:
125125

126126
1. Uninstall Rook/Ceph: `./scripts/k8s/deploy_rook.sh -d`
127127
2. Uninstall Kubeflow: `./scripts/k8s/deploy_kubeflow.sh -d`
128-
3. Re-install Rook/ceph: `./scripts/k8s/deploy_rook.sh`
128+
3. Re-install Rook/Ceph: `DEEPOPS_ENABLE_DEPRECATED_ROOK=true ./scripts/k8s/deploy_rook.sh`
129129
4. Poll for Ceph to initialize (wait for this script to exit): `./scripts/k8s/deploy_rook.sh -w`
130130
5. Re-install Kubeflow: `./scripts/k8s/deploy_kubeflow.sh`

playbooks/k8s-cluster/nfs-client-provisioner.yml

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
---
22
# This playbook is used to setup the nfs-client-provisioner
33
# If the cluster already has an nfs server setup run with --skip-tags="nfs_server,nfs_mkdir"
4-
# Otherwhise an NFS server will be configured on kube_control_plane[0]
5-
# After settting up an NFS server, nfs software is installed on all nodes
6-
# Lastly, the nfs-client-provisioner is helm installed using the role
4+
# Otherwise an NFS server will be configured on kube_control_plane[0]
5+
# After setting up an NFS server, NFS software is installed on all nodes.
6+
# Lastly, the nfs-client-provisioner chart is installed using the role.
77
#
8-
# The default NFS configuration of this playbook is not meant for production systems
9-
# For production deployments please configur NFS with storage-partner guidance
8+
# The default NFS configuration of this playbook is not meant for production systems.
9+
# For production deployments, configure storage with storage-partner guidance.
1010
#
11-
# Install the required NFS software on all nodes and then helm install the nfs-client
11+
# Install the required NFS software on all nodes and then helm install the NFS client.
1212
- hosts: kube_control_plane[0]
1313
become: yes
1414
tasks:
@@ -17,13 +17,17 @@
1717
path: "{{ k8s_nfs_export_path }}"
1818
state: directory
1919
mode: "u=rwx,g=rwx,o=rwx"
20-
when: k8s_nfs_mkdir and k8s_deploy_nfs_server
20+
when: k8s_nfs_mkdir and k8s_deploy_nfs_server
21+
tags:
22+
- nfs_mkdir
2123
- name: Deploy NFS server master
2224
include_role:
2325
name: nfs
2426
vars:
2527
nfs_is_server: yes
2628
when: k8s_deploy_nfs_server
29+
tags:
30+
- nfs_server
2731

2832
- hosts: "k8s_cluster"
2933
become: yes

roles/netapp-trident/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ netapp-trident
33

44
Ansible role that can be used to deploy NetApp Trident within a Kubernetes cluster.
55

6+
This role is optional and community-supported in DeepOps. Use it only when a site storage owner can validate the NetApp backend, StorageClass, and snapshot policy against current NetApp documentation.
7+
68
Requirements
79
------------
810

@@ -15,7 +17,7 @@ Requirements
1517
Role Variables
1618
--------------
1719

18-
See defaults/main.yml, vars/main.yml
20+
See defaults/main.yml and `config.example/group_vars/netapp-trident.yml`.
1921

2022
Dependencies
2123
------------

0 commit comments

Comments
 (0)