diff --git a/files/gitlab-cookbooks/gitlab/templates/default/gitlab.yml.erb b/files/gitlab-cookbooks/gitlab/templates/default/gitlab.yml.erb
index 29da7d51ca633b88b1949ef620f6daa22b223b6c_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9naXRsYWIvdGVtcGxhdGVzL2RlZmF1bHQvZ2l0bGFiLnltbC5lcmI=..6bd87cd021526fb841bbedc1927011ce65c5149c_ZmlsZXMvZ2l0bGFiLWNvb2tib29rcy9naXRsYWIvdGVtcGxhdGVzL2RlZmF1bHQvZ2l0bGFiLnltbC5lcmI= 100644
--- a/files/gitlab-cookbooks/gitlab/templates/default/gitlab.yml.erb
+++ b/files/gitlab-cookbooks/gitlab/templates/default/gitlab.yml.erb
@@ -453,5 +453,6 @@
     log_format: <%= @sidekiq['log_format'] %>
     <% unless @sidekiq['routing_rules'].empty? %>
     routing_rules:
-      <% @sidekiq['routing_rules'].each do |query, queue| %>
+      <% @sidekiq['routing_rules'].each do |query, queue, shard_instance| %>
+        <% if shard_instance.nil? %>
       - [<%= quote(query) %>, <%= queue.nil? ? 'null' : quote(queue) %>]
@@ -457,4 +458,7 @@
       - [<%= quote(query) %>, <%= queue.nil? ? 'null' : quote(queue) %>]
+        <% else %>
+      - [<%= quote(query) %>, <%= queue.nil? ? 'null' : quote(queue) %>, <%= quote(shard_instance) %>]
+        <% end %>
       <% end %>
     <% end %>
 
diff --git a/spec/chef/cookbooks/gitlab/recipes/gitlab-rails/gitlab_yml/sidekiq_spec.rb b/spec/chef/cookbooks/gitlab/recipes/gitlab-rails/gitlab_yml/sidekiq_spec.rb
index 29da7d51ca633b88b1949ef620f6daa22b223b6c_c3BlYy9jaGVmL2Nvb2tib29rcy9naXRsYWIvcmVjaXBlcy9naXRsYWItcmFpbHMvZ2l0bGFiX3ltbC9zaWRla2lxX3NwZWMucmI=..6bd87cd021526fb841bbedc1927011ce65c5149c_c3BlYy9jaGVmL2Nvb2tib29rcy9naXRsYWIvcmVjaXBlcy9naXRsYWItcmFpbHMvZ2l0bGFiX3ltbC9zaWRla2lxX3NwZWMucmI= 100644
--- a/spec/chef/cookbooks/gitlab/recipes/gitlab-rails/gitlab_yml/sidekiq_spec.rb
+++ b/spec/chef/cookbooks/gitlab/recipes/gitlab-rails/gitlab_yml/sidekiq_spec.rb
@@ -74,6 +74,28 @@
           )
         end
       end
+
+      context 'with a valid routing rules list containing shard details' do
+        before do
+          stub_gitlab_rb(
+            sidekiq: {
+              routing_rules: [
+                ["resource_boundary=cpu", "cpu_boundary"],
+                ["*", "default", "default"]
+              ]
+            }
+          )
+        end
+
+        it 'renders gitlab.yml with user specified value for sidekiq routing rules' do
+          expect(gitlab_yml[:production][:sidekiq][:routing_rules]).to eq(
+            [
+              ["resource_boundary=cpu", "cpu_boundary"],
+              ["*", "default", "default"]
+            ]
+          )
+        end
+      end
     end
   end
 end