diff --git a/roles/kubernetes-apps/external_cloud_controller/openstack/defaults/main.yml b/roles/kubernetes-apps/external_cloud_controller/openstack/defaults/main.yml
index ace49382533af05a7bc896f373a150b731ff6bb6..2533385e69f7b0c9f4f57f0f5cc184a2e9524c47 100644
--- a/roles/kubernetes-apps/external_cloud_controller/openstack/defaults/main.yml
+++ b/roles/kubernetes-apps/external_cloud_controller/openstack/defaults/main.yml
@@ -12,4 +12,10 @@ external_openstack_domain_name: "{{ lookup('env','OS_USER_DOMAIN_NAME') }}"
 external_openstack_domain_id: "{{ lookup('env','OS_USER_DOMAIN_ID') }}"
 external_openstack_cacert: "{{ lookup('env','OS_CACERT') }}"
 
+## A dictionary of extra arguments to add to the openstack cloud controller manager daemonset
+## Format:
+##  external_openstack_cloud_controller_extra_args:
+##    arg1: "value1"
+##    arg2: "value2"
+external_openstack_cloud_controller_extra_args: {}
 external_openstack_cloud_controller_image_tag: "v1.18.2"
diff --git a/roles/kubernetes-apps/external_cloud_controller/openstack/templates/external-openstack-cloud-controller-manager-ds.yml.j2 b/roles/kubernetes-apps/external_cloud_controller/openstack/templates/external-openstack-cloud-controller-manager-ds.yml.j2
index b30222dab4b58e3c7c36dbfaf15d9bc7c6c48e62..db33fcd9e375eccd54bf8460e7fe7d5525fba610 100644
--- a/roles/kubernetes-apps/external_cloud_controller/openstack/templates/external-openstack-cloud-controller-manager-ds.yml.j2
+++ b/roles/kubernetes-apps/external_cloud_controller/openstack/templates/external-openstack-cloud-controller-manager-ds.yml.j2
@@ -44,6 +44,9 @@ spec:
             - --cloud-provider=openstack
             - --use-service-account-credentials=true
             - --address=127.0.0.1
+{% for key, value in external_openstack_cloud_controller_extra_args.items() %}
+            - "{{ '--' + key + '=' + value }}"
+{% endfor %}
           volumeMounts:
             - mountPath: /etc/kubernetes/pki
               name: k8s-certs
diff --git a/roles/kubernetes-apps/external_cloud_controller/vsphere/defaults/main.yml b/roles/kubernetes-apps/external_cloud_controller/vsphere/defaults/main.yml
index c4422f31bd5dc6d536185a3c0772cbee59262919..4691e324a13aa1ef1eb5207174cea19f85df5b22 100644
--- a/roles/kubernetes-apps/external_cloud_controller/vsphere/defaults/main.yml
+++ b/roles/kubernetes-apps/external_cloud_controller/vsphere/defaults/main.yml
@@ -2,4 +2,10 @@
 external_vsphere_vcenter_port: "443"
 external_vsphere_insecure: "true"
 
+## A dictionary of extra arguments to add to the vsphere cloud controller manager daemonset
+## Format:
+##  external_vsphere_cloud_controller_extra_args:
+##    arg1: "value1"
+##    arg2: "value2"
+external_vsphere_cloud_controller_extra_args: {}
 external_vsphere_cloud_controller_image_tag: "latest"
diff --git a/roles/kubernetes-apps/external_cloud_controller/vsphere/templates/external-vsphere-cloud-controller-manager-ds.yml.j2 b/roles/kubernetes-apps/external_cloud_controller/vsphere/templates/external-vsphere-cloud-controller-manager-ds.yml.j2
index 81120cec31db9f46d685202a9e3af9587c787bfe..8bd4e641015ad1364a790b8dd67f23a8b8e6bd94 100644
--- a/roles/kubernetes-apps/external_cloud_controller/vsphere/templates/external-vsphere-cloud-controller-manager-ds.yml.j2
+++ b/roles/kubernetes-apps/external_cloud_controller/vsphere/templates/external-vsphere-cloud-controller-manager-ds.yml.j2
@@ -41,6 +41,9 @@ spec:
             - --v=2
             - --cloud-provider=vsphere
             - --cloud-config=/etc/cloud/vsphere.conf
+{% for key, value in external_vsphere_cloud_controller_extra_args.items() %}
+            - "{{ '--' + key + '=' + value }}"
+{% endfor %}
           volumeMounts:
             - mountPath: /etc/cloud
               name: vsphere-config-volume