Skip to content

Commit 3788a5f

Browse files
committed
Apply review feedback
1 parent f95133a commit 3788a5f

13 files changed

Lines changed: 209 additions & 58 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
/jsonnetfile.lock.json
88
/crds
99
/compiled
10+
/helm_values
1011

1112
# Antora
1213
/_archive

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,4 +81,4 @@ $(test_instances):
8181

8282
.PHONY: clean
8383
clean: ## Clean the project
84-
rm -rf .cache compiled dependencies vendor helmcharts jsonnetfile*.json || true
84+
rm -rf .cache compiled dependencies vendor helmcharts helm_values jsonnetfile*.json || true

class/cloud-provider-openstack.yml

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,36 @@
11
parameters:
2+
_os_ccm_chart:
3+
"True":
4+
input_paths:
5+
- ${_base_directory}/helmcharts/openstack-cloud-controller-manager/${cloud_provider_openstack:charts:openstack-cloud-controller-manager:version}
6+
input_type: helm
7+
helm_params:
8+
name: openstack-ccm
9+
namespace: ${cloud_provider_openstack:namespace}
10+
helm_values_files:
11+
- ${_base_directory}/helm_values/ccm-values.yaml
12+
output_path: cloud-provider-openstack/10_ccm_helm_chart
13+
"False":
14+
input_type: jsonnet
15+
input_paths: []
16+
output_path: cloud-provider-openstack/
17+
18+
_os_csi_chart:
19+
"True":
20+
input_paths:
21+
- ${_base_directory}/helmcharts/openstack-cinder-csi/${cloud_provider_openstack:charts:openstack-cinder-csi:version}
22+
input_type: helm
23+
helm_params:
24+
name: cinder-csi
25+
namespace: ${cloud_provider_openstack:namespace}
26+
helm_values_files:
27+
- ${_base_directory}/helm_values/csi-values.yaml
28+
output_path: cloud-provider-openstack/20_csi_helm_chart
29+
"False":
30+
input_type: jsonnet
31+
input_paths: []
32+
output_path: cloud-provider-openstack/
33+
234
kapitan:
335
dependencies:
436
- type: helm
@@ -17,21 +49,11 @@ parameters:
1749
input_type: jsonnet
1850
output_path: .
1951
- input_paths:
20-
- ${_base_directory}/helmcharts/openstack-cloud-controller-manager/${cloud_provider_openstack:charts:openstack-cloud-controller-manager:version}
21-
input_type: helm
22-
helm_values: ${cloud_provider_openstack:ccm:helm_values}
23-
helm_params:
24-
name: openstack-ccm
25-
namespace: ${cloud_provider_openstack:namespace}
26-
output_path: cloud-provider-openstack/10_ccm_helm_chart
27-
- input_paths:
28-
- ${_base_directory}/helmcharts/openstack-cinder-csi/${cloud_provider_openstack:charts:openstack-cinder-csi:version}
29-
input_type: helm
30-
helm_values: ${cloud_provider_openstack:csi:helm_values}
31-
helm_params:
32-
name: cinder-csi
33-
namespace: ${cloud_provider_openstack:namespace}
34-
output_path: cloud-provider-openstack/20_csi_helm_chart
52+
- ${_base_directory}/component/render-helm-values.jsonnet
53+
input_type: jsonnet
54+
output_path: ${_base_directory}/helm_values/
55+
- ${_os_ccm_chart:${cloud_provider_openstack:ccm:enabled}}
56+
- ${_os_csi_chart:${cloud_provider_openstack:csi:enabled}}
3557
- input_paths:
3658
- ${_base_directory}/component/main.jsonnet
3759
input_type: jsonnet

class/defaults.yml

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ parameters:
33
=_metadata:
44
multi_tenant: true
55
namespace: syn-cloud-provider-openstack
6+
namespace_labels: {}
7+
namespace_annotations: {}
68

