diff --git a/README.rst b/README.rst
index 14cb2848f1..6ff6a235cd 100644
--- a/README.rst
+++ b/README.rst
@@ -64,7 +64,6 @@ Kolla Ansible deploys containers for the following OpenStack projects:
 - `Neutron <https://docs.openstack.org/neutron/latest/>`__
 - `Nova <https://docs.openstack.org/nova/latest/>`__
 - `Octavia <https://docs.openstack.org/octavia/latest/>`__
-- `Panko <https://docs.openstack.org/panko/latest/>`__
 - `Rally <https://docs.openstack.org/rally/latest/>`__
 - `Sahara <https://docs.openstack.org/sahara/latest/>`__
 - `Senlin <https://docs.openstack.org/senlin/latest/>`__
diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml
index 80f70ed947..adf28c28d3 100644
--- a/ansible/group_vars/all.yml
+++ b/ansible/group_vars/all.yml
@@ -422,8 +422,6 @@ outward_rabbitmq_epmd_port: "4371"
 
 ovsdb_port: "6640"
 
-panko_api_port: "8977"
-
 placement_internal_fqdn: "{{ kolla_internal_fqdn }}"
 placement_external_fqdn: "{{ kolla_external_fqdn }}"
 # Default Placement API port of 8778 already in use
@@ -671,7 +669,6 @@ enable_openvswitch: "{{ enable_neutron | bool and neutron_plugin_agent != 'linux
 enable_ovn: "{{ enable_neutron | bool and neutron_plugin_agent == 'ovn' }}"
 enable_ovs_dpdk: "no"
 enable_osprofiler: "no"
-enable_panko: "no"
 enable_placement: "{{ enable_nova | bool or enable_zun | bool }}"
 enable_prometheus: "no"
 enable_qdrouterd: "{{ 'yes' if om_rpc_transport == 'amqp' else 'no' }}"
diff --git a/ansible/inventory/all-in-one b/ansible/inventory/all-in-one
index bc1a56c396..32d791881c 100644
--- a/ansible/inventory/all-in-one
+++ b/ansible/inventory/all-in-one
@@ -171,9 +171,6 @@ control
 [manila:children]
 control
 
-[panko:children]
-control
-
 [gnocchi:children]
 control
 
@@ -538,10 +535,6 @@ compute
 [cyborg-conductor:children]
 cyborg
 
-# Panko
-[panko-api:children]
-panko
-
 # Gnocchi
 [gnocchi-api:children]
 gnocchi
diff --git a/ansible/inventory/multinode b/ansible/inventory/multinode
index 8b3f83e0fa..4a545de2db 100644
--- a/ansible/inventory/multinode
+++ b/ansible/inventory/multinode
@@ -199,9 +199,6 @@ control
 control
 compute
 
-[panko:children]
-control
-
 [gnocchi:children]
 control
 
@@ -566,10 +563,6 @@ compute
 [cyborg-conductor:children]
 cyborg
 
-# Panko
-[panko-api:children]
-panko
-
 # Gnocchi
 [gnocchi-api:children]
 gnocchi
diff --git a/ansible/roles/ceilometer/tasks/config.yml b/ansible/roles/ceilometer/tasks/config.yml
index 55623f0efd..a4b46e96fd 100644
--- a/ansible/roles/ceilometer/tasks/config.yml
+++ b/ansible/roles/ceilometer/tasks/config.yml
@@ -338,29 +338,6 @@
   notify:
     - "Restart {{ item.key }} container"
 
-- name: Copying over panko.conf
-  vars:
-    service_require_panko_conf:
-      - ceilometer-notification
-  merge_configs:
-    sources:
-      - "{{ role_path }}/../panko/templates/panko.conf.j2"
-      - "{{ node_custom_config }}/global.conf"
-      - "{{ node_custom_config }}/panko.conf"
-      - "{{ node_custom_config }}/panko/panko.conf"
-      - "{{ node_custom_config }}/panko/{{ inventory_hostname }}/panko.conf"
-    dest: "{{ node_config_directory }}/{{ item.key }}/panko.conf"
-    mode: "0660"
-  become: true
-  when:
-    - enable_panko | bool
-    - item.value.enabled | bool
-    - inventory_hostname in groups[item.value.group]
-    - item.key in service_require_panko_conf
-  with_dict: "{{ ceilometer_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
-
 - name: Copying VMware vCenter CA file
   become: true
   vars:
diff --git a/ansible/roles/ceilometer/templates/ceilometer-notification.json.j2 b/ansible/roles/ceilometer/templates/ceilometer-notification.json.j2
index 15711c9def..a7b2492a55 100644
--- a/ansible/roles/ceilometer/templates/ceilometer-notification.json.j2
+++ b/ansible/roles/ceilometer/templates/ceilometer-notification.json.j2
@@ -42,14 +42,7 @@
             "dest": "/etc/ceilometer/{{ ceilometer_policy_file }}",
             "owner": "ceilometer",
             "perm": "0600"
