diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml
index 1c1abe63a2..df0a135168 100644
--- a/ansible/group_vars/all.yml
+++ b/ansible/group_vars/all.yml
@@ -360,6 +360,7 @@ gnocchi_internal_fqdn: "{{ kolla_internal_fqdn }}"
 gnocchi_external_fqdn: "{{ kolla_external_fqdn }}"
 gnocchi_api_port: "8041"
 gnocchi_api_listen_port: "{{ gnocchi_api_port }}"
+gnocchi_api_public_port: "{{ haproxy_single_external_frontend_public_port if haproxy_single_external_frontend | bool else gnocchi_api_port }}"
 
 grafana_internal_fqdn: "{{ kolla_internal_fqdn }}"
 grafana_external_fqdn: "{{ kolla_external_fqdn }}"
diff --git a/ansible/roles/venus/defaults/main.yml b/ansible/roles/venus/defaults/main.yml
index 42cf25e8fb..71c02b0a24 100644
--- a/ansible/roles/venus/defaults/main.yml
+++ b/ansible/roles/venus/defaults/main.yml
@@ -19,7 +19,7 @@ venus_services:
         mode: "http"
         external: true
         external_fqdn: "{{ venus_external_fqdn }}"
-        port: "{{ venus_api_port }}"
+        port: "{{ venus_api_public_port }}"
   venus-manager:
     container_name: venus_manager
     group: venus-manager
diff --git a/ansible/roles/vitrage/defaults/main.yml b/ansible/roles/vitrage/defaults/main.yml
index a426e3c289..781e51d188 100644
--- a/ansible/roles/vitrage/defaults/main.yml
+++ b/ansible/roles/vitrage/defaults/main.yml
@@ -19,7 +19,7 @@ vitrage_services:
         mode: "http"
         external: true
         external_fqdn: "{{ vitrage_external_fqdn }}"
-        port: "{{ vitrage_api_port }}"
+        port: "{{ vitrage_api_public_port }}"
   vitrage-notifier:
     container_name: vitrage_notifier
     group: vitrage-notifier