79
charts:
810
openstack-cloud-controller-manager:
@@ -34,6 +36,7 @@ parameters:
3436
route: {}
3537

3638
ccm:
39+
enabled: true
3740
cluster_name: ${cluster:name}
3841
service_account_name: cloud-controller-manager
3942
resources:
@@ -48,10 +51,10 @@ parameters:
4851
node_selector:
4952
node-role.kubernetes.io/control-plane: ""
5053
tolerations:
51-
- key: node.cloudprovider.kubernetes.io/uninitialized
54+
node.cloudprovider.kubernetes.io/uninitialized:
5255
value: "true"
5356
effect: NoSchedule
54-
- key: node-role.kubernetes.io/control-plane
57+
node-role.kubernetes.io/control-plane:
5558
effect: NoSchedule
5659
service_monitor:
5760
enabled: false
@@ -70,24 +73,31 @@ parameters:
7073
repository: ${cloud_provider_openstack:images:openstack_cloud_controller_manager:registry}/${cloud_provider_openstack:images:openstack_cloud_controller_manager:repository}
7174
tag: ${cloud_provider_openstack:images:openstack_cloud_controller_manager:tag}
7275
resources: ${cloud_provider_openstack:ccm:resources}
73-
enabledControllers: ${cloud_provider_openstack:ccm:enabled_controllers}
7476
logVerbosityLevel: ${cloud_provider_openstack:ccm:log_verbosity_level}
7577
nodeSelector: ${cloud_provider_openstack:ccm:node_selector}
76-
tolerations: ${cloud_provider_openstack:ccm:tolerations}
7778
serviceMonitor: ${cloud_provider_openstack:ccm:service_monitor}
7879
extraVolumes: ${cloud_provider_openstack:ccm:extra_volumes}
7980
extraVolumeMounts: ${cloud_provider_openstack:ccm:extra_volume_mounts}
8081

8182
csi:
83+
enabled: true
8284
cluster_id: ${cluster:name}
8385
fs_type: ext4
8486
volume_binding_mode: WaitForFirstConsumer
8587
log_verbosity_level: 2
8688
pod_monitor:
8789
enabled: false
8890
additionalLabels: {}
89-
node_driver_daemonset_tolerations:
90-
- operator: Exists
91+
controller_plugin:
92+
node_selector:
93+
node-role.kubernetes.io/control-plane: ""
94+
tolerations:
95+
node-role.kubernetes.io/control-plane:
96+
effect: NoSchedule
97+
node_plugin:
98+
tolerations:
99+
"":
100+
operator: Exists
91101
resources:
92102
controller:
93103
csi-provisioner:
@@ -155,12 +165,4 @@ parameters:
155165
httpEndpoint:
156166
enabled: ${cloud_provider_openstack:csi:pod_monitor:enabled}
157167
port: 8080
158-
controllerPlugin:
159-
nodeSelector:
160-
node-role.kubernetes.io/control-plane: ""
161-
tolerations:
162-
- key: node-role.kubernetes.io/control-plane
163-
effect: NoSchedule
164-
nodePlugin:
165-
tolerations: ${cloud_provider_openstack:csi:node_driver_daemonset_tolerations}
166168
podMonitor: ${cloud_provider_openstack:csi:pod_monitor}

component/main.jsonnet

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ local renderValue(k, v) =
99
if v == null then []
1010
else if std.isArray(v) then
1111
[ '%s=%s' % [ k, item ] for item in v if item != null ]
12-
else if std.isBoolean(v) then
13-
[ '%s=%s' % [ k, if v then 'true' else 'false' ] ]
12+
else if std.isObject(v) then
13+
error 'cloud_conf value for key "%s" must be scalar or array, got object' % k
1414
else
15-
[ '%s=%s' % [ k, std.toString(v) ] ];
15+
[ '%s=%s' % [ k, v ] ];
1616

