diff --git a/roles/network_plugin/calico/defaults/main.yml b/roles/network_plugin/calico/defaults/main.yml
index c6e1813caf6a072b209e887ec49b4556ef02b454..b3c5f809cf388ee40560ca9122c361e85ee88d49 100644
--- a/roles/network_plugin/calico/defaults/main.yml
+++ b/roles/network_plugin/calico/defaults/main.yml
@@ -166,3 +166,6 @@ calico_apiserver_enabled: false
 
 # Calico feature detect override
 calico_feature_detect_override: ""
+
+# Calico kubeconfig wait timeout in seconds
+calico_kubeconfig_wait_timeout: 300
diff --git a/roles/network_plugin/calico/tasks/install.yml b/roles/network_plugin/calico/tasks/install.yml
index 158b62a9aeddebaee9c442eeb0b69c2ca40f9fcc..6a356719e21071e2d4eca26794007b60ebabab74 100644
--- a/roles/network_plugin/calico/tasks/install.yml
+++ b/roles/network_plugin/calico/tasks/install.yml
@@ -440,6 +440,7 @@
 - name: Wait for calico kubeconfig to be created
   wait_for:
     path: /etc/cni/net.d/calico-kubeconfig
+    timeout: "{{ calico_kubeconfig_wait_timeout }}"
   when:
     - inventory_hostname not in groups['kube_control_plane']
     - calico_datastore == "kdd"