-        }{% endif %},
-        {
-            "source": "{{ container_config_directory }}/panko.conf",
-            "dest": "/etc/panko/panko.conf",
-            "owner": "ceilometer",
-            "perm": "0600",
-            "optional": true
-        }
+        }{% endif %}
     ],
     "permissions": [
         {
diff --git a/ansible/roles/ceilometer/templates/event_pipeline.yaml.j2 b/ansible/roles/ceilometer/templates/event_pipeline.yaml.j2
index 5d56694e3b..8cb0ab2f3f 100644
--- a/ansible/roles/ceilometer/templates/event_pipeline.yaml.j2
+++ b/ansible/roles/ceilometer/templates/event_pipeline.yaml.j2
@@ -11,6 +11,3 @@ sinks:
 {% if enable_gnocchi | bool %}
           - gnocchi://
 {% endif %}
-{% if enable_panko | bool %}
-          - panko://
-{% endif %}
diff --git a/ansible/roles/common/defaults/main.yml b/ansible/roles/common/defaults/main.yml
index 8c41d59af1..0a7cc4eb13 100644
--- a/ansible/roles/common/defaults/main.yml
+++ b/ansible/roles/common/defaults/main.yml
@@ -159,8 +159,6 @@ fluentd_input_openstack_services:
     enabled: "{{ enable_nova | bool }}"
   - name: octavia
     enabled: "{{ enable_octavia | bool }}"
-  - name: panko
-    enabled: "{{ enable_panko | bool }}"
   - name: rally
     enabled: "{{ enable_rally | bool }}"
   - name: sahara
diff --git a/ansible/roles/common/tasks/config.yml b/ansible/roles/common/tasks/config.yml
index edcd87e6ca..6333b1eb89 100644
--- a/ansible/roles/common/tasks/config.yml
+++ b/ansible/roles/common/tasks/config.yml
@@ -208,7 +208,6 @@
       - { name: "nova", enabled: "{{ enable_nova | bool }}" }
       - { name: "octavia", enabled: "{{ enable_octavia | bool }}" }
       - { name: "outward-rabbitmq", enabled: "{{ enable_outward_rabbitmq | bool }}" }
-      - { name: "panko", enabled: "{{ enable_panko | bool }}" }
       - { name: "rabbitmq", enabled: "{{ enable_rabbitmq | bool }}" }
       - { name: "rally", enabled: "{{ enable_rally | bool }}" }
       - { name: "sahara", enabled: "{{ enable_sahara | bool }}" }
diff --git a/ansible/roles/common/templates/conf/filter/01-rewrite-0.12.conf.j2 b/ansible/roles/common/templates/conf/filter/01-rewrite-0.12.conf.j2
index 473b7a692c..0f4ac250a4 100644
--- a/ansible/roles/common/templates/conf/filter/01-rewrite-0.12.conf.j2
+++ b/ansible/roles/common/templates/conf/filter/01-rewrite-0.12.conf.j2
@@ -1,7 +1,7 @@
 <match kolla.var.log.kolla.*.*.log>
     @type rewrite_tag_filter
     capitalize_regex_backreference yes
-    rewriterule1 programname ^(cinder-api-access|cloudkitty-api-access|gnocchi-api-access|horizon-access|keystone-apache-admin-access|keystone-apache-public-access|monasca-api-access|octavia-api-access|placement-api-access|panko-api-access)$ apache_access
+    rewriterule1 programname ^(cinder-api-access|cloudkitty-api-access|gnocchi-api-access|horizon-access|keystone-apache-admin-access|keystone-apache-public-access|monasca-api-access|octavia-api-access|placement-api-access)$ apache_access
     rewriterule2 programname ^(aodh_wsgi_access|barbican_api_uwsgi_access|zun_api_wsgi_access|vitrage_wsgi_access)$ wsgi_access
     rewriterule3 programname ^(nova-api|nova-compute|nova-compute-ironic|nova-conductor|nova-manage|nova-novncproxy|nova-scheduler|nova-placement-api|placement-api|privsep-helper)$ openstack_python
     rewriterule4 programname ^(sahara-api|sahara-engine)$ openstack_python
@@ -28,7 +28,6 @@
     rewriterule26 programname ^(kuryr-server)$ openstack_python
     rewriterule27 programname ^(gnocchi-api|gnocchi-statsd|gnocchi-metricd|gnocchi-upgrade)$ openstack_python
     rewriterule28 programname ^(ironic-api|ironic-conductor|ironic-inspector)$ openstack_python
-    rewriterule29 programname ^(panko-api|panko-dbsync)$ openstack_python
     rewriterule30 programname ^(tacker-server|tacker-conductor)$ openstack_python
     rewriterule31 programname ^(vitrage-ml|vitrage-notifier|vitrage-graph|vitrage-persistor)$ openstack_python
     rewriterule32 programname ^(blazar-api|blazar-manager)$ openstack_python
diff --git a/ansible/roles/common/templates/conf/filter/01-rewrite-0.14.conf.j2 b/ansible/roles/common/templates/conf/filter/01-rewrite-0.14.conf.j2
index 4337b877f2..329e60e780 100644
--- a/ansible/roles/common/templates/conf/filter/01-rewrite-0.14.conf.j2
+++ b/ansible/roles/common/templates/conf/filter/01-rewrite-0.14.conf.j2
@@ -3,7 +3,7 @@
     capitalize_regex_backreference yes
   <rule>
     key     programname
-    pattern ^(cinder-api-access|cloudkitty-api-access|gnocchi-api-access|horizon-access|keystone-apache-admin-access|keystone-apache-public-access|monasca-api-access|octavia-api-access|placement-api-access|panko-api-access)$
+    pattern ^(cinder-api-access|cloudkitty-api-access|gnocchi-api-access|horizon-access|keystone-apache-admin-access|keystone-apache-public-access|monasca-api-access|octavia-api-access|placement-api-access)$
     tag apache_access
   </rule>
   <rule>
@@ -141,11 +141,6 @@
     pattern ^(ironic-api|ironic-conductor|ironic-inspector)$
     tag openstack_python
   </rule>
-  <rule>
-    key     programname
-    pattern ^(panko-api|panko-dbsync)$
-    tag openstack_python
-  </rule>
   <rule>
     key     programname
     pattern ^(tacker-server|tacker-conductor)$
diff --git a/ansible/roles/common/templates/cron-logrotate-panko.conf.j2 b/ansible/roles/common/templates/cron-logrotate-panko.conf.j2
deleted file mode 100644
index dd3894cc25..0000000000
--- a/ansible/roles/common/templates/cron-logrotate-panko.conf.j2
+++ /dev/null
@@ -1,3 +0,0 @@
-"/var/log/kolla/panko/*.log"
-{
-}
diff --git a/ansible/roles/haproxy/tasks/precheck.yml b/ansible/roles/haproxy/tasks/precheck.yml
index b0e71b9fe1..a914be611c 100644
--- a/ansible/roles/haproxy/tasks/precheck.yml
+++ b/ansible/roles/haproxy/tasks/precheck.yml
@@ -684,19 +684,6 @@
     - haproxy_stat.find('octavia_api') == -1
     - haproxy_vip_prechecks
 
-- name: Checking free port for Panko API HAProxy
-  wait_for:
-    host: "{{ kolla_internal_vip_address }}"
-    port: "{{ panko_api_port }}"
-    connect_timeout: 1
-    timeout: 1
-    state: stopped
-  when:
-    - enable_panko | bool
-    - inventory_hostname in groups['haproxy']
-    - haproxy_stat.find('panko_api') == -1
-    - haproxy_vip_prechecks
-
 - name: Checking free port for RabbitMQ Management HAProxy
   wait_for:
     host: "{{ kolla_internal_vip_address }}"
diff --git a/ansible/roles/panko/defaults/main.yml b/ansible/roles/panko/defaults/main.yml
deleted file mode 100644
index 2d481d2abe..0000000000
--- a/ansible/roles/panko/defaults/main.yml
+++ /dev/null
@@ -1,79 +0,0 @@
----
-project_name: "panko"
-
-panko_services:
-  panko-api:
-    container_name: panko_api
-    group: panko-api
-    enabled: true
-    image: "{{ panko_api_image_full }}"
-    volumes: "{{ panko_api_default_volumes + panko_api_extra_volumes }}"
-    dimensions: "{{ panko_api_dimensions }}"
-    haproxy:
-      panko_api:
-        enabled: "{{ enable_panko }}"
-        mode: "http"
-        external: false
-        port: "{{ panko_api_port }}"
-      panko_api_external:
-        enabled: "{{ enable_panko }}"
-        mode: "http"
-        external: true
-        port: "{{ panko_api_port }}"
-
-
-####################
-# Database
-####################
-panko_database_name: "panko"
-panko_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}panko{% endif %}"
-panko_database_mysql_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
-
-####################
-# Docker
-####################
-panko_install_type: "{{ kolla_install_type }}"
-panko_tag: "{{ openstack_tag }}"
-
-panko_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ panko_install_type }}-panko-api"
-panko_api_tag: "{{ panko_tag }}"
-panko_api_image_full: "{{ panko_api_image }}:{{ panko_api_tag }}"
-panko_api_dimensions: "{{ default_container_dimensions }}"
-
-panko_api_default_volumes:
-  - "{{ node_config_directory }}/panko-api/:{{ container_config_directory }}/:ro"
-  - "/etc/localtime:/etc/localtime:ro"
-  - "{{ '/etc/timezone:/etc/timezone:ro' if ansible_os_family == 'Debian' else '' }}"
-  - "kolla_logs:/var/log/kolla/"
-panko_api_extra_volumes: "{{ default_extra_volumes }}"
-
-####################
-# OpenStack
-####################
-panko_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ panko_api_port }}"
-panko_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ panko_api_port }}"
-panko_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ panko_api_port }}"
-
-panko_logging_debug: "{{ openstack_logging_debug }}"
-
-panko_keystone_user: "panko"
-
-openstack_panko_auth: "{{ openstack_auth }}"
-
-####################
-# Keystone
-####################
-panko_ks_services:
-  - name: "panko"
-    type: "event"
-    description: "Panko Service"
-    endpoints:
-      - {'interface': 'admin', 'url': '{{ panko_admin_endpoint }}'}
-      - {'interface': 'internal', 'url': '{{ panko_internal_endpoint }}'}
-      - {'interface': 'public', 'url': '{{ panko_public_endpoint }}'}
-
-panko_ks_users:
-  - project: "service"
-    user: "{{ panko_keystone_user }}"
-    password: "{{ panko_keystone_password }}"
-    role: "admin"
diff --git a/ansible/roles/panko/handlers/main.yml b/ansible/roles/panko/handlers/main.yml
deleted file mode 100644
index f40f3e92f3..0000000000
--- a/ansible/roles/panko/handlers/main.yml
+++ /dev/null
@@ -1,15 +0,0 @@
----
-- name: Restart panko-api container
-  vars:
-    service_name: "panko-api"
-    service: "{{ panko_services[service_name] }}"
-  become: true
-  kolla_docker:
-    action: "recreate_or_restart_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ service.container_name }}"
-    image: "{{ service.image }}"
-    volumes: "{{ service.volumes }}"
-    dimensions: "{{ service.dimensions }}"
-  when:
-    - kolla_action != "config"
diff --git a/ansible/roles/panko/tasks/bootstrap.yml b/ansible/roles/panko/tasks/bootstrap.yml
deleted file mode 100644
index ab8a967d5e..0000000000
--- a/ansible/roles/panko/tasks/bootstrap.yml
+++ /dev/null
@@ -1,36 +0,0 @@
----
-- name: Creating Panko mysql database
-  become: true
-  kolla_toolbox:
-    module_name: mysql_db
-    module_args:
-      login_host: "{{ database_address }}"
-      login_port: "{{ database_port }}"
-      login_user: "{{ database_user }}"
-      login_password: "{{ database_password }}"
-      name: "{{ panko_database_name }}"
-  run_once: True
-  delegate_to: "{{ groups['panko-api'][0] }}"
-  when:
-    - not use_preconfigured_databases | bool
-
-- name: Creating Panko mysql database user and setting permissions
-  become: true
-  kolla_toolbox:
-    module_name: mysql_user
-    module_args:
-      login_host: "{{ database_address }}"
-      login_port: "{{ database_port }}"
-      login_user: "{{ database_user }}"
-      login_password: "{{ database_password }}"
-      name: "{{ panko_database_user }}"
-      password: "{{ panko_database_password }}"
-      host: "%"
-      priv: "{{ panko_database_name }}.*:ALL"
-      append_privs: "yes"
-  run_once: True
-  delegate_to: "{{ groups['panko-api'][0] }}"
-  when:
-    - not use_preconfigured_databases | bool
-
-- import_tasks: bootstrap_service.yml
diff --git a/ansible/roles/panko/tasks/bootstrap_service.yml b/ansible/roles/panko/tasks/bootstrap_service.yml
deleted file mode 100644
index 597df77c8a..0000000000
--- a/ansible/roles/panko/tasks/bootstrap_service.yml
+++ /dev/null
@@ -1,20 +0,0 @@
----
-- name: Running panko bootstrap container
-  vars:
-    panko_api: "{{ panko_services['panko-api'] }}"
-  become: true
-  kolla_docker:
-    action: "start_container"
-    common_options: "{{ docker_common_options }}"
-    detach: False
-    environment:
-      KOLLA_BOOTSTRAP:
-      KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
-    image: "{{ panko_api.image }}"
-    labels:
-      BOOTSTRAP:
-    name: "bootstrap_panko"
-    restart_policy: no
-    volumes: "{{ panko_api.volumes }}"
-  run_once: True
-  delegate_to: "{{ groups[panko_api.group][0] }}"
diff --git a/ansible/roles/panko/tasks/check-containers.yml b/ansible/roles/panko/tasks/check-containers.yml
deleted file mode 100644
index 1c6b10ab77..0000000000
--- a/ansible/roles/panko/tasks/check-containers.yml
+++ /dev/null
@@ -1,16 +0,0 @@
----
-- name: Check panko containers
-  become: true
-  kolla_docker:
-    action: "compare_container"
-    common_options: "{{ docker_common_options }}"
-    name: "{{ item.value.container_name }}"
-    image: "{{ item.value.image }}"
-    volumes: "{{ item.value.volumes }}"
-    dimensions: "{{ item.value.dimensions }}"
-  when:
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ panko_services }}"
-  notify:
-    - "Restart {{ item.key }} container"
diff --git a/ansible/roles/panko/tasks/check.yml b/ansible/roles/panko/tasks/check.yml
deleted file mode 100644
index ed97d539c0..0000000000
--- a/ansible/roles/panko/tasks/check.yml
+++ /dev/null
@@ -1 +0,0 @@
----
diff --git a/ansible/roles/panko/tasks/config.yml b/ansible/roles/panko/tasks/config.yml
deleted file mode 100644
index 97bcabf02b..0000000000
--- a/ansible/roles/panko/tasks/config.yml
+++ /dev/null
@@ -1,97 +0,0 @@
----
-- name: Ensuring config directories exist
-  file:
-    path: "{{ node_config_directory }}/{{ item.key }}"
-    state: "directory"
-    owner: "{{ config_owner_user }}"
-    group: "{{ config_owner_group }}"
-    mode: "0770"
-  become: true
-  when:
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ panko_services }}"
-
-- name: Check if policies shall be overwritten
-  stat:
-    path: "{{ item }}"
-  delegate_to: localhost
-  run_once: True
-  register: panko_policy
-  with_first_found:
-    - files: "{{ supported_policy_format_list }}"
-      paths:
-        - "{{ node_custom_config }}/panko/"
-      skip: true
-
-- name: Set panko policy file
-  set_fact:
-    panko_policy_file: "{{ panko_policy.results.0.stat.path | basename }}"
-    panko_policy_file_path: "{{ panko_policy.results.0.stat.path }}"
-  when:
-    - panko_policy.results
-
-- include_tasks: copy-certs.yml
-  when:
-    - kolla_copy_ca_into_containers | bool
-
-- name: Copying over config.json files for services
-  template:
-    src: "{{ item.key }}.json.j2"
-    dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
-    mode: "0660"
-  become: true
-  when:
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ panko_services }}"
-  notify:
-    - Restart panko-api container
-
-- name: Copying over panko.conf
-  merge_configs:
-    sources:
-      - "{{ role_path }}/templates/panko.conf.j2"
-      - "{{ node_custom_config }}/global.conf"
-      - "{{ node_custom_config }}/panko.conf"
-      - "{{ node_custom_config }}/panko/{{ item.key }}.conf"
-      - "{{ node_custom_config }}/panko/{{ inventory_hostname }}/{{ item.key }}.conf"
-    dest: "{{ node_config_directory }}/{{ item.key }}/panko.conf"
-    mode: "0660"
-  become: true
-  when:
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ panko_services }}"
-  notify:
-    - Restart panko-api container
-
-- name: Copying over wsgi-panko files for services
-  vars:
-    service: "{{ panko_services['panko-api'] }}"
-  template:
-    src: "wsgi-panko.conf.j2"
-    dest: "{{ node_config_directory }}/{{ item }}/wsgi-panko.conf"
-    mode: "0660"
-  become: true
-  when:
-    - inventory_hostname in groups[service.group]
-    - service.enabled | bool
-  with_items:
-    - "panko-api"
-  notify:
-    - Restart panko-api container
-
-- name: Copying over existing policy file
-  template:
-    src: "{{ panko_policy_file_path }}"
-    dest: "{{ node_config_directory }}/{{ item.key }}/{{ panko_policy_file }}"
-    mode: "0660"
-  become: true
-  when:
-    - panko_policy_file is defined
-    - inventory_hostname in groups[item.value.group]
-    - item.value.enabled | bool
-  with_dict: "{{ panko_services }}"
-  notify:
-    - Restart panko-api container
diff --git a/ansible/roles/panko/tasks/copy-certs.yml b/ansible/roles/panko/tasks/copy-certs.yml
deleted file mode 100644
index 29ae844575..0000000000
--- a/ansible/roles/panko/tasks/copy-certs.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-- name: "Copy certificates and keys for {{ project_name }}"
-  import_role:
-    role: service-cert-copy
-  vars:
-    project_services: "{{ panko_services }}"
diff --git a/ansible/roles/panko/tasks/deploy-containers.yml b/ansible/roles/panko/tasks/deploy-containers.yml
deleted file mode 100644
index eb24ab5c7a..0000000000
--- a/ansible/roles/panko/tasks/deploy-containers.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- import_tasks: check-containers.yml
diff --git a/ansible/roles/panko/tasks/deploy.yml b/ansible/roles/panko/tasks/deploy.yml
deleted file mode 100644
index d793a349da..0000000000
--- a/ansible/roles/panko/tasks/deploy.yml
+++ /dev/null
@@ -1,11 +0,0 @@
----
-- import_tasks: register.yml
-
-- import_tasks: config.yml
-
-- import_tasks: check-containers.yml
-
-- import_tasks: bootstrap.yml
-
-- name: Flush handlers
-  meta: flush_handlers
diff --git a/ansible/roles/panko/tasks/loadbalancer.yml b/ansible/roles/panko/tasks/loadbalancer.yml
deleted file mode 100644
index 1b4f518158..0000000000
--- a/ansible/roles/panko/tasks/loadbalancer.yml
+++ /dev/null
@@ -1,7 +0,0 @@
----
-- name: "Configure haproxy for {{ project_name }}"
-  import_role:
-    name: haproxy-config
-  vars:
-    project_services: "{{ panko_services }}"
-  tags: always
diff --git a/ansible/roles/panko/tasks/main.yml b/ansible/roles/panko/tasks/main.yml
deleted file mode 100644
index bc5d1e6257..0000000000
--- a/ansible/roles/panko/tasks/main.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- include_tasks: "{{ kolla_action }}.yml"
diff --git a/ansible/roles/panko/tasks/precheck.yml b/ansible/roles/panko/tasks/precheck.yml
deleted file mode 100644
index 6d1e15136b..0000000000
--- a/ansible/roles/panko/tasks/precheck.yml
+++ /dev/null
@@ -1,24 +0,0 @@
----
-- import_role:
-    name: service-precheck
-  vars:
-    service_precheck_services: "{{ panko_services }}"
-    service_name: "{{ project_name }}"
-
-- name: Get container facts
-  become: true
-  kolla_container_facts:
-    name:
-      - panko_api
-  register: container_facts
-
-- name: Checking free port for Panko API
-  wait_for:
-    host: "{{ api_interface_address }}"
-    port: "{{ panko_api_port }}"
-    connect_timeout: 1
-    timeout: 1
-    state: stopped
-  when:
-    - container_facts['panko_api'] is not defined
-    - inventory_hostname in groups['panko-api']
diff --git a/ansible/roles/panko/tasks/pull.yml b/ansible/roles/panko/tasks/pull.yml
deleted file mode 100644
index f82270c902..0000000000
--- a/ansible/roles/panko/tasks/pull.yml
+++ /dev/null
@@ -1,8 +0,0 @@
----
-- name: Pulling panko-api image
-  become: true
-  kolla_docker:
-    action: "pull_image"
-    common_options: "{{ docker_common_options }}"
-    image: "{{ panko_api_image_full }}"
-  when: inventory_hostname in groups['panko-api']
diff --git a/ansible/roles/panko/tasks/reconfigure.yml b/ansible/roles/panko/tasks/reconfigure.yml
deleted file mode 100644
index 5b10a7e111..0000000000
--- a/ansible/roles/panko/tasks/reconfigure.yml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-- import_tasks: deploy.yml
diff --git a/ansible/roles/panko/tasks/register.yml b/ansible/roles/panko/tasks/register.yml
deleted file mode 100644
index 06efc28f45..0000000000
--- a/ansible/roles/panko/tasks/register.yml
+++ /dev/null
@@ -1,7 +0,0 @@
----
-- import_role:
-    name: service-ks-register
-  vars:
-    service_ks_register_auth: "{{ openstack_panko_auth }}"
-    service_ks_register_services: "{{ panko_ks_services }}"
-    service_ks_register_users: "{{ panko_ks_users }}"
diff --git a/ansible/roles/panko/tasks/stop.yml b/ansible/roles/panko/tasks/stop.yml
deleted file mode 100644
index 5875cb4fc0..0000000000
--- a/ansible/roles/panko/tasks/stop.yml
+++ /dev/null
@@ -1,6 +0,0 @@
----
-- import_role:
-    name: service-stop
-  vars:
-    project_services: "{{ panko_services }}"
-    service_name: "{{ project_name }}"
diff --git a/ansible/roles/panko/tasks/upgrade.yml b/ansible/roles/panko/tasks/upgrade.yml
deleted file mode 100644
index 6ba9f99799..0000000000
--- a/ansible/roles/panko/tasks/upgrade.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-- import_tasks: config.yml
-
-- import_tasks: check-containers.yml
-
-- import_tasks: bootstrap_service.yml
-
-- name: Flush handlers
-  meta: flush_handlers
diff --git a/ansible/roles/panko/templates/panko-api.json.j2 b/ansible/roles/panko/templates/panko-api.json.j2
deleted file mode 100644
index d286eb5212..0000000000
--- a/ansible/roles/panko/templates/panko-api.json.j2
+++ /dev/null
@@ -1,32 +0,0 @@
-{% set panko_cmd = 'apache2' if kolla_base_distro in ['ubuntu', 'debian'] else 'httpd' %}
-{% set panko_dir = 'apache2/conf-enabled' if kolla_base_distro in ['ubuntu', 'debian'] else 'httpd/conf.d' %}
-{
-    "command": "{{ panko_cmd }} -DFOREGROUND",
-    "config_files": [
-        {
-            "source": "{{ container_config_directory }}/panko.conf",
-            "dest": "/etc/panko/panko.conf",
-            "owner": "panko",
-            "perm": "0600"
-        }{% if panko_policy_file is defined %},
-        {
-            "source": "{{ container_config_directory }}/{{ panko_policy_file }}",
-            "dest": "/etc/panko/{{ panko_policy_file }}",
-            "owner": "panko",
-            "perm": "0600"
-        }{% endif %},
-        {
-            "source": "{{ container_config_directory }}/wsgi-panko.conf",
-            "dest": "/etc/{{ panko_dir }}/wsgi-panko.conf",
-            "owner": "panko",
-            "perm": "0640"
-        }
-    ],
-    "permissions": [
-        {
-            "path": "/var/log/kolla/panko",
-            "owner": "panko:panko",
-            "recurse": true
-        }
-    ]
-}
diff --git a/ansible/roles/panko/templates/panko.conf.j2 b/ansible/roles/panko/templates/panko.conf.j2
deleted file mode 100644
index 093e24b1ba..0000000000
--- a/ansible/roles/panko/templates/panko.conf.j2
+++ /dev/null
@@ -1,37 +0,0 @@
-#jinja2: trim_blocks: False
-[DEFAULT]
-log_dir = /var/log/kolla/panko
-debug = {{ panko_logging_debug }}
-
-# Force panko-api.log or will use app.wsgi
-log_file = /var/log/kolla/panko/panko-api.log
-
-
-[database]
-connection = mysql+pymysql://{{ panko_database_user }}:{{ panko_database_password }}@{{ panko_database_mysql_address }}/{{ panko_database_name }}
-connection_recycle_time = {{ database_connection_recycle_time }}
-max_pool_size = {{ database_max_pool_size }}
-metering_connection = mysql+pymysql://{{ panko_database_user }}:{{ panko_database_password }}@{{ panko_database_mysql_address }}/{{ panko_database_name }}
-
-[keystone_authtoken]
-www_authenticate_uri = {{ keystone_internal_url }}
-project_domain_name = {{ default_project_domain_name }}
-project_name = service
-user_domain_name = {{ default_user_domain_name }}
-username = {{ panko_keystone_user }}
-password = {{ panko_keystone_password }}
-auth_url = {{ keystone_admin_url }}
-auth_type = password
-cafile = {{ openstack_cacert }}
-
-memcache_security_strategy = ENCRYPT
-memcache_secret_key = {{ memcache_secret_key }}
-memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
-
-{% if panko_policy_file is defined %}
-[oslo_policy]
-policy_file = {{ panko_policy_file }}
-{% endif %}
-
-[oslo_middleware]
-enable_proxy_headers_parsing = True
diff --git a/ansible/roles/panko/templates/wsgi-panko.conf.j2 b/ansible/roles/panko/templates/wsgi-panko.conf.j2
deleted file mode 100644
index f94bf02802..0000000000
--- a/ansible/roles/panko/templates/wsgi-panko.conf.j2
+++ /dev/null
@@ -1,36 +0,0 @@
-{% set panko_log_dir = '/var/log/kolla/panko' %}
-{% set binary_path = '/usr/bin' if panko_install_type == 'binary' else '/var/lib/kolla/venv/bin' %}
-Listen {{ api_interface_address | put_address_in_context('url') }}:{{ panko_api_port }}
-
-ServerSignature Off
-ServerTokens Prod
-TraceEnable off
-TimeOut {{ kolla_httpd_timeout }}
-KeepAliveTimeout {{ kolla_httpd_keep_alive }}
-
-ErrorLog "{{ panko_log_dir }}/apache-error.log"
-<IfModule log_config_module>
-    CustomLog "{{ panko_log_dir }}/apache-access.log" common
-</IfModule>
-
-{% if panko_logging_debug | bool %}
-LogLevel info
-{% endif %}
-
-<Directory "{{ binary_path }}">
-    <FilesMatch "^panko-api$">
-        Require all granted
-    </FilesMatch>
-</Directory>
-
-<VirtualHost *:{{ panko_api_port }}>
-
-  ErrorLog "{{ panko_log_dir }}/panko-api-error.log"
-  LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" logformat
-  CustomLog "{{ panko_log_dir }}/panko-api-access.log" logformat
-  WSGIApplicationGroup %{GLOBAL}
-  WSGIDaemonProcess panko group=panko processes={{ openstack_service_workers }} threads=1 user=panko
-  WSGIProcessGroup panko
-  WSGIScriptAlias / "{{ binary_path }}/panko-api"
-
-</VirtualHost>
diff --git a/ansible/site.yml b/ansible/site.yml
index d724f6b2a7..4aa26e8083 100644
--- a/ansible/site.yml
+++ b/ansible/site.yml
@@ -60,7 +60,6 @@
         - enable_openvswitch_{{ enable_openvswitch | bool }}_enable_ovs_dpdk_{{ enable_ovs_dpdk | bool }}
         - enable_outward_rabbitmq_{{ enable_outward_rabbitmq | bool }}
         - enable_ovn_{{ enable_ovn | bool }}