1717
local renderSection(name, dict) =
1818
local lines = std.flattenArrays(
@@ -74,17 +74,32 @@ local storageClasses = [
7474

7575
local volumeSnapshotClasses = [
7676
local vsc = params.csi.volume_snapshot_classes[name];
77+
local vscParams = std.get(vsc, 'parameters', {});
7778
kube._Object('snapshot.storage.k8s.io/v1', 'VolumeSnapshotClass', name) {
7879
driver: 'cinder.csi.openstack.org',
7980
deletionPolicy: vsc.deletion_policy,
80-
[if std.length(vsc.parameters) > 0 then 'parameters']: vsc.parameters,
81+
[if std.length(vscParams) > 0 then 'parameters']: vscParams,
8182
}
8283
for name in std.objectFields(params.csi.volume_snapshot_classes)
8384
];
8485

86+
local namespace = kube.Namespace(params.namespace) {
87+
metadata+: {
88+
labels+: {
89+
[k]: params.namespace_labels[k]
90+
for k in std.objectFields(params.namespace_labels)
91+
if params.namespace_labels[k] != null
92+
},
93+
annotations+: {
94+
[k]: params.namespace_annotations[k]
95+
for k in std.objectFields(params.namespace_annotations)
96+
if params.namespace_annotations[k] != null
97+
},
98+
},
99+
};
100+
85101
{
86-
[if params.namespace != 'kube-system' then '00_namespace']:
87-
kube.Namespace(params.namespace),
102+
[if params.namespace != 'kube-system' then '00_namespace']: namespace,
88103
'01_secret': secret,
89104
[if std.length(params.csi.storage_classes) > 0 then '10_storageclasses']:
90105
storageClasses,
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
local com = import 'lib/commodore.libjsonnet';
2+
local kap = import 'lib/kapitan.libjsonnet';
3+
4+
local inv = kap.inventory();
5+
local params = inv.parameters.cloud_provider_openstack;
6+
7+
local renderTolerations(tol) =
8+
[
9+
std.prune({ key: k } + tol[k])
10+
for k in std.objectFields(tol)
11+
if tol[k] != null
12+
];
13+
14+
local ccm_values = params.ccm.helm_values {
15+
enabledControllers: com.renderArray(params.ccm.enabled_controllers),
16+
tolerations: renderTolerations(params.ccm.tolerations),
17+
};
18+
19+
local csi_values = params.csi.helm_values {
20+
csi+: {
21+
plugin+: {
22+
controllerPlugin: {
23+
nodeSelector: std.prune(params.csi.controller_plugin.node_selector),
24+
tolerations: renderTolerations(params.csi.controller_plugin.tolerations),
25+
},
26+
nodePlugin: {
27+
tolerations: renderTolerations(params.csi.node_plugin.tolerations),
28+
},
29+
},
30+
},
31+
};
32+
33+
{
34+
'ccm-values': ccm_values,
35+
'csi-values': csi_values,
36+
}

docs/modules/ROOT/pages/index.adoc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
= cloud-provider-openstack
1+
= Cloud Provider OpenStack
22

33
cloud-provider-openstack is a Commodore component to manage the https://github.com/kubernetes/cloud-provider-openstack[OpenStack Cloud Controller Manager] (CCM) and https://github.com/kubernetes/cloud-provider-openstack[Cinder CSI driver].
44

5-
Both sub-components are enabled by default and share a single `cloud.conf` Secret.
5+
The CCM and CSI driver are deployed into the same namespace and share a single `cloud.conf` Secret.
6+
Each sub-component is toggleable via the `ccm.enabled` and `csi.enabled` parameters.
67
The CCM handles node initialization, node lifecycle, LoadBalancer Services (via Octavia), and optionally pod routes.
78
The CSI driver provides persistent block storage using OpenStack Cinder volumes, with configurable StorageClasses and VolumeSnapshotClasses.
89

0 commit comments

Comments
 (0)