8
8
"fmt"
9
9
10
10
"github.com/spf13/pflag"
11
- corev1 "k8s.io/api/core/v1"
12
11
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
13
12
"k8s.io/apimachinery/pkg/runtime"
14
13
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
@@ -24,16 +23,32 @@ import (
24
23
)
25
24
26
25
const (
27
- defaultHelmRepositoryURL = "https://nutanix.github.io/helm/"
28
- defaultStorageHelmChartVersion = "v2.6.6"
29
- defaultStorageHelmChartName = "nutanix-csi-storage"
30
- defaultStorageHelmReleaseNameTemplate = "nutanix-csi-storage-%s"
31
-
32
- defaultSnapshotHelmChartVersion = "v6.3.2"
33
- defaultSnapshotHelmChartName = "nutanix-csi-snapshot"
34
- defaultSnapshotHelmReleaseNameTemplate = "nutanix-csi-snapshot-%s"
26
+ defaultHelmRepositoryURL = "https://nutanix.github.io/helm/"
27
+ defaultStorageHelmChartVersion = "v2.6.6"
28
+ defaultStorageHelmChartName = "nutanix-csi-storage"
29
+ defaultStorageHelmReleaseName = "nutanix-csi-storage"
30
+ defaultStorageHelmReleaseNamespace = "ntnx-system"
31
+
32
+ defaultSnapshotHelmChartVersion = "v6.3.2"
33
+ defaultSnapshotHelmChartName = "nutanix-csi-snapshot"
34
+ defaultSnapshotHelmReleaseName = "nutanix-csi-snapshot"
35
+ defaultSnapshotHelmReleaseNamespace = "ntnx-system"
36
+
37
+ //nolint:gosec // Does not contain hard coded credentials.
38
+ defaultCredentialsSecretName = "nutanix-csi-credentials"
35
39
)
36
40
41
+ var defaultStorageClassParameters = map [string ]string {
42
+ "storageType" : "NutanixVolumes" ,
43
+ "csi.storage.k8s.io/fstype" : "xfs" ,
44
+ "csi.storage.k8s.io/provisioner-secret-name" : defaultCredentialsSecretName ,
45
+ "csi.storage.k8s.io/provisioner-secret-namespace" : defaultStorageHelmReleaseNamespace ,
46
+ "csi.storage.k8s.io/node-publish-secret-name" : defaultCredentialsSecretName ,
47
+ "csi.storage.k8s.io/node-publish-secret-namespace" : defaultStorageHelmReleaseNamespace ,
48
+ "csi.storage.k8s.io/controller-expand-secret-name" : defaultCredentialsSecretName ,
49
+ "csi.storage.k8s.io/controller-expand-secret-namespace" : defaultStorageHelmReleaseNamespace ,
50
+ }
51
+
37
52
type NutanixCSIConfig struct {
38
53
* options.GlobalOptions
39
54
defaultValuesTemplateConfigMapName string
@@ -80,42 +95,38 @@ func (n *NutanixCSI) Apply(
80
95
default :
81
96
return fmt .Errorf ("stategy %s not implemented" , strategy )
82
97
}
98
+
83
99
if provider .Credentials != nil {
84
- sec := & corev1.Secret {
85
- TypeMeta : metav1.TypeMeta {
86
- APIVersion : corev1 .SchemeGroupVersion .String (),
87
- Kind : "Secret" ,
88
- },
89
- ObjectMeta : metav1.ObjectMeta {
90
- Name : provider .Credentials .Name ,
91
- Namespace : req .Cluster .Namespace ,
92
- },
100
+ key := ctrlclient.ObjectKey {
101
+ Name : defaultCredentialsSecretName ,
102
+ Namespace : defaultStorageHelmReleaseNamespace ,
93
103
}
94
- err := n . client . Get (
104
+ err := lifecycleutils . CopySecretToRemoteCluster (
95
105
ctx ,
96
- ctrlclient .ObjectKeyFromObject (sec ),
97
- sec ,
98
- )
99
- if err != nil {
100
- return err
101
- }
102
- err = lifecycleutils .EnsureCRSForClusterFromObjects (
103
- ctx ,
104
- fmt .Sprintf ("nutanix-csi-credentials-crs-%s" , req .Cluster .Name ),
105
106
n .client ,
107
+ provider .Credentials .Name ,
108
+ key ,
106
109
& req .Cluster ,
107
- sec ,
108
110
)
109
111
if err != nil {
110
- return err
112
+ return fmt .Errorf (
113
+ "error creating credentials Secret for the Nutanix CSI driver: %w" ,
114
+ err ,
115
+ )
111
116
}
112
117
}
113
- return n .createStorageClasses (
118
+
119
+ err := n .createStorageClasses (
114
120
ctx ,
115
121
provider .StorageClassConfig ,
116
122
& req .Cluster ,
117
123
defaultStorageConfig ,
118
124
)
125
+ if err != nil {
126
+ return fmt .Errorf ("error creating StorageClasses for the Nutanix CSI driver: %w" , err )
127
+ }
128
+
129
+ return nil
119
130
}
120
131
121
132
func (n * NutanixCSI ) handleHelmAddonApply (
@@ -149,8 +160,8 @@ func (n *NutanixCSI) handleHelmAddonApply(
149
160
ClusterSelector : metav1.LabelSelector {
150
161
MatchLabels : map [string ]string {clusterv1 .ClusterNameLabel : req .Cluster .Name },
151
162
},
152
- ReleaseNamespace : req . Cluster . Namespace ,
153
- ReleaseName : fmt . Sprintf ( defaultStorageHelmReleaseNameTemplate , req . Cluster . Name ) ,
163
+ ReleaseNamespace : defaultStorageHelmReleaseNamespace ,
164
+ ReleaseName : defaultStorageHelmReleaseName ,
154
165
Version : defaultStorageHelmChartVersion ,
155
166
ValuesTemplate : values ,
156
167
},
@@ -174,16 +185,16 @@ func (n *NutanixCSI) handleHelmAddonApply(
174
185
},
175
186
ObjectMeta : metav1.ObjectMeta {
176
187
Namespace : req .Cluster .Namespace ,
177
- Name : "nutanix-csi-snapshot" + req .Cluster .Name ,
188
+ Name : "nutanix-csi-snapshot- " + req .Cluster .Name ,
178
189
},
179
190
Spec : caaphv1.HelmChartProxySpec {
180
191
RepoURL : defaultHelmRepositoryURL ,
181
192
ChartName : defaultSnapshotHelmChartName ,
182
193
ClusterSelector : metav1.LabelSelector {
183
194
MatchLabels : map [string ]string {clusterv1 .ClusterNameLabel : req .Cluster .Name },
184
195
},
185
- ReleaseNamespace : req . Cluster . Namespace ,
186
- ReleaseName : fmt . Sprintf ( defaultSnapshotHelmReleaseNameTemplate , req . Cluster . Name ) ,
196
+ ReleaseNamespace : defaultSnapshotHelmReleaseNamespace ,
197
+ ReleaseName : defaultSnapshotHelmReleaseName ,
187
198
Version : defaultSnapshotHelmChartVersion ,
188
199
},
189
200
}
@@ -205,20 +216,21 @@ func (n *NutanixCSI) handleHelmAddonApply(
205
216
return nil
206
217
}
207
218
208
- func (n * NutanixCSI ) createStorageClasses (ctx context.Context ,
219
+ func (n * NutanixCSI ) createStorageClasses (
220
+ ctx context.Context ,
209
221
configs []v1alpha1.StorageClassConfig ,
210
222
cluster * clusterv1.Cluster ,
211
223
defaultStorageConfig * v1alpha1.DefaultStorage ,
212
224
) error {
213
225
allStorageClasses := make ([]runtime.Object , 0 , len (configs ))
214
- for _ , c := range configs {
215
- setAsDefault := c .Name == defaultStorageConfig .StorageClassConfigName &&
226
+ for _ , config := range configs {
227
+ setAsDefault := config .Name == defaultStorageConfig .StorageClassConfigName &&
216
228
v1alpha1 .CSIProviderNutanix == defaultStorageConfig .ProviderName
217
229
allStorageClasses = append (allStorageClasses , lifecycleutils .CreateStorageClass (
218
- c ,
219
- n .config .GlobalOptions .DefaultsNamespace (),
230
+ config ,
220
231
v1alpha1 .NutanixProvisioner ,
221
232
setAsDefault ,
233
+ defaultStorageClassParameters ,
222
234
))
223
235
}
224
236
cm , err := lifecycleutils .CreateConfigMapForCRS (
0 commit comments