-        - enable_panko_{{ enable_panko | bool }}
         - enable_placement_{{ enable_placement | bool }}
         - enable_prometheus_{{ enable_prometheus | bool }}
         - enable_qdrouterd_{{ enable_qdrouterd | bool }}
@@ -287,11 +286,6 @@
             tasks_from: loadbalancer
           tags: octavia
           when: enable_octavia | bool
-        - include_role:
-            name: panko
-            tasks_from: loadbalancer
-          tags: panko
-          when: enable_panko | bool
         - include_role:
             name: prometheus
             tasks_from: loadbalancer
@@ -834,17 +828,6 @@
         tags: sahara,
         when: enable_sahara | bool }
 
-- name: Apply role panko
-  gather_facts: false
-  hosts:
-    - panko-api
-    - '&enable_panko_True'
-  serial: '{{ kolla_serial|default("0") }}'
-  roles:
-    - { role: panko,
-        tags: panko,
-        when: enable_panko | bool }
-
 - name: Apply role manila
   gather_facts: false
   hosts:
@@ -874,8 +857,6 @@
 
 - name: Apply role ceilometer
   gather_facts: false
-  vars_files:
-    - "roles/panko/defaults/main.yml"
   hosts:
     - ceilometer-central
     - ceilometer-notification
diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml
index dde0429c9d..3b4a6f3a61 100644
--- a/etc/kolla/globals.yml
+++ b/etc/kolla/globals.yml
@@ -364,7 +364,6 @@
 #enable_ovn: "{{ enable_neutron | bool and neutron_plugin_agent == 'ovn' }}"
 #enable_ovs_dpdk: "no"
 #enable_osprofiler: "no"
