diff --git a/roles/container-engine/cri-o/defaults/main.yml b/roles/container-engine/cri-o/defaults/main.yml
index 7e7a63660607a4311ecb418aea55169219d16937..7fc81a5921980268efedfa3222d5155212d2b637 100644
--- a/roles/container-engine/cri-o/defaults/main.yml
+++ b/roles/container-engine/cri-o/defaults/main.yml
@@ -45,6 +45,7 @@ crio_stream_port: "10010"
 crio_required_version: "{{ kube_version | regex_replace('^v(?P<major>\\d+).(?P<minor>\\d+).(?P<patch>\\d+)$', '\\g<major>.\\g<minor>') }}"
 
 crio_kubernetes_version_matrix:
+  "1.23": "1.22"
   "1.22": "1.22"
   "1.21": "1.21"
   "1.20": "1.20"
diff --git a/roles/container-engine/cri-o/vars/fedora.yml b/roles/container-engine/cri-o/vars/fedora.yml
index 4c517e815c17be712a2dd7f034624e913c450f3e..69636f0aac120e087d3cf9e458da28a1745e55fc 100644
--- a/roles/container-engine/cri-o/vars/fedora.yml
+++ b/roles/container-engine/cri-o/vars/fedora.yml
@@ -4,7 +4,8 @@ crio_packages:
   - cri-tools
 
 crio_kubernetes_version_matrix:
+  "1.23": "1.22"
   "1.22": "1.22"
   "1.21": "1.21"
   "1.20": "1.20"
-crio_version: "{{ crio_kubernetes_version_matrix[crio_required_version] | default('1.20') }}"
+crio_version: "{{ crio_kubernetes_version_matrix[crio_required_version] | default('1.22') }}"
diff --git a/roles/download/defaults/main.yml b/roles/download/defaults/main.yml
index c4084cecf7a5dada5b4ee04bd9a63a14195adb40..5cd1dddc6aebf7317d4c7a5fc3a3ba7b23ebcd41 100644
--- a/roles/download/defaults/main.yml
+++ b/roles/download/defaults/main.yml
@@ -94,6 +94,7 @@ krew_version: "v0.4.2"
 # Get kubernetes major version (i.e. 1.17.4 => 1.17)
 kube_major_version: "{{ kube_version | regex_replace('^v([0-9])+\\.([0-9]+)\\.[0-9]+', 'v\\1.\\2') }}"
 crictl_supported_versions:
+  v1.23: "v1.22.0"
   v1.22: "v1.22.0"
   v1.21: "v1.21.0"
   v1.20: "v1.20.0"
@@ -745,6 +746,7 @@ csi_livenessprobe_image_repo: "{{ kube_image_repo }}/sig-storage/livenessprobe"
 csi_livenessprobe_image_tag: "v2.5.0"
 
 snapshot_controller_supported_versions:
+  v1.23: "v4.2.1"
   v1.22: "v4.2.1"
   v1.21: "v4.2.1"
   v1.20: "v4.0.0"
diff --git a/roles/kubernetes/control-plane/tasks/main.yml b/roles/kubernetes/control-plane/tasks/main.yml
index 3f2f3b403db08ed54b33de9a4de02c9ad2e781ae..7271f1ca8422f153804ccc7768782dc040bcb82c 100644
--- a/roles/kubernetes/control-plane/tasks/main.yml
+++ b/roles/kubernetes/control-plane/tasks/main.yml
@@ -22,7 +22,7 @@
 
 - name: Create kube-scheduler config
   template:
-    src: kubescheduler-config.v1beta1.yaml.j2
+    src: kubescheduler-config.yaml.j2
     dest: "{{ kube_config_dir }}/kubescheduler-config.yaml"
     mode: 0644
 
diff --git a/roles/kubernetes/control-plane/templates/kubescheduler-config.v1beta1.yaml.j2 b/roles/kubernetes/control-plane/templates/kubescheduler-config.yaml.j2
similarity index 70%
rename from roles/kubernetes/control-plane/templates/kubescheduler-config.v1beta1.yaml.j2
rename to roles/kubernetes/control-plane/templates/kubescheduler-config.yaml.j2
index 87782fc16819aaeb1b2863a40c1383ced85d8fde..4ee61da90cc51e20f9416a8c1f125b1103874136 100644
--- a/roles/kubernetes/control-plane/templates/kubescheduler-config.v1beta1.yaml.j2
+++ b/roles/kubernetes/control-plane/templates/kubescheduler-config.yaml.j2
@@ -1,4 +1,11 @@
-apiVersion: kubescheduler.config.k8s.io/v1beta1
+{% if kube_version is version('v1.22.0', '<') %}
+{% set kubescheduler_config_api_version = "v1beta1" %}
+{% elif kube_version is version('v1.23.0', '<') %}
+{% set kubescheduler_config_api_version = "v1beta2" %}
+{% else %}
+{% set kubescheduler_config_api_version = "v1beta3" %}
+{% endif %}
+apiVersion: kubescheduler.config.k8s.io/{{ kubescheduler_config_api_version|d('v1') }}
 kind: KubeSchedulerConfiguration
 clientConnection:
   kubeconfig: "{{ kube_config_dir }}/scheduler.conf"