diff --git a/kayobe/cli/commands.py b/kayobe/cli/commands.py
index a02619ebb..70224cd3f 100644
--- a/kayobe/cli/commands.py
+++ b/kayobe/cli/commands.py
@@ -1370,6 +1370,7 @@ class OvercloudServiceUpgrade(KollaAnsibleMixin, KayobeAnsibleMixin,
       deployment.
     * Perform a kolla-ansible upgrade of the overcloud services.
     * Configure and upgrade kayobe extra services.
+    * Regenerate openrc files for the admin user.
 
     This can be used in conjunction with the --tags and --kolla-tags arguments
     to upgrade specific services.
@@ -1401,6 +1402,13 @@ class OvercloudServiceUpgrade(KollaAnsibleMixin, KayobeAnsibleMixin,
         self.run_kayobe_playbooks(parsed_args, playbooks,
                                   extra_vars=extra_vars, limit="overcloud")
 
+        # Post-deployment configuration.
+        self.run_kolla_ansible_overcloud(parsed_args, "post-deploy")
+        # Create an environment file for accessing the public API as the admin
+        # user.
+        playbooks = _build_playbook_list("public-openrc")
+        self.run_kayobe_playbooks(parsed_args, playbooks, ignore_limit=True)
+
 
 class OvercloudServiceDestroy(KollaAnsibleMixin, KayobeAnsibleMixin,
                               VaultMixin, Command):
diff --git a/kayobe/tests/unit/cli/test_commands.py b/kayobe/tests/unit/cli/test_commands.py
index 66452adda..7fa79fce8 100644
--- a/kayobe/tests/unit/cli/test_commands.py
+++ b/kayobe/tests/unit/cli/test_commands.py
@@ -1553,6 +1553,14 @@ class TestCase(unittest.TestCase):
                     "kayobe_action": "upgrade",
                 }
             ),
+            mock.call(
+                mock.ANY,
+                [
+                    utils.get_data_files_path("ansible",
+                                              "public-openrc.yml"),
+                ],
+                ignore_limit=True,
+            ),
         ]
         self.assertEqual(expected_calls, mock_run.call_args_list)
 
@@ -1565,6 +1573,10 @@ class TestCase(unittest.TestCase):
                 mock.ANY,
                 "upgrade"
             ),
+            mock.call(
+                mock.ANY,
+                "post-deploy"
+            ),
         ]
         self.assertEqual(expected_calls, mock_kolla_run.call_args_list)
 
diff --git a/releasenotes/notes/openrc-upgrade-9e14888d600f6839.yaml b/releasenotes/notes/openrc-upgrade-9e14888d600f6839.yaml
new file mode 100644
index 000000000..86662ec95
--- /dev/null
+++ b/releasenotes/notes/openrc-upgrade-9e14888d600f6839.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    Kayobe now updates ``openrc`` files when using the ``kayobe overcloud service
+    upgrade`` command.