diff --git a/ansible/roles/neutron/templates/openvswitch-db-server.json.j2 b/ansible/roles/neutron/templates/openvswitch-db-server.json.j2
index 2f925990c1..ebabe280f5 100644
--- a/ansible/roles/neutron/templates/openvswitch-db-server.json.j2
+++ b/ansible/roles/neutron/templates/openvswitch-db-server.json.j2
@@ -1,4 +1,4 @@
 {
-    "command": "/usr/sbin/ovsdb-server /etc/openvswitch/conf.db -vconsole:emer -vsyslog:err -vfile:info --remote=punix:/run/openvswitch/db.sock --remote=ptcp:6640:{{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }} --log-file=/var/log/kolla/openvswitch/ovsdb-server.log",
+    "command": "start-ovsdb-server {{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }} {% if keystone_replicas is defined %} {{ neutron_bridge_name }} {{ neutron_external_interface }} {% endif %}",
     "config_files": []
 }
diff --git a/docker/openvswitch/openvswitch-db-server/Dockerfile.j2 b/docker/openvswitch/openvswitch-db-server/Dockerfile.j2
index 64d8fc46dc..1cc28e1684 100644
--- a/docker/openvswitch/openvswitch-db-server/Dockerfile.j2
+++ b/docker/openvswitch/openvswitch-db-server/Dockerfile.j2
@@ -3,7 +3,10 @@ MAINTAINER {{ maintainer }}
 
 COPY ovs_ensure_configured.sh /usr/local/bin/kolla_ensure_openvswitch_configured
 COPY extend_start.sh /usr/local/bin/kolla_openvswitch_extend_start
-RUN chmod 755 /usr/local/bin/kolla_ensure_openvswitch_configured /usr/local/bin/kolla_openvswitch_extend_start
+COPY start_ovsdb_server.sh /usr/local/bin/start-ovsdb-server
+RUN chmod 755 /usr/local/bin/kolla_ensure_openvswitch_configured \
+              /usr/local/bin/kolla_openvswitch_extend_start \
+              /usr/local/bin/start-ovsdb-server
 
 {% block openvswitch_db_server_footer %}{% endblock %}
 {% block footer %}{% endblock %}
diff --git a/docker/openvswitch/openvswitch-db-server/start_ovsdb_server.sh b/docker/openvswitch/openvswitch-db-server/start_ovsdb_server.sh
new file mode 100644
index 0000000000..27a4fa50ac
--- /dev/null
+++ b/docker/openvswitch/openvswitch-db-server/start_ovsdb_server.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+# NOTE: (sbezverk) ovs_bridge and ovs_ext_intf variables get initialized only when
+# this script is executed for kubernetes deployment. With Ansible deployment, only
+# ovsdb-server gets launched and then the following workflow step will create
+# an external bridge and plug an external interface. With Kubernetes we want to
+# leverage its dynamic nature of automatic scaling up and down. It means all
+# activities related to creating initial bridge, plugging external interface
+# must be done by DaemonSet launched container.
+
+ovsdb_ip=$1
+ovs_bridge=$2
+ovs_ext_intf=$3
+
+# NOTE: (sbezverk) The reason for introducing this script is to be able
+# to launch ovsdb-server and to create the initial external bridge in one step.
+# It is required in order to be able to use DaemonSet.
+
+if [ ! -e $ovs_bridge  ] && [ ! -e $ovs_ext_intf  ]; then
+# NOTE: (sbezverk) This part is executed only by kubernetes deployment.
+# Creating external bridge
+    /usr/sbin/ovsdb-server /etc/openvswitch/conf.db --remote=punix:/var/run/openvswitch/db.sock --run="ovs-vsctl --no-wait --db=unix:/var/run/openvswitch/db.sock add-br $ovs_bridge"
+# Plug the external interface into the external bridge.
+    /usr/sbin/ovsdb-server /etc/openvswitch/conf.db --remote=punix:/var/run/openvswitch/db.sock --run="ovs-vsctl --no-wait --db=unix:/var/run/openvswitch/db.sock add-port $ovs_bridge $ovs_ext_intf"
+# Run ovsdb server proces
+    /usr/sbin/ovsdb-server /etc/openvswitch/conf.db -vconsole:emer -vsyslog:err -vfile:info --remote=punix:/var/run/openvswitch/db.sock --log-file=/var/log/kolla/openvswitch/ovsdb-server.log
+else
+# NOTE: (sbezverk) This part is executed only by kolla-ansible deployment.
+    /usr/sbin/ovsdb-server /etc/openvswitch/conf.db -vconsole:emer -vsyslog:err -vfile:info --remote=punix:/run/openvswitch/db.sock --remote=ptcp:6640:$ovsdb_ip --log-file=/var/log/kolla/openvswitch/ovsdb-server.log
+fi