Browse Source

Implement topology support for Cinder CSI (#5667)

* make cinder csi topology aware

* change feature description do better reflect whats being done

* remove sameas true since it isn't required
pull/5575/head
Hugo Blom 4 years ago
committed by GitHub
parent
commit
171d2ce59c
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 19 additions and 0 deletions
  1. 3
      roles/kubernetes-apps/csi_driver/cinder/templates/cinder-csi-controllerplugin.yml.j2
  2. 9
      roles/kubernetes-apps/persistent_volumes/cinder-csi/templates/cinder-csi-storage-class.yml.j2
  3. 7
      roles/kubespray-defaults/defaults/main.yaml

3
roles/kubernetes-apps/csi_driver/cinder/templates/cinder-csi-controllerplugin.yml.j2

@ -35,6 +35,9 @@ spec:
image: {{ cinder_csi_provisioner_image_repo }}:{{ cinder_csi_provisioner_image_tag }} image: {{ cinder_csi_provisioner_image_repo }}:{{ cinder_csi_provisioner_image_tag }}
args: args:
- "--csi-address=$(ADDRESS)" - "--csi-address=$(ADDRESS)"
{% if cinder_topology is defined and cinder_topology %}
- --feature-gates=Topology=true
{% endif %}
env: env:
- name: ADDRESS - name: ADDRESS
value: /var/lib/csi/sockets/pluginproxy/csi.sock value: /var/lib/csi/sockets/pluginproxy/csi.sock

9
roles/kubernetes-apps/persistent_volumes/cinder-csi/templates/cinder-csi-storage-class.yml.j2

@ -11,4 +11,13 @@ parameters:
{% for key, value in (class.parameters | default({})).items() %} {% for key, value in (class.parameters | default({})).items() %}
"{{ key }}": "{{ value }}" "{{ key }}": "{{ value }}"
{% endfor %} {% endfor %}
{% if cinder_topology is defined and cinder_topology is sameas true %}
allowedTopologies:
- matchLabelExpressions:
- key: topology.cinder.csi.openstack.org/zone
values:
{% for zone in cinder_topology_zones %}
- "{{ zone }}"
{% endfor %}
{% endif %}
{% endfor %} {% endfor %}

7
roles/kubespray-defaults/defaults/main.yaml

@ -308,6 +308,13 @@ expand_persistent_volumes: false
## When OpenStack is used, Cinder version can be explicitly specified if autodetection fails (Fixed in 1.9: https://github.com/kubernetes/kubernetes/issues/50461) ## When OpenStack is used, Cinder version can be explicitly specified if autodetection fails (Fixed in 1.9: https://github.com/kubernetes/kubernetes/issues/50461)
# openstack_blockstorage_version: "v1/v2/auto (default)" # openstack_blockstorage_version: "v1/v2/auto (default)"
openstack_blockstorage_ignore_volume_az: "{{ volume_cross_zone_attachment | default('false') }}" openstack_blockstorage_ignore_volume_az: "{{ volume_cross_zone_attachment | default('false') }}"
# Cinder CSI topology, when false volumes can be cross-mounted between availability zones
# cinder_topology: false
# Set Cinder topology zones (can be multiple zones, default not set)
# cinder_topology_zones:
# - nova
## When OpenStack is used, if LBaaSv2 is available you can enable it with the following 2 variables. ## When OpenStack is used, if LBaaSv2 is available you can enable it with the following 2 variables.
openstack_lbaas_enabled: false openstack_lbaas_enabled: false
# openstack_lbaas_subnet_id: "Neutron subnet ID (not network ID) to create LBaaS VIP" # openstack_lbaas_subnet_id: "Neutron subnet ID (not network ID) to create LBaaS VIP"

Loading…
Cancel
Save