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,14 +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"
39
+ )
40
+
41
+ var (
42
+ defaultStorageClassParameters = map [string ]string {
43
+ "storageType" : "NutanixVolumes" ,
44
+ "csi.storage.k8s.io/fstype" : "xfs" ,
45
+ "csi.storage.k8s.io/provisioner-secret-name" : defaultCredentialsSecretName ,
46
+ "csi.storage.k8s.io/provisioner-secret-namespace" : defaultStorageHelmReleaseNamespace ,
47
+ "csi.storage.k8s.io/node-publish-secret-name" : defaultCredentialsSecretName ,
48
+ "csi.storage.k8s.io/node-publish-secret-namespace" : defaultStorageHelmReleaseNamespace ,
49
+ "csi.storage.k8s.io/controller-expand-secret-name" : defaultCredentialsSecretName ,
50
+ "csi.storage.k8s.io/controller-expand-secret-namespace" : defaultStorageHelmReleaseNamespace ,
51
+ }
35
52
)
36
53
37
54
type NutanixCSIConfig struct {
@@ -80,42 +97,35 @@ func (n *NutanixCSI) Apply(
80
97
default :
81
98
return fmt .Errorf ("stategy %s not implemented" , strategy )
82
99
}
100
+
83
101
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
- Namespace : provider .Credentials .Name ,
91
- Name : provider .Credentials .Namespace ,
92
- },
93
- }
94
- err := n .client .Get (
95
- ctx ,
96
- ctrlclient .ObjectKeyFromObject (sec ),
97
- sec ,
98
- )
99
- if err != nil {
100
- return err
102
+ key := ctrlclient.ObjectKey {
103
+ Name : defaultCredentialsSecretName ,
104
+ Namespace : defaultStorageHelmReleaseNamespace ,
101
105
}
102
- err = lifecycleutils .EnsureCRSForClusterFromObjects (
106
+ err : = lifecycleutils .CopySecretToRemoteCluster (
103
107
ctx ,
104
- fmt .Sprintf ("nutanix-csi-credentials-crs-%s" , req .Cluster .Name ),
105
108
n .client ,
109
+ provider .Credentials .Name ,
110
+ key ,
106
111
& req .Cluster ,
107
- sec ,
108
112
)
109
113
if err != nil {
110
- return err
114
+ return fmt . Errorf ( "error creating credentials Secret for the Nutanix CSI driver: %w" , err )
111
115
}
112
116
}
113
- return n .createStorageClasses (
117
+
118
+ err := n .createStorageClasses (
114
119
ctx ,
115
120
provider .StorageClassConfig ,
116
121
& req .Cluster ,
117
122
defaultStorageConfig ,
118
123
)
124
+ if err != nil {
125
+ return fmt .Errorf ("error creating StorageClasses for the Nutanix CSI driver: %w" , err )
126
+ }
127
+
128
+ return nil
119
129
}
120
130
121
131
func (n * NutanixCSI ) handleHelmAddonApply (
@@ -149,8 +159,8 @@ func (n *NutanixCSI) handleHelmAddonApply(
149
159
ClusterSelector : metav1.LabelSelector {
150
160
MatchLabels : map [string ]string {clusterv1 .ClusterNameLabel : req .Cluster .Name },
151
161
},
152
- ReleaseNamespace : req . Cluster . Namespace ,
153
- ReleaseName : fmt . Sprintf ( defaultStorageHelmReleaseNameTemplate , req . Cluster . Name ) ,
162
+ ReleaseNamespace : defaultStorageHelmReleaseNamespace ,
163
+ ReleaseName : defaultStorageHelmReleaseName ,
154
164
Version : defaultStorageHelmChartVersion ,
155
165
ValuesTemplate : values ,
156
166
},
@@ -174,16 +184,16 @@ func (n *NutanixCSI) handleHelmAddonApply(
174
184
},
175
185
ObjectMeta : metav1.ObjectMeta {
176
186
Namespace : req .Cluster .Namespace ,
177
- Name : "nutanix-csi-snapshot" + req .Cluster .Name ,
187
+ Name : "nutanix-csi-snapshot- " + req .Cluster .Name ,
178
188
},
179
189
Spec : caaphv1.HelmChartProxySpec {
180
190
RepoURL : defaultHelmRepositoryURL ,
181
191
ChartName : defaultSnapshotHelmChartName ,
182
192
ClusterSelector : metav1.LabelSelector {
183
193
MatchLabels : map [string ]string {clusterv1 .ClusterNameLabel : req .Cluster .Name },
184
194
},
185
- ReleaseNamespace : req . Cluster . Namespace ,
186
- ReleaseName : fmt . Sprintf ( defaultSnapshotHelmReleaseNameTemplate , req . Cluster . Name ) ,
195
+ ReleaseNamespace : defaultSnapshotHelmReleaseNamespace ,
196
+ ReleaseName : defaultSnapshotHelmReleaseName ,
187
197
Version : defaultSnapshotHelmChartVersion ,
188
198
},
189
199
}
@@ -205,20 +215,21 @@ func (n *NutanixCSI) handleHelmAddonApply(
205
215
return nil
206
216
}
207
217
208
- func (n * NutanixCSI ) createStorageClasses (ctx context.Context ,
218
+ func (n * NutanixCSI ) createStorageClasses (
219
+ ctx context.Context ,
209
220
configs []v1alpha1.StorageClassConfig ,
210
221
cluster * clusterv1.Cluster ,
211
222
defaultStorageConfig * v1alpha1.DefaultStorage ,
212
223
) error {
213
224
allStorageClasses := make ([]runtime.Object , 0 , len (configs ))
214
- for _ , c := range configs {
215
- setAsDefault := c .Name == defaultStorageConfig .StorageClassConfigName &&
225
+ for _ , config := range configs {
226
+ setAsDefault := config .Name == defaultStorageConfig .StorageClassConfigName &&
216
227
v1alpha1 .CSIProviderNutanix == defaultStorageConfig .ProviderName
217
228
allStorageClasses = append (allStorageClasses , lifecycleutils .CreateStorageClass (
218
- c ,
219
- n .config .GlobalOptions .DefaultsNamespace (),
229
+ config ,
220
230
v1alpha1 .NutanixProvisioner ,
221
231
setAsDefault ,
232
+ defaultStorageClassParameters ,
222
233
))
223
234
}
224
235
cm , err := lifecycleutils .CreateConfigMapForCRS (
0 commit comments