-#enable_panko: "no"
 #enable_placement: "{{ enable_nova | bool or enable_zun | bool }}"
 #enable_prometheus: "no"
 #enable_qdrouterd: "{{ 'yes' if om_rpc_transport == 'amqp' else 'no' }}"
diff --git a/etc/kolla/passwords.yml b/etc/kolla/passwords.yml
index 0ab2388d98..a041513f5a 100644
--- a/etc/kolla/passwords.yml
+++ b/etc/kolla/passwords.yml
@@ -93,9 +93,6 @@ cloudkitty_keystone_password:
 cyborg_database_password:
 cyborg_keystone_password:
 
-panko_database_password:
-panko_keystone_password:
-
 freezer_database_password:
 freezer_keystone_password:
 
diff --git a/releasenotes/notes/remove-panko-component-dda787fca995b9b096a1446e2d2cf9dede37f358.yaml b/releasenotes/notes/remove-panko-component-dda787fca995b9b096a1446e2d2cf9dede37f358.yaml
new file mode 100644
index 0000000000..521e1f7d4b
--- /dev/null
+++ b/releasenotes/notes/remove-panko-component-dda787fca995b9b096a1446e2d2cf9dede37f358.yaml
@@ -0,0 +1,4 @@
+---
+upgrade:
+  - |
+    Support for panko has been removed due to upstream retirement.
diff --git a/tests/templates/inventory.j2 b/tests/templates/inventory.j2
index 2224094272..6f29899246 100644
--- a/tests/templates/inventory.j2
+++ b/tests/templates/inventory.j2
@@ -251,9 +251,6 @@ control
 control
 compute
 
-[panko:children]
-control
-
 [gnocchi:children]
 control
 
@@ -618,10 +615,6 @@ compute
 [cyborg-conductor:children]
 cyborg
 
-# Panko
-[panko-api:children]
-panko
-
 # Gnocchi
 [gnocchi-api:children]
 gnocchi