#!/usr/bin/env python3

# Copyright 2023 The KServe Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import tomlkit
import argparse

parser = argparse.ArgumentParser(description="Update release version in python toml files")
parser.add_argument("version", type=str, help="release version")
args, _ = parser.parse_known_args()

toml_files = [
    "python/kserve/pyproject.toml",
    "python/aiffairness/pyproject.toml",
    "python/aixexplainer/pyproject.toml",
    "python/alibiexplainer/pyproject.toml",
    "python/artexplainer/pyproject.toml",
    "python/custom_model/pyproject.toml",
    "python/custom_transformer/pyproject.toml",
    "python/lgbserver/pyproject.toml",
    "python/paddleserver/pyproject.toml",
    "python/pmmlserver/pyproject.toml",
    "python/sklearnserver/pyproject.toml",
    "python/xgbserver/pyproject.toml",
]

for toml_file in toml_files:
    with open(toml_file, "r") as file:
        toml_config = tomlkit.load(file)
        toml_config['tool']['poetry']['version'] = args.version

    with open(toml_file, "w") as file:
        tomlkit.dump(toml_config, file)

hack/python-sdk/update_release_version_helper.py
#!/usr/bin/env python3

# Copyright 2023 The KServe Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import tomlkit
import argparse

parser = argparse.ArgumentParser(description="Update release version in python toml files")
parser.add_argument("version", type=str, help="release version")
args, _ = parser.parse_known_args()

toml_files = [
    "python/kserve/pyproject.toml",
    "python/aiffairness/pyproject.toml",
    "python/alibiexplainer/pyproject.toml",
    "python/artexplainer/pyproject.toml",
    "python/custom_model/pyproject.toml",
    "python/custom_transformer/pyproject.toml",
    "python/lgbserver/pyproject.toml",
    "python/paddleserver/pyproject.toml",
    "python/pmmlserver/pyproject.toml",
    "python/sklearnserver/pyproject.toml",
    "python/xgbserver/pyproject.toml",
]

for toml_file in toml_files:
    with open(toml_file, "r") as file:
        toml_config = tomlkit.load(file)
        toml_config['tool']['poetry']['version'] = args.version

    with open(toml_file, "w") as file:
        tomlkit.dump(toml_config, file)

hack/python-sdk/update_release_version_helper.py
diff --git a/.github/actions/minikube-setup/action.yml b/.github/actions/minikube-setup/action.yml
index 6324ddade8a..42db32ddf93 100644
--- a/.github/actions/minikube-setup/action.yml
+++ b/.github/actions/minikube-setup/action.yml
@@ -4,17 +4,18 @@ description: 'Sets up minikube on the github runner'
 runs:
   using: "composite"
   steps:
+    - name: Install kubectl
+      uses: azure/setup-kubectl@v3
+      with:
+        version: 'v1.26.0'
     - name: Setup Minikube
-      uses: manusa/actions-setup-minikube@v2.7.2
+      uses: medyagh/setup-minikube@latest
       with:
-        minikube version: 'v1.28.0'
-        kubernetes version: 'v1.23.15'
+        minikube-version: '1.28.0'
+        kubernetes-version: 'v1.26.4'
         driver: 'none'
-        start args: --wait-timeout=120s
-        github token: ${{ env.GITHUB_TOKEN }}
-    - name: Setup port-forward
-      shell: bash
-      run: sudo apt-get install -y conntrack socat
+        wait: 'all'
+        start-args: --wait-timeout=120s
     - name: Check Kubernetes pods
       shell: bash
       run: kubectl get pods -n kube-system
diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml
index 20574497b7f..e3f6641d6b9 100644
--- a/.github/workflows/e2e-test.yml
+++ b/.github/workflows/e2e-test.yml
@@ -343,7 +343,7 @@ jobs:
           kubectl describe pods -n kserve
       - name: Patch qpext image
         run : |
-          kubectl patch configmaps -n knative-serving config-deployment --patch '{"data": {"queueSidecarImage": "kserve/qpext:${{ github.sha }}"}}'
+          kubectl patch configmaps -n knative-serving config-deployment --patch '{"data": {"queue-sidecar-image": "kserve/qpext:${{ github.sha }}"}}'
           kubectl describe configmaps -n knative-serving config-deployment
       - name: Run queue proxy extension E2E tests
         timeout-minutes: 30
diff --git a/Makefile b/Makefile
index 8b6f3b0df2b..612e2147f66 100644
--- a/Makefile
+++ b/Makefile
@@ -25,7 +25,7 @@ QPEXT_IMG ?= qpext
 CRD_OPTIONS ?= "crd:maxDescLen=0"
 KSERVE_ENABLE_SELF_SIGNED_CA ?= false
 # ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be downloaded by envtest binary.
-ENVTEST_K8S_VERSION = 1.24
+ENVTEST_K8S_VERSION = 1.26
 
 ## Location to install dependencies to
 LOCALBIN ?= $(shell pwd)/bin
diff --git a/hack/python-sdk/update_release_version.sh b/hack/python-sdk/update_release_version.sh
index 9ed05e32dd7..51ccfe11d8c 100755
--- a/hack/python-sdk/update_release_version.sh
+++ b/hack/python-sdk/update_release_version.sh
@@ -24,7 +24,6 @@ set -o pipefail
 VERSION=$1
 dirs=(
   "python/aiffairness"
-  "python/aixexplainer"
   "python/alibiexplainer"
   "python/artexplainer"
   "python/custom_model"
diff --git a/hack/python-sdk/update_release_version_helper.py b/hack/python-sdk/update_release_version_helper.py
index 26afb1d69a8..8bba0e476af 100755
--- a/hack/python-sdk/update_release_version_helper.py
+++ b/hack/python-sdk/update_release_version_helper.py
@@ -24,7 +24,6 @@
 toml_files = [
     "python/kserve/pyproject.toml",
     "python/aiffairness/pyproject.toml",
-    "python/aixexplainer/pyproject.toml",
     "python/alibiexplainer/pyproject.toml",
     "python/artexplainer/pyproject.toml",
     "python/custom_model/pyproject.toml",
diff --git a/pkg/controller/v1beta1/inferenceservice/rawkube_controller_test.go b/pkg/controller/v1beta1/inferenceservice/rawkube_controller_test.go
index e99b088fa63..8a8560d7e06 100644
--- a/pkg/controller/v1beta1/inferenceservice/rawkube_controller_test.go
+++ b/pkg/controller/v1beta1/inferenceservice/rawkube_controller_test.go
@@ -32,7 +32,7 @@ import (
 	"github.com/onsi/gomega"
 	. "github.com/onsi/gomega"
 	appsv1 "k8s.io/api/apps/v1"
-	v2beta2 "k8s.io/api/autoscaling/v2beta2"
+	autoscalingv2 "k8s.io/api/autoscaling/v2"
 	v1 "k8s.io/api/core/v1"
 	"knative.dev/pkg/apis"
 	duckv1 "knative.dev/pkg/apis/duck/v1"
@@ -436,38 +436,38 @@ var _ = Describe("v1beta1 inference service controller", func() {
 			var maxReplicas int32 = 3
 			var cpuUtilization int32 = 75
 			var stabilizationWindowSeconds int32 = 0
-			selectPolicy := v2beta2.MaxPolicySelect
-			actualHPA := &v2beta2.HorizontalPodAutoscaler{}
+			selectPolicy := autoscalingv2.MaxChangePolicySelect
+			actualHPA := &autoscalingv2.HorizontalPodAutoscaler{}
 			predictorHPAKey := types.NamespacedName{Name: constants.PredictorServiceName(serviceKey.Name),
 				Namespace: serviceKey.Namespace}
 			Eventually(func() error { return k8sClient.Get(context.TODO(), predictorHPAKey, actualHPA) }, timeout).
 				Should(Succeed())
-			expectedHPA := &v2beta2.HorizontalPodAutoscaler{
-				Spec: v2beta2.HorizontalPodAutoscalerSpec{
-					ScaleTargetRef: v2beta2.CrossVersionObjectReference{
+			expectedHPA := &autoscalingv2.HorizontalPodAutoscaler{
+				Spec: autoscalingv2.HorizontalPodAutoscalerSpec{
+					ScaleTargetRef: autoscalingv2.CrossVersionObjectReference{
 						APIVersion: "apps/v1",
 						Kind:       "Deployment",
 						Name:       constants.PredictorServiceName(serviceKey.Name),
 					},
 					MinReplicas: &minReplicas,
 					MaxReplicas: maxReplicas,
-					Metrics: []v2beta2.MetricSpec{
+					Metrics: []autoscalingv2.MetricSpec{
 						{
-							Type: v2beta2.ResourceMetricSourceType,
-							Resource: &v2beta2.ResourceMetricSource{
+							Type: autoscalingv2.ResourceMetricSourceType,
+							Resource: &autoscalingv2.ResourceMetricSource{
 								Name: v1.ResourceCPU,
-								Target: v2beta2.MetricTarget{
+								Target: autoscalingv2.MetricTarget{
 									Type:               "Utilization",
 									AverageUtilization: &cpuUtilization,
 								},
 							},
 						},
 					},
-					Behavior: &v2beta2.HorizontalPodAutoscalerBehavior{
-						ScaleUp: &v2beta2.HPAScalingRules{
+					Behavior: &autoscalingv2.HorizontalPodAutoscalerBehavior{
+						ScaleUp: &autoscalingv2.HPAScalingRules{
 							StabilizationWindowSeconds: &stabilizationWindowSeconds,
 							SelectPolicy:               &selectPolicy,
-							Policies: []v2beta2.HPAScalingPolicy{
+							Policies: []autoscalingv2.HPAScalingPolicy{
 								{
 									Type:          "Pods",
 									Value:         4,
@@ -480,10 +480,10 @@ var _ = Describe("v1beta1 inference service controller", func() {
 								},
 							},
 						},
-						ScaleDown: &v2beta2.HPAScalingRules{
+						ScaleDown: &autoscalingv2.HPAScalingRules{
 							StabilizationWindowSeconds: nil,
 							SelectPolicy:               &selectPolicy,
-							Policies: []v2beta2.HPAScalingPolicy{
+							Policies: []autoscalingv2.HPAScalingPolicy{
 								{
 									Type:          "Percent",
 									Value:         100,
@@ -868,38 +868,38 @@ var _ = Describe("v1beta1 inference service controller", func() {
 			var maxReplicas int32 = 3
 			var cpuUtilization int32 = 75
 			var stabilizationWindowSeconds int32 = 0
-			selectPolicy := v2beta2.MaxPolicySelect
-			actualHPA := &v2beta2.HorizontalPodAutoscaler{}
+			selectPolicy := autoscalingv2.MaxChangePolicySelect
+			actualHPA := &autoscalingv2.HorizontalPodAutoscaler{}
 			predictorHPAKey := types.NamespacedName{Name: constants.PredictorServiceName(serviceKey.Name),
 				Namespace: serviceKey.Namespace}
 			Eventually(func() error { return k8sClient.Get(context.TODO(), predictorHPAKey, actualHPA) }, timeout).
 				Should(Succeed())
-			expectedHPA := &v2beta2.HorizontalPodAutoscaler{
-				Spec: v2beta2.HorizontalPodAutoscalerSpec{
-					ScaleTargetRef: v2beta2.CrossVersionObjectReference{
+			expectedHPA := &autoscalingv2.HorizontalPodAutoscaler{
+				Spec: autoscalingv2.HorizontalPodAutoscalerSpec{
+					ScaleTargetRef: autoscalingv2.CrossVersionObjectReference{
 						APIVersion: "apps/v1",
 						Kind:       "Deployment",
 						Name:       constants.PredictorServiceName(serviceKey.Name),
 					},
 					MinReplicas: &minReplicas,
 					MaxReplicas: maxReplicas,
-					Metrics: []v2beta2.MetricSpec{
+					Metrics: []autoscalingv2.MetricSpec{
 						{
-							Type: v2beta2.ResourceMetricSourceType,
-							Resource: &v2beta2.ResourceMetricSource{
+							Type: autoscalingv2.ResourceMetricSourceType,
+							Resource: &autoscalingv2.ResourceMetricSource{
 								Name: v1.ResourceCPU,
-								Target: v2beta2.MetricTarget{
+								Target: autoscalingv2.MetricTarget{
 									Type:               "Utilization",
 									AverageUtilization: &cpuUtilization,
 								},
 							},
 						},
 					},
-					Behavior: &v2beta2.HorizontalPodAutoscalerBehavior{
-						ScaleUp: &v2beta2.HPAScalingRules{
+					Behavior: &autoscalingv2.HorizontalPodAutoscalerBehavior{
+						ScaleUp: &autoscalingv2.HPAScalingRules{
 							StabilizationWindowSeconds: &stabilizationWindowSeconds,
 							SelectPolicy:               &selectPolicy,
-							Policies: []v2beta2.HPAScalingPolicy{
+							Policies: []autoscalingv2.HPAScalingPolicy{
 								{
 									Type:          "Pods",
 									Value:         4,
@@ -912,10 +912,10 @@ var _ = Describe("v1beta1 inference service controller", func() {
 								},
 							},
 						},
-						ScaleDown: &v2beta2.HPAScalingRules{
+						ScaleDown: &autoscalingv2.HPAScalingRules{
 							StabilizationWindowSeconds: nil,
 							SelectPolicy:               &selectPolicy,
-							Policies: []v2beta2.HPAScalingPolicy{
+							Policies: []autoscalingv2.HPAScalingPolicy{
 								{
 									Type:          "Percent",
 									Value:         100,
@@ -1301,38 +1301,38 @@ var _ = Describe("v1beta1 inference service controller", func() {
 			var maxReplicas int32 = 3
 			var cpuUtilization int32 = 75
 			var stabilizationWindowSeconds int32 = 0
-			selectPolicy := v2beta2.MaxPolicySelect
-			actualHPA := &v2beta2.HorizontalPodAutoscaler{}
+			selectPolicy := autoscalingv2.MaxChangePolicySelect
+			actualHPA := &autoscalingv2.HorizontalPodAutoscaler{}
 			predictorHPAKey := types.NamespacedName{Name: constants.PredictorServiceName(serviceKey.Name),
 				Namespace: serviceKey.Namespace}
 			Eventually(func() error { return k8sClient.Get(context.TODO(), predictorHPAKey, actualHPA) }, timeout).
 				Should(Succeed())
-			expectedHPA := &v2beta2.HorizontalPodAutoscaler{
-				Spec: v2beta2.HorizontalPodAutoscalerSpec{
-					ScaleTargetRef: v2beta2.CrossVersionObjectReference{
+			expectedHPA := &autoscalingv2.HorizontalPodAutoscaler{
+				Spec: autoscalingv2.HorizontalPodAutoscalerSpec{
+					ScaleTargetRef: autoscalingv2.CrossVersionObjectReference{
 						APIVersion: "apps/v1",
 						Kind:       "Deployment",
 						Name:       constants.PredictorServiceName(serviceKey.Name),
 					},
 					MinReplicas: &minReplicas,
 					MaxReplicas: maxReplicas,
-					Metrics: []v2beta2.MetricSpec{
+					Metrics: []autoscalingv2.MetricSpec{
 						{
-							Type: v2beta2.ResourceMetricSourceType,
-							Resource: &v2beta2.ResourceMetricSource{
+							Type: autoscalingv2.ResourceMetricSourceType,
+							Resource: &autoscalingv2.ResourceMetricSource{
 								Name: v1.ResourceCPU,
-								Target: v2beta2.MetricTarget{
+								Target: autoscalingv2.MetricTarget{
 									Type:               "Utilization",
 									AverageUtilization: &cpuUtilization,
 								},
 							},
 						},
 					},
-					Behavior: &v2beta2.HorizontalPodAutoscalerBehavior{
-						ScaleUp: &v2beta2.HPAScalingRules{
+					Behavior: &autoscalingv2.HorizontalPodAutoscalerBehavior{
+						ScaleUp: &autoscalingv2.HPAScalingRules{
 							StabilizationWindowSeconds: &stabilizationWindowSeconds,
 							SelectPolicy:               &selectPolicy,
-							Policies: []v2beta2.HPAScalingPolicy{
+							Policies: []autoscalingv2.HPAScalingPolicy{
 								{
 									Type:          "Pods",
 									Value:         4,
@@ -1345,10 +1345,10 @@ var _ = Describe("v1beta1 inference service controller", func() {
 								},
 							},
 						},
-						ScaleDown: &v2beta2.HPAScalingRules{
+						ScaleDown: &autoscalingv2.HPAScalingRules{
 							StabilizationWindowSeconds: nil,
 							SelectPolicy:               &selectPolicy,
-							Policies: []v2beta2.HPAScalingPolicy{
+							Policies: []autoscalingv2.HPAScalingPolicy{
 								{
 									Type:          "Percent",
 									Value:         100,
diff --git a/pkg/controller/v1beta1/inferenceservice/reconcilers/hpa/hpa_reconciler.go b/pkg/controller/v1beta1/inferenceservice/reconcilers/hpa/hpa_reconciler.go
index 733234b55b5..823eb5317df 100644
--- a/pkg/controller/v1beta1/inferenceservice/reconcilers/hpa/hpa_reconciler.go
+++ b/pkg/controller/v1beta1/inferenceservice/reconcilers/hpa/hpa_reconciler.go
@@ -19,7 +19,7 @@ import (
 
 	"github.com/kserve/kserve/pkg/apis/serving/v1beta1"
 	"github.com/kserve/kserve/pkg/constants"
-	v2beta2 "k8s.io/api/autoscaling/v2beta2"
+	autoscalingv2 "k8s.io/api/autoscaling/v2"
 	corev1 "k8s.io/api/core/v1"
 	"k8s.io/apimachinery/pkg/api/equality"
 	apierr "k8s.io/apimachinery/pkg/api/errors"
@@ -36,7 +36,7 @@ var log = logf.Log.WithName("HPAReconciler")
 type HPAReconciler struct {
 	client       client.Client
 	scheme       *runtime.Scheme
-	HPA          *v2beta2.HorizontalPodAutoscaler
+	HPA          *autoscalingv2.HorizontalPodAutoscaler
 	componentExt *v1beta1.ComponentExtensionSpec
 }
 
@@ -52,8 +52,8 @@ func NewHPAReconciler(client client.Client,
 	}
 }
 
-func getHPAMetrics(metadata metav1.ObjectMeta, componentExt *v1beta1.ComponentExtensionSpec) []v2beta2.MetricSpec {
-	var metrics []v2beta2.MetricSpec
+func getHPAMetrics(metadata metav1.ObjectMeta, componentExt *v1beta1.ComponentExtensionSpec) []autoscalingv2.MetricSpec {
+	var metrics []autoscalingv2.MetricSpec
 	var utilization int32
 	annotations := metadata.Annotations
 
@@ -74,14 +74,14 @@ func getHPAMetrics(metadata metav1.ObjectMeta, componentExt *v1beta1.ComponentEx
 		resourceName = corev1.ResourceName(*componentExt.ScaleMetric)
 	}
 
-	metricTarget := v2beta2.MetricTarget{
+	metricTarget := autoscalingv2.MetricTarget{
 		Type:               "Utilization",
 		AverageUtilization: &utilization,
 	}
 
-	ms := v2beta2.MetricSpec{
-		Type: v2beta2.ResourceMetricSourceType,
-		Resource: &v2beta2.ResourceMetricSource{
+	ms := autoscalingv2.MetricSpec{
+		Type: autoscalingv2.ResourceMetricSourceType,
+		Resource: &autoscalingv2.ResourceMetricSource{
 			Name:   resourceName,
 			Target: metricTarget,
 		},
@@ -92,7 +92,7 @@ func getHPAMetrics(metadata metav1.ObjectMeta, componentExt *v1beta1.ComponentEx
 }
 
 func createHPA(componentMeta metav1.ObjectMeta,
-	componentExt *v1beta1.ComponentExtensionSpec) *v2beta2.HorizontalPodAutoscaler {
+	componentExt *v1beta1.ComponentExtensionSpec) *autoscalingv2.HorizontalPodAutoscaler {
 	var minReplicas int32
 	if componentExt.MinReplicas == nil || (*componentExt.MinReplicas) < constants.DefaultMinReplicas {
 		minReplicas = int32(constants.DefaultMinReplicas)
@@ -105,10 +105,10 @@ func createHPA(componentMeta metav1.ObjectMeta,
 		maxReplicas = minReplicas
 	}
 	metrics := getHPAMetrics(componentMeta, componentExt)
-	hpa := &v2beta2.HorizontalPodAutoscaler{
+	hpa := &autoscalingv2.HorizontalPodAutoscaler{
 		ObjectMeta: componentMeta,
-		Spec: v2beta2.HorizontalPodAutoscalerSpec{
-			ScaleTargetRef: v2beta2.CrossVersionObjectReference{
+		Spec: autoscalingv2.HorizontalPodAutoscalerSpec{
+			ScaleTargetRef: autoscalingv2.CrossVersionObjectReference{
 				APIVersion: "apps/v1",
 				Kind:       "Deployment",
 				Name:       componentMeta.Name,
@@ -117,16 +117,16 @@ func createHPA(componentMeta metav1.ObjectMeta,
 			MaxReplicas: maxReplicas,
 
 			Metrics:  metrics,
-			Behavior: &v2beta2.HorizontalPodAutoscalerBehavior{},
+			Behavior: &autoscalingv2.HorizontalPodAutoscalerBehavior{},
 		},
 	}
 	return hpa
 }
 
 // checkHPAExist checks if the hpa exists?
-func (r *HPAReconciler) checkHPAExist(client client.Client) (constants.CheckResultType, *v2beta2.HorizontalPodAutoscaler, error) {
+func (r *HPAReconciler) checkHPAExist(client client.Client) (constants.CheckResultType, *autoscalingv2.HorizontalPodAutoscaler, error) {
 	//get hpa
-	existingHPA := &v2beta2.HorizontalPodAutoscaler{}
+	existingHPA := &autoscalingv2.HorizontalPodAutoscaler{}
 	err := client.Get(context.TODO(), types.NamespacedName{
 		Namespace: r.HPA.ObjectMeta.Namespace,
 		Name:      r.HPA.ObjectMeta.Name,
@@ -145,14 +145,14 @@ func (r *HPAReconciler) checkHPAExist(client client.Client) (constants.CheckResu
 	return constants.CheckResultUpdate, existingHPA, nil
 }
 
-func semanticHPAEquals(desired, existing *v2beta2.HorizontalPodAutoscaler) bool {
+func semanticHPAEquals(desired, existing *autoscalingv2.HorizontalPodAutoscaler) bool {
 	return equality.Semantic.DeepEqual(desired.Spec.Metrics, existing.Spec.Metrics) &&
 		equality.Semantic.DeepEqual(desired.Spec.MaxReplicas, existing.Spec.MaxReplicas) &&
 		equality.Semantic.DeepEqual(*desired.Spec.MinReplicas, *existing.Spec.MinReplicas)
 }
 
 // Reconcile ...
-func (r *HPAReconciler) Reconcile() (*v2beta2.HorizontalPodAutoscaler, error) {
+func (r *HPAReconciler) Reconcile() (*autoscalingv2.HorizontalPodAutoscaler, error) {
 	//reconcile Service
 	checkResult, existingHPA, err := r.checkHPAExist(r.client)
 	log.Info("service reconcile", "checkResult", checkResult, "err", err)
diff --git a/python/aiffairness/poetry.lock b/python/aiffairness/poetry.lock
index 430720c7f07..1ea264e83ed 100644
--- a/python/aiffairness/poetry.lock
+++ b/python/aiffairness/poetry.lock
@@ -920,7 +920,7 @@ cloudevents = "^1.6.2"
 fastapi = "^0.95.0"
 grpcio = "^1.34.0"
 httpx = "^0.23.0"
-kubernetes = "^18.20.0"
+kubernetes = ">=23.3.0"
 numpy = "^1.21.5"
 orjson = "^3.8.0"
 pandas = "^1.3.5"
@@ -944,14 +944,14 @@ url = "../kserve"
 
 [[package]]
 name = "kubernetes"
-version = "18.20.0"
+version = "26.1.0"
 description = "Kubernetes python client"
 category = "main"
 optional = false
-python-versions = "*"
+python-versions = ">=3.6"
 files = [
-    {file = "kubernetes-18.20.0-py2.py3-none-any.whl", hash = "sha256:ff31ec17437293e7d4e1459f1228c42d27c7724dfb56b4868aba7a901a5b72c9"},
-    {file = "kubernetes-18.20.0.tar.gz", hash = "sha256:0c72d00e7883375bd39ae99758425f5e6cb86388417cf7cc84305c211b2192cf"},
+    {file = "kubernetes-26.1.0-py2.py3-none-any.whl", hash = "sha256:e3db6800abf7e36c38d2629b5cb6b74d10988ee0cba6fba45595a7cbe60c0042"},
+    {file = "kubernetes-26.1.0.tar.gz", hash = "sha256:5854b0c508e8d217ca205591384ab58389abdae608576f9c9afc35a3c76a366c"},
 ]
 
 [package.dependencies]
diff --git a/python/alibiexplainer/poetry.lock b/python/alibiexplainer/poetry.lock
index 165460179ab..ef8d4bbf27b 100644
--- a/python/alibiexplainer/poetry.lock
+++ b/python/alibiexplainer/poetry.lock
@@ -2003,7 +2003,7 @@ fastapi = "^0.95.0"
 google-cloud-storage = {version = "^1.20.0", optional = true}
 grpcio = "^1.34.0"
 httpx = "^0.23.0"
-kubernetes = "^18.20.0"
+kubernetes = ">=23.3.0"
 numpy = "^1.21.5"
 orjson = "^3.8.0"
 pandas = "^1.3.5"
@@ -2029,14 +2029,14 @@ url = "../kserve"
 
 [[package]]
 name = "kubernetes"
-version = "18.20.0"
+version = "26.1.0"
 description = "Kubernetes python client"
 category = "main"
 optional = false
-python-versions = "*"
+python-versions = ">=3.6"
 files = [
-    {file = "kubernetes-18.20.0-py2.py3-none-any.whl", hash = "sha256:ff31ec17437293e7d4e1459f1228c42d27c7724dfb56b4868aba7a901a5b72c9"},
-    {file = "kubernetes-18.20.0.tar.gz", hash = "sha256:0c72d00e7883375bd39ae99758425f5e6cb86388417cf7cc84305c211b2192cf"},
+    {file = "kubernetes-26.1.0-py2.py3-none-any.whl", hash = "sha256:e3db6800abf7e36c38d2629b5cb6b74d10988ee0cba6fba45595a7cbe60c0042"},
+    {file = "kubernetes-26.1.0.tar.gz", hash = "sha256:5854b0c508e8d217ca205591384ab58389abdae608576f9c9afc35a3c76a366c"},
 ]
 
 [package.dependencies]
diff --git a/python/artexplainer/poetry.lock b/python/artexplainer/poetry.lock
index 2809256af52..49daef42acf 100644
--- a/python/artexplainer/poetry.lock
+++ b/python/artexplainer/poetry.lock
@@ -1042,7 +1042,7 @@ cloudevents = "^1.6.2"
 fastapi = "^0.95.0"
 grpcio = "^1.34.0"
 httpx = "^0.23.0"
-kubernetes = "^18.20.0"
+kubernetes = ">=23.3.0"
 numpy = "^1.21.5"
 orjson = "^3.8.0"
 pandas = "^1.3.5"
@@ -1066,14 +1066,14 @@ url = "../kserve"
 
 [[package]]
 name = "kubernetes"
-version = "18.20.0"
+version = "26.1.0"
 description = "Kubernetes python client"
 category = "main"
 optional = false
-python-versions = "*"
+python-versions = ">=3.6"
 files = [
-    {file = "kubernetes-18.20.0-py2.py3-none-any.whl", hash = "sha256:ff31ec17437293e7d4e1459f1228c42d27c7724dfb56b4868aba7a901a5b72c9"},
-    {file = "kubernetes-18.20.0.tar.gz", hash = "sha256:0c72d00e7883375bd39ae99758425f5e6cb86388417cf7cc84305c211b2192cf"},
+    {file = "kubernetes-26.1.0-py2.py3-none-any.whl", hash = "sha256:e3db6800abf7e36c38d2629b5cb6b74d10988ee0cba6fba45595a7cbe60c0042"},
+    {file = "kubernetes-26.1.0.tar.gz", hash = "sha256:5854b0c508e8d217ca205591384ab58389abdae608576f9c9afc35a3c76a366c"},
 ]
 
 [package.dependencies]
diff --git a/python/custom_model/poetry.lock b/python/custom_model/poetry.lock
index 6460ea54ee1..5952ca852b4 100644
--- a/python/custom_model/poetry.lock
+++ b/python/custom_model/poetry.lock
@@ -793,7 +793,7 @@ cloudevents = "^1.6.2"
 fastapi = "^0.95.0"
 grpcio = "^1.34.0"
 httpx = "^0.23.0"
-kubernetes = "^18.20.0"
+kubernetes = ">=23.3.0"
 numpy = "^1.21.5"
 orjson = "^3.8.0"
 pandas = "^1.3.5"
@@ -817,14 +817,14 @@ url = "../kserve"
 
 [[package]]
 name = "kubernetes"
-version = "18.20.0"
+version = "26.1.0"
 description = "Kubernetes python client"
 category = "main"
 optional = false
-python-versions = "*"
+python-versions = ">=3.6"
 files = [
-    {file = "kubernetes-18.20.0-py2.py3-none-any.whl", hash = "sha256:ff31ec17437293e7d4e1459f1228c42d27c7724dfb56b4868aba7a901a5b72c9"},
-    {file = "kubernetes-18.20.0.tar.gz", hash = "sha256:0c72d00e7883375bd39ae99758425f5e6cb86388417cf7cc84305c211b2192cf"},
+    {file = "kubernetes-26.1.0-py2.py3-none-any.whl", hash = "sha256:e3db6800abf7e36c38d2629b5cb6b74d10988ee0cba6fba45595a7cbe60c0042"},
+    {file = "kubernetes-26.1.0.tar.gz", hash = "sha256:5854b0c508e8d217ca205591384ab58389abdae608576f9c9afc35a3c76a366c"},
 ]
 
 [package.dependencies]
diff --git a/python/custom_transformer/poetry.lock b/python/custom_transformer/poetry.lock
index 67e72ea99e7..2dbc903f174 100644
--- a/python/custom_transformer/poetry.lock
+++ b/python/custom_transformer/poetry.lock
@@ -820,7 +820,7 @@ cloudevents = "^1.6.2"
 fastapi = "^0.95.0"
 grpcio = "^1.34.0"
 httpx = "^0.23.0"
-kubernetes = "^18.20.0"
+kubernetes = ">=23.3.0"
 numpy = "^1.21.5"
 orjson = "^3.8.0"
 pandas = "^1.3.5"
@@ -844,14 +844,14 @@ url = "../kserve"
 
 [[package]]
 name = "kubernetes"
-version = "18.20.0"
+version = "26.1.0"
 description = "Kubernetes python client"
 category = "main"
 optional = false
-python-versions = "*"
+python-versions = ">=3.6"
 files = [
-    {file = "kubernetes-18.20.0-py2.py3-none-any.whl", hash = "sha256:ff31ec17437293e7d4e1459f1228c42d27c7724dfb56b4868aba7a901a5b72c9"},
-    {file = "kubernetes-18.20.0.tar.gz", hash = "sha256:0c72d00e7883375bd39ae99758425f5e6cb86388417cf7cc84305c211b2192cf"},
+    {file = "kubernetes-26.1.0-py2.py3-none-any.whl", hash = "sha256:e3db6800abf7e36c38d2629b5cb6b74d10988ee0cba6fba45595a7cbe60c0042"},
+    {file = "kubernetes-26.1.0.tar.gz", hash = "sha256:5854b0c508e8d217ca205591384ab58389abdae608576f9c9afc35a3c76a366c"},
 ]
 
 [package.dependencies]
diff --git a/python/kserve/poetry.lock b/python/kserve/poetry.lock
index 31fab8b49fe..0cc84fde3af 100644
--- a/python/kserve/poetry.lock
+++ b/python/kserve/poetry.lock
@@ -250,22 +250,25 @@ files = [
 
 [[package]]
 name = "attrs"
-version = "22.2.0"
+version = "23.1.0"
 description = "Classes Without Boilerplate"
 category = "main"
 optional = false
-python-versions = ">=3.6"
+python-versions = ">=3.7"
 files = [
-    {file = "attrs-22.2.0-py3-none-any.whl", hash = "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836"},
-    {file = "attrs-22.2.0.tar.gz", hash = "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99"},
+    {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"},
+    {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"},
 ]
 
+[package.dependencies]
+importlib-metadata = {version = "*", markers = "python_version < \"3.8\""}
+
 [package.extras]
-cov = ["attrs[tests]", "coverage-enable-subprocess", "coverage[toml] (>=5.3)"]
-dev = ["attrs[docs,tests]"]
-docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope.interface"]
-tests = ["attrs[tests-no-zope]", "zope.interface"]
-tests-no-zope = ["cloudpickle", "cloudpickle", "hypothesis", "hypothesis", "mypy (>=0.971,<0.990)", "mypy (>=0.971,<0.990)", "pympler", "pympler", "pytest (>=4.3.0)", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-mypy-plugins", "pytest-xdist[psutil]", "pytest-xdist[psutil]"]
+cov = ["attrs[tests]", "coverage[toml] (>=5.3)"]
+dev = ["attrs[docs,tests]", "pre-commit"]
+docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"]
+tests = ["attrs[tests-no-zope]", "zope-interface"]
+tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
 
 [[package]]
 name = "avro"
@@ -326,14 +329,14 @@ six = ">=1.12.0"
 
 [[package]]
 name = "azure-storage-blob"
-version = "12.15.0"
+version = "12.16.0"
 description = "Microsoft Azure Blob Storage Client Library for Python"
 category = "main"
 optional = true
 python-versions = ">=3.7"
 files = [
-    {file = "azure-storage-blob-12.15.0.zip", hash = "sha256:f8b8d582492740ab16744455408342fb8e4c8897b64a8a3fc31743844722c2f2"},
-    {file = "azure_storage_blob-12.15.0-py3-none-any.whl", hash = "sha256:08d8807c577c63a436740627927c1a03a97c963efc29af5c818aed906590e1cf"},
+    {file = "azure-storage-blob-12.16.0.zip", hash = "sha256:43b45f19a518a5c6895632f263b3825ebc23574f25cc84b66e1630a6160e466f"},
+    {file = "azure_storage_blob-12.16.0-py3-none-any.whl", hash = "sha256:91bb192b2a97939c4259c72373bac0f41e30810bbc853d5184f0f45904eacafd"},
 ]
 
 [package.dependencies]
@@ -381,18 +384,18 @@ wcwidth = ">=0.1.4"
 
 [[package]]
 name = "boto3"
-version = "1.26.109"
+version = "1.26.115"
 description = "The AWS SDK for Python"
 category = "main"
 optional = true
 python-versions = ">= 3.7"
 files = [
-    {file = "boto3-1.26.109-py3-none-any.whl", hash = "sha256:a1c48674c2ff25ddced599c51d14ba7a6dbe9fd51641e8d63a6887bebd9712d7"},
-    {file = "boto3-1.26.109.tar.gz", hash = "sha256:d388cb7f54f1a3056f91ffcfb5cf18b226454204e5df7a5c10774718c3fbb166"},
+    {file = "boto3-1.26.115-py3-none-any.whl", hash = "sha256:deb53ad15ff0e75ae0be6d7115a2d34e4bafb0541484485f0feb61dabdfb5513"},
+    {file = "boto3-1.26.115.tar.gz", hash = "sha256:2272a060005bf8299f7342cbf1344304eb44b7060cddba6784f676e3bc737bb8"},
 ]
 
 [package.dependencies]
-botocore = ">=1.29.109,<1.30.0"
+botocore = ">=1.29.115,<1.30.0"
 jmespath = ">=0.7.1,<2.0.0"
 s3transfer = ">=0.6.0,<0.7.0"
 
@@ -401,14 +404,14 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"]
 
 [[package]]
 name = "botocore"
-version = "1.29.109"
+version = "1.29.115"
 description = "Low-level, data-driven core of boto 3."
 category = "main"
 optional = true
 python-versions = ">= 3.7"
 files = [
-    {file = "botocore-1.29.109-py3-none-any.whl", hash = "sha256:cf43dddb7e2ba5425fe19fad68b10043307b61d9103d06566f1ab6034e38b8db"},
-    {file = "botocore-1.29.109.tar.gz", hash = "sha256:2e449525f0ccedb31fdb962a77caac48b4c486c23515b84c5989a39a1823a024"},
+    {file = "botocore-1.29.115-py3-none-any.whl", hash = "sha256:dff327977d7c9f98f2dc54b51b8f70326952dd50ae23b885fdfa8bfeec014b76"},
+    {file = "botocore-1.29.115.tar.gz", hash = "sha256:58eee8cf8f4f3e515df29f6dc535dd86ed3f4cea40999c5bc74640ff40bdc71f"},
 ]
 
 [package.dependencies]
@@ -735,31 +738,31 @@ toml = ["tomli"]
 
 [[package]]
 name = "cryptography"
-version = "40.0.1"
+version = "40.0.2"
 description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
 category = "main"
 optional = true
 python-versions = ">=3.6"
 files = [
-    {file = "cryptography-40.0.1-cp36-abi3-macosx_10_12_universal2.whl", hash = "sha256:918cb89086c7d98b1b86b9fdb70c712e5a9325ba6f7d7cfb509e784e0cfc6917"},
-    {file = "cryptography-40.0.1-cp36-abi3-macosx_10_12_x86_64.whl", hash = "sha256:9618a87212cb5200500e304e43691111570e1f10ec3f35569fdfcd17e28fd797"},
-    {file = "cryptography-40.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a4805a4ca729d65570a1b7cac84eac1e431085d40387b7d3bbaa47e39890b88"},
-    {file = "cryptography-40.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63dac2d25c47f12a7b8aa60e528bfb3c51c5a6c5a9f7c86987909c6c79765554"},
-    {file = "cryptography-40.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0a4e3406cfed6b1f6d6e87ed243363652b2586b2d917b0609ca4f97072994405"},
-    {file = "cryptography-40.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1e0af458515d5e4028aad75f3bb3fe7a31e46ad920648cd59b64d3da842e4356"},
-    {file = "cryptography-40.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:d8aa3609d337ad85e4eb9bb0f8bcf6e4409bfb86e706efa9a027912169e89122"},
-    {file = "cryptography-40.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cf91e428c51ef692b82ce786583e214f58392399cf65c341bc7301d096fa3ba2"},
-    {file = "cryptography-40.0.1-cp36-abi3-win32.whl", hash = "sha256:650883cc064297ef3676b1db1b7b1df6081794c4ada96fa457253c4cc40f97db"},
-    {file = "cryptography-40.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:a805a7bce4a77d51696410005b3e85ae2839bad9aa38894afc0aa99d8e0c3160"},
-    {file = "cryptography-40.0.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cd033d74067d8928ef00a6b1327c8ea0452523967ca4463666eeba65ca350d4c"},
-    {file = "cryptography-40.0.1-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d36bbeb99704aabefdca5aee4eba04455d7a27ceabd16f3b3ba9bdcc31da86c4"},
-    {file = "cryptography-40.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:32057d3d0ab7d4453778367ca43e99ddb711770477c4f072a51b3ca69602780a"},
-    {file = "cryptography-40.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:f5d7b79fa56bc29580faafc2ff736ce05ba31feaa9d4735048b0de7d9ceb2b94"},
-    {file = "cryptography-40.0.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7c872413353c70e0263a9368c4993710070e70ab3e5318d85510cc91cce77e7c"},
-    {file = "cryptography-40.0.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:28d63d75bf7ae4045b10de5413fb1d6338616e79015999ad9cf6fc538f772d41"},
-    {file = "cryptography-40.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6f2bbd72f717ce33100e6467572abaedc61f1acb87b8d546001328d7f466b778"},
-    {file = "cryptography-40.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cc3a621076d824d75ab1e1e530e66e7e8564e357dd723f2533225d40fe35c60c"},
-    {file = "cryptography-40.0.1.tar.gz", hash = "sha256:2803f2f8b1e95f614419926c7e6f55d828afc614ca5ed61543877ae668cc3472"},
+    {file = "cryptography-40.0.2-cp36-abi3-macosx_10_12_universal2.whl", hash = "sha256:8f79b5ff5ad9d3218afb1e7e20ea74da5f76943ee5edb7f76e56ec5161ec782b"},
+    {file = "cryptography-40.0.2-cp36-abi3-macosx_10_12_x86_64.whl", hash = "sha256:05dc219433b14046c476f6f09d7636b92a1c3e5808b9a6536adf4932b3b2c440"},
+    {file = "cryptography-40.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4df2af28d7bedc84fe45bd49bc35d710aede676e2a4cb7fc6d103a2adc8afe4d"},
+    {file = "cryptography-40.0.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dcca15d3a19a66e63662dc8d30f8036b07be851a8680eda92d079868f106288"},
+    {file = "cryptography-40.0.2-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:a04386fb7bc85fab9cd51b6308633a3c271e3d0d3eae917eebab2fac6219b6d2"},
+    {file = "cryptography-40.0.2-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:adc0d980fd2760c9e5de537c28935cc32b9353baaf28e0814df417619c6c8c3b"},
+    {file = "cryptography-40.0.2-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:d5a1bd0e9e2031465761dfa920c16b0065ad77321d8a8c1f5ee331021fda65e9"},
+    {file = "cryptography-40.0.2-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:a95f4802d49faa6a674242e25bfeea6fc2acd915b5e5e29ac90a32b1139cae1c"},
+    {file = "cryptography-40.0.2-cp36-abi3-win32.whl", hash = "sha256:aecbb1592b0188e030cb01f82d12556cf72e218280f621deed7d806afd2113f9"},
+    {file = "cryptography-40.0.2-cp36-abi3-win_amd64.whl", hash = "sha256:b12794f01d4cacfbd3177b9042198f3af1c856eedd0a98f10f141385c809a14b"},
+    {file = "cryptography-40.0.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:142bae539ef28a1c76794cca7f49729e7c54423f615cfd9b0b1fa90ebe53244b"},
+    {file = "cryptography-40.0.2-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:956ba8701b4ffe91ba59665ed170a2ebbdc6fc0e40de5f6059195d9f2b33ca0e"},
+    {file = "cryptography-40.0.2-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4f01c9863da784558165f5d4d916093737a75203a5c5286fde60e503e4276c7a"},
+    {file = "cryptography-40.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:3daf9b114213f8ba460b829a02896789751626a2a4e7a43a28ee77c04b5e4958"},
+    {file = "cryptography-40.0.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48f388d0d153350f378c7f7b41497a54ff1513c816bcbbcafe5b829e59b9ce5b"},
+    {file = "cryptography-40.0.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c0764e72b36a3dc065c155e5b22f93df465da9c39af65516fe04ed3c68c92636"},
+    {file = "cryptography-40.0.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:cbaba590180cba88cb99a5f76f90808a624f18b169b90a4abb40c1fd8c19420e"},
+    {file = "cryptography-40.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7a38250f433cd41df7fcb763caa3ee9362777fdb4dc642b9a349721d2bf47404"},
+    {file = "cryptography-40.0.2.tar.gz", hash = "sha256:c33c0d32b8594fa647d2e01dbccc303478e16fdd7cf98652d5b3ed11aa5e5c99"},
 ]
 
 [package.dependencies]
@@ -834,14 +837,14 @@ testing = ["pre-commit"]
 
 [[package]]
 name = "fastapi"
-version = "0.95.0"
+version = "0.95.1"
 description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production"
 category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
-    {file = "fastapi-0.95.0-py3-none-any.whl", hash = "sha256:daf73bbe844180200be7966f68e8ec9fd8be57079dff1bacb366db32729e6eb5"},
-    {file = "fastapi-0.95.0.tar.gz", hash = "sha256:99d4fdb10e9dd9a24027ac1d0bd4b56702652056ca17a6c8721eec4ad2f14e18"},
+    {file = "fastapi-0.95.1-py3-none-any.whl", hash = "sha256:a870d443e5405982e1667dfe372663abf10754f246866056336d7f01c21dab07"},
+    {file = "fastapi-0.95.1.tar.gz", hash = "sha256:9569f0a381f8a457ec479d90fa01005cfddaae07546eb1f3fa035bc4797ae7d5"},
 ]
 
 [package.dependencies]
@@ -856,19 +859,19 @@ test = ["anyio[trio] (>=3.2.1,<4.0.0)", "black (==23.1.0)", "coverage[toml] (>=6
 
 [[package]]
 name = "filelock"
-version = "3.11.0"
+version = "3.12.0"
 description = "A platform independent file lock."
 category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
-    {file = "filelock-3.11.0-py3-none-any.whl", hash = "sha256:f08a52314748335c6460fc8fe40cd5638b85001225db78c2aa01c8c0db83b318"},
-    {file = "filelock-3.11.0.tar.gz", hash = "sha256:3618c0da67adcc0506b015fd11ef7faf1b493f0b40d87728e19986b536890c37"},
+    {file = "filelock-3.12.0-py3-none-any.whl", hash = "sha256:ad98852315c2ab702aeb628412cbf7e95b7ce8c3bf9565670b4eaecf1db370a9"},
+    {file = "filelock-3.12.0.tar.gz", hash = "sha256:fc03ae43288c013d2ea83c8597001b1129db351aad9c57fe2409327916b8e718"},
 ]
 
 [package.extras]
-docs = ["furo (>=2023.3.27)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)"]
-testing = ["covdefaults (>=2.3)", "coverage (>=7.2.2)", "diff-cover (>=7.5)", "pytest (>=7.2.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)", "pytest-timeout (>=2.1)"]
+docs = ["furo (>=2023.3.27)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"]
+testing = ["covdefaults (>=2.3)", "coverage (>=7.2.3)", "diff-cover (>=7.5)", "pytest (>=7.3.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)", "pytest-timeout (>=2.1)"]
 
 [[package]]
 name = "frozenlist"
@@ -979,14 +982,14 @@ grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0dev)"]
 
 [[package]]
 name = "google-auth"
-version = "2.17.2"
+version = "2.17.3"
 description = "Google Authentication Library"
 category = "main"
 optional = false
 python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*"
 files = [
-    {file = "google-auth-2.17.2.tar.gz", hash = "sha256:295c80ebb95eac74003c07a696cf3ef6b414e9230ae8894f3843f8215fd2aa56"},
-    {file = "google_auth-2.17.2-py2.py3-none-any.whl", hash = "sha256:544536a43d44dff0f64222e4d027d124989fcb9c10979687e589e1694fba9c94"},
+    {file = "google-auth-2.17.3.tar.gz", hash = "sha256:ce311e2bc58b130fddf316df57c9b3943c2a7b4f6ec31de9663a9333e4064efc"},
+    {file = "google_auth-2.17.3-py2.py3-none-any.whl", hash = "sha256:f586b274d3eb7bd932ea424b1c702a30e0393a2e2bc4ca3eae8263ffd8be229f"},
 ]
 
 [package.dependencies]
@@ -1315,14 +1318,14 @@ files = [
 
 [[package]]
 name = "importlib-metadata"
-version = "6.3.0"
+version = "6.5.0"
 description = "Read metadata from Python packages"
 category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
-    {file = "importlib_metadata-6.3.0-py3-none-any.whl", hash = "sha256:8f8bd2af397cf33bd344d35cfe7f489219b7d14fc79a3f854b75b8417e9226b0"},
-    {file = "importlib_metadata-6.3.0.tar.gz", hash = "sha256:23c2bcae4762dfb0bbe072d358faec24957901d75b6c4ab11172c0c982532402"},
+    {file = "importlib_metadata-6.5.0-py3-none-any.whl", hash = "sha256:03ba783c3a2c69d751b109fc0c94a62c51f581b3d6acf8ed1331b6d5729321ff"},
+    {file = "importlib_metadata-6.5.0.tar.gz", hash = "sha256:7a8bdf1bc3a726297f5cfbc999e6e7ff6b4fa41b26bba4afc580448624460045"},
 ]
 
 [package.dependencies]
@@ -1433,14 +1436,14 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-
 
 [[package]]
 name = "kubernetes"
-version = "18.20.0"
+version = "26.1.0"
 description = "Kubernetes python client"
 category = "main"
 optional = false
-python-versions = "*"
+python-versions = ">=3.6"
 files = [
-    {file = "kubernetes-18.20.0-py2.py3-none-any.whl", hash = "sha256:ff31ec17437293e7d4e1459f1228c42d27c7724dfb56b4868aba7a901a5b72c9"},
-    {file = "kubernetes-18.20.0.tar.gz", hash = "sha256:0c72d00e7883375bd39ae99758425f5e6cb86388417cf7cc84305c211b2192cf"},
+    {file = "kubernetes-26.1.0-py2.py3-none-any.whl", hash = "sha256:e3db6800abf7e36c38d2629b5cb6b74d10988ee0cba6fba45595a7cbe60c0042"},
+    {file = "kubernetes-26.1.0.tar.gz", hash = "sha256:5854b0c508e8d217ca205591384ab58389abdae608576f9c9afc35a3c76a366c"},
 ]
 
 [package.dependencies]
@@ -1460,18 +1463,18 @@ adal = ["adal (>=1.0.2)"]
 
 [[package]]
 name = "msal"
-version = "1.21.0"
+version = "1.22.0"
 description = "The Microsoft Authentication Library (MSAL) for Python library enables your app to access the Microsoft Cloud by supporting authentication of users with Microsoft Azure Active Directory accounts (AAD) and Microsoft Accounts (MSA) using industry standard OAuth2 and OpenID Connect."
 category = "main"
 optional = true
 python-versions = "*"
 files = [
-    {file = "msal-1.21.0-py2.py3-none-any.whl", hash = "sha256:e8444617c1eccdff7bb73f5d4f94036002accea4a2c05f8f39c9efb5bd2b0c6a"},
-    {file = "msal-1.21.0.tar.gz", hash = "sha256:96b5c867830fd116e5f7d0ec8ef1b238b4cda4d1aea86d8fecf518260e136fbf"},
+    {file = "msal-1.22.0-py2.py3-none-any.whl", hash = "sha256:9120b7eafdf061c92f7b3d744e5f325fca35873445fa8ffebb40b1086a13dd58"},
+    {file = "msal-1.22.0.tar.gz", hash = "sha256:8a82f5375642c1625c89058018430294c109440dce42ea667d466c2cab520acd"},
 ]
 
 [package.dependencies]
-cryptography = ">=0.6,<41"
+cryptography = ">=0.6,<43"
 PyJWT = {version = ">=1.0.0,<3", extras = ["crypto"]}
 requests = ">=2.0.0,<3"
 
@@ -1906,14 +1909,14 @@ files = [
 
 [[package]]
 name = "packaging"
-version = "23.0"
+version = "23.1"
 description = "Core utilities for Python packages"
 category = "main"
 optional = false
 python-versions = ">=3.7"
 files = [
-    {file = "packaging-23.0-py3-none-any.whl", hash = "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2"},
-    {file = "packaging-23.0.tar.gz", hash = "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97"},
+    {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"},
+    {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"},
 ]
 
 [[package]]
@@ -2036,37 +2039,37 @@ tests = ["pytest (>=5.4.1)", "pytest-cov (>=2.8.1)", "pytest-mypy (>=0.8.0)", "p
 
 [[package]]
 name = "portforward"
-version = "0.3.1"
+version = "0.4.5"
 description = "Kubernetes Port-Forward Go-Edition For Python"
 category = "dev"
 optional = false
 python-versions = ">=3.6"
 files = [
-    {file = "portforward-0.3.1-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:c3944cefac0faaa5dd6eb5c64dfed7eb78e777a08b148c3a8a0c4b0e0ce62824"},
-    {file = "portforward-0.3.1-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:8afcf09d98f332a3ca5c85b60688ff8cc673476f288966a7e369f62cd9209d4c"},
-    {file = "portforward-0.3.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1062fe98abdf0ad031826c8386764aa1857833ef71f41de76f504e5f81b802e"},
-    {file = "portforward-0.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:f1d9518250efbfac0bb897c8f73658285a6c40fcc90c81c71d8637751793957d"},
-    {file = "portforward-0.3.1-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:c65fd005f626a358cf534d77de1a8819c4d0f5d1363df000bcc37edd990d0317"},
-    {file = "portforward-0.3.1-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:bc53cba41d519dd423f2c4c3642eec73676212bc9aa1462854ec1d06a2e2e8f4"},
-    {file = "portforward-0.3.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f3d0842359921382e07185db884f528fb60bb9af8041360e2dca148bea1f3a7"},
-    {file = "portforward-0.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:159f620f600d88898aa78d49547461c861d7815681b5df42fb89cf0e74352e5f"},
-    {file = "portforward-0.3.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:813845446dc0164238a86c03d91c056fdde3d380d3fdc58bf730ecafcea34d62"},
-    {file = "portforward-0.3.1-cp36-cp36m-macosx_13_0_arm64.whl", hash = "sha256:1a22b0e3271f2b9916d105623a5bba6dabf307617655ddf3c7c3a7838d0e8e93"},
-    {file = "portforward-0.3.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d28254168a654f18e25b7bcd0ea2af8aec39701f9c3298b0e15f678ab4c88ac5"},
-    {file = "portforward-0.3.1-cp36-cp36m-win_amd64.whl", hash = "sha256:6045c935a22e95df9861edd865e61a08aab1978d7d47dd0e0902973d350cce0a"},
-    {file = "portforward-0.3.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:0fc0299b580d2ef304a5a14417af7b3d77a3a3c26dca53286f93b12603abc87a"},
-    {file = "portforward-0.3.1-cp37-cp37m-macosx_13_0_arm64.whl", hash = "sha256:7ba9119287a7f5d1b83f20275134321959c7a73d6cbb16c617f374a4f00200e6"},
-    {file = "portforward-0.3.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4fd945a161af843938fe097e1044adadff6ecc8390327d4072daa35a972356c1"},
-    {file = "portforward-0.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:69f6a5880c8a7188f10be2ad5c1ae74e483e291b83d6db37e452c5db7124e6cd"},
-    {file = "portforward-0.3.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:54551adc9255c6f15c5583f7461b046da74ae5c4a90315c9a7e9c6aec295061c"},
-    {file = "portforward-0.3.1-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:7dccc58a60c42b1a6780fc65c11b12b01f4d5957c4ed54fec6a84e8b91699c41"},
-    {file = "portforward-0.3.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb7b9fa86c71e5cfb713d2423417adddd75a833ac210355a607f43707ef43d19"},
-    {file = "portforward-0.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:5fa4f4150b150b4c4a792a8116f157bd0352204b84570754d5eef0217e15e851"},
-    {file = "portforward-0.3.1-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:c1aeb2b6a101334d5407076361161cbf5514c98e261b045f3f0f72a8708c2f96"},
-    {file = "portforward-0.3.1-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:e7f5c9b272e68c05158c948d366e34687ceaf00485efb9ea76d126a55ba32d10"},
-    {file = "portforward-0.3.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eff214065450e0b9182d19685c9b19949b8dd32e429dd12d69f1f3f404a9427f"},
-    {file = "portforward-0.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:f8c7a527d9563982776ee9c86f381a8fd8926e57fb651f49b0ca546901abef07"},
-    {file = "portforward-0.3.1.tar.gz", hash = "sha256:3ff41f53a64b95b46a7c9f8ee827fae08bac6fd8a558d5cb816467f0a854223f"},
+    {file = "portforward-0.4.5-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:0ab9e2c155de1738d898a05dd46cdcfdaefd0f2bc9c09b527855dfe225f0b698"},
+    {file = "portforward-0.4.5-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:5588ade92061c71fb667a3ee3b9ad2ffdcd7076ebdb8f91d330f1f54e48a1fc2"},
+    {file = "portforward-0.4.5-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ebbf8f4108e522b2469bd3734cab45ced9400dc41037ceb842394bcc36580b05"},
+    {file = "portforward-0.4.5-cp310-cp310-win_amd64.whl", hash = "sha256:d15084b138eaa159845f8e6953756676923213068e2a016d92650e3f77f44f63"},
+    {file = "portforward-0.4.5-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:7e548c97fc224cc20630c82fc57730edf9eb83cb167ca349edf548e0abc04f09"},
+    {file = "portforward-0.4.5-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:3f55a6a04b5d764c7b35b0160660d465480985656f31290a09b8bd1b82dd1095"},
+    {file = "portforward-0.4.5-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbb41002bce9bba240922ea76786bdb3c0a4aa4d44f4f1b204c5325c6437c273"},
+    {file = "portforward-0.4.5-cp311-cp311-win_amd64.whl", hash = "sha256:1b12fe25062c94e75f6b389c689c8842ddf85283bdee45877bb3b8ad043d7a6c"},
+    {file = "portforward-0.4.5-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:018879fec59ca60d389cdaebd2421bf8357bfdba9a218926a4a9974a25c13c9f"},
+    {file = "portforward-0.4.5-cp36-cp36m-macosx_13_0_arm64.whl", hash = "sha256:19ce3146ea223f6725552f59655e73ed84ed282371ebe2ad664ed7a00b34cf97"},
+    {file = "portforward-0.4.5-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d854d21f5de42ecc2d6a57469f2a8b2041f219e0a133e2f05345e758c4d90bee"},
+    {file = "portforward-0.4.5-cp36-cp36m-win_amd64.whl", hash = "sha256:fc2019777ee83df3bbad22cfca7ab0239405da532486ec713d8d8c01176bd103"},
+    {file = "portforward-0.4.5-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:6224e640106609e2943b1f32715a853e964867cf2f503f42e29dcb7a44b5c925"},
+    {file = "portforward-0.4.5-cp37-cp37m-macosx_13_0_arm64.whl", hash = "sha256:64c2744e95cac8e073965fc02ce7884357569eba6a8993c2e1df3c5b91644d19"},
+    {file = "portforward-0.4.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a70e06deaee9f7b9b2d19d130fc26bf318468325e5ee02629d5dbd6fa483c240"},
+    {file = "portforward-0.4.5-cp37-cp37m-win_amd64.whl", hash = "sha256:980bb9aa797953a65c4d4fa52d183b14fa9d1b722a933266f28f8b66030385b5"},
+    {file = "portforward-0.4.5-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:f856a1d9a75062bbf59a9c30340a337fdbe4372090160e9ecb3366cf76ba6735"},
+    {file = "portforward-0.4.5-cp38-cp38-macosx_13_0_arm64.whl", hash = "sha256:307969f41cfb8f154e5898c12025b8d43154713f1d5a0e84df874df907e0315f"},
+    {file = "portforward-0.4.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81071b563f0398c017330c255e3766e12603b8ac7ab3a990f03a6092e38dd9cd"},
+    {file = "portforward-0.4.5-cp38-cp38-win_amd64.whl", hash = "sha256:64c65707e7e76adad8fa7a8be29852a3ecb6e39acf157a09b33375d57d10f103"},
+    {file = "portforward-0.4.5-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:e8422a914a745201e3737c33366b0b71fed9ab5b2ca5658fd2d62e2018b28ce6"},
+    {file = "portforward-0.4.5-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:dbb52bdf6d2c8f5f430ede9abc5fc322f48455a284ab093f9a0d48e46e0f815c"},
+    {file = "portforward-0.4.5-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bcdee23d9e1ea582c0d1b4b4bbaa6b4e72de5382e9cbd02cb888946ed0c0ef2e"},
+    {file = "portforward-0.4.5-cp39-cp39-win_amd64.whl", hash = "sha256:cf0446d19b9268e19ef3311001ecd703af2512d8d449fbc3cf7e7c49e5cb21f4"},
+    {file = "portforward-0.4.5.tar.gz", hash = "sha256:0af1c501f2e74b2ac1c8997624bae1f55b938e51656c9516c7605201812927f9"},
 ]
 
 [[package]]
@@ -2118,26 +2121,26 @@ files = [
 
 [[package]]
 name = "psutil"
-version = "5.9.4"
+version = "5.9.5"
 description = "Cross-platform lib for process and system monitoring in Python."
 category = "main"
 optional = false
 python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
 files = [
-    {file = "psutil-5.9.4-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c1ca331af862803a42677c120aff8a814a804e09832f166f226bfd22b56feee8"},
-    {file = "psutil-5.9.4-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:68908971daf802203f3d37e78d3f8831b6d1014864d7a85937941bb35f09aefe"},
-    {file = "psutil-5.9.4-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:3ff89f9b835100a825b14c2808a106b6fdcc4b15483141482a12c725e7f78549"},
-    {file = "psutil-5.9.4-cp27-cp27m-win32.whl", hash = "sha256:852dd5d9f8a47169fe62fd4a971aa07859476c2ba22c2254d4a1baa4e10b95ad"},
-    {file = "psutil-5.9.4-cp27-cp27m-win_amd64.whl", hash = "sha256:9120cd39dca5c5e1c54b59a41d205023d436799b1c8c4d3ff71af18535728e94"},
-    {file = "psutil-5.9.4-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:6b92c532979bafc2df23ddc785ed116fced1f492ad90a6830cf24f4d1ea27d24"},
-    {file = "psutil-5.9.4-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:efeae04f9516907be44904cc7ce08defb6b665128992a56957abc9b61dca94b7"},
-    {file = "psutil-5.9.4-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:54d5b184728298f2ca8567bf83c422b706200bcbbfafdc06718264f9393cfeb7"},
-    {file = "psutil-5.9.4-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:16653106f3b59386ffe10e0bad3bb6299e169d5327d3f187614b1cb8f24cf2e1"},
-    {file = "psutil-5.9.4-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54c0d3d8e0078b7666984e11b12b88af2db11d11249a8ac8920dd5ef68a66e08"},
-    {file = "psutil-5.9.4-cp36-abi3-win32.whl", hash = "sha256:149555f59a69b33f056ba1c4eb22bb7bf24332ce631c44a319cec09f876aaeff"},
-    {file = "psutil-5.9.4-cp36-abi3-win_amd64.whl", hash = "sha256:fd8522436a6ada7b4aad6638662966de0d61d241cb821239b2ae7013d41a43d4"},
-    {file = "psutil-5.9.4-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:6001c809253a29599bc0dfd5179d9f8a5779f9dffea1da0f13c53ee568115e1e"},
-    {file = "psutil-5.9.4.tar.gz", hash = "sha256:3d7f9739eb435d4b1338944abe23f49584bde5395f27487d2ee25ad9a8774a62"},
+    {file = "psutil-5.9.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:be8929ce4313f9f8146caad4272f6abb8bf99fc6cf59344a3167ecd74f4f203f"},
+    {file = "psutil-5.9.5-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ab8ed1a1d77c95453db1ae00a3f9c50227ebd955437bcf2a574ba8adbf6a74d5"},
+    {file = "psutil-5.9.5-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:4aef137f3345082a3d3232187aeb4ac4ef959ba3d7c10c33dd73763fbc063da4"},
+    {file = "psutil-5.9.5-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ea8518d152174e1249c4f2a1c89e3e6065941df2fa13a1ab45327716a23c2b48"},
+    {file = "psutil-5.9.5-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:acf2aef9391710afded549ff602b5887d7a2349831ae4c26be7c807c0a39fac4"},
+    {file = "psutil-5.9.5-cp27-none-win32.whl", hash = "sha256:5b9b8cb93f507e8dbaf22af6a2fd0ccbe8244bf30b1baad6b3954e935157ae3f"},
+    {file = "psutil-5.9.5-cp27-none-win_amd64.whl", hash = "sha256:8c5f7c5a052d1d567db4ddd231a9d27a74e8e4a9c3f44b1032762bd7b9fdcd42"},
+    {file = "psutil-5.9.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3c6f686f4225553615612f6d9bc21f1c0e305f75d7d8454f9b46e901778e7217"},
+    {file = "psutil-5.9.5-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7a7dd9997128a0d928ed4fb2c2d57e5102bb6089027939f3b722f3a210f9a8da"},
+    {file = "psutil-5.9.5-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89518112647f1276b03ca97b65cc7f64ca587b1eb0278383017c2a0dcc26cbe4"},
+    {file = "psutil-5.9.5-cp36-abi3-win32.whl", hash = "sha256:104a5cc0e31baa2bcf67900be36acde157756b9c44017b86b2c049f11957887d"},
+    {file = "psutil-5.9.5-cp36-abi3-win_amd64.whl", hash = "sha256:b258c0c1c9d145a1d5ceffab1134441c4c5113b2417fafff7315a917a026c3c9"},
+    {file = "psutil-5.9.5-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:c607bb3b57dc779d55e1554846352b4e358c10fff3abf3514a7a6601beebdb30"},
+    {file = "psutil-5.9.5.tar.gz", hash = "sha256:5410638e4df39c54d957fc51ce03048acd8e6d60abc0f5107af51e5fb566eb3c"},
 ]
 
 [package.extras]
@@ -2312,14 +2315,14 @@ files = [
 
 [[package]]
 name = "pytest"
-version = "7.3.0"
+version = "7.3.1"
 description = "pytest: simple powerful testing with Python"
 category = "dev"
 optional = false
 python-versions = ">=3.7"
 files = [
-    {file = "pytest-7.3.0-py3-none-any.whl", hash = "sha256:933051fa1bfbd38a21e73c3960cebdad4cf59483ddba7696c48509727e17f201"},
-    {file = "pytest-7.3.0.tar.gz", hash = "sha256:58ecc27ebf0ea643ebfdf7fb1249335da761a00c9f955bcd922349bcb68ee57d"},
+    {file = "pytest-7.3.1-py3-none-any.whl", hash = "sha256:3799fa815351fea3a5e96ac7e503a96fa51cc9942c3753cda7651b93c1cfa362"},
+    {file = "pytest-7.3.1.tar.gz", hash = "sha256:434afafd78b1d78ed0addf160ad2b77a30d35d4bdf8af234fe621919d9ed15e3"},
 ]
 
 [package.dependencies]
@@ -3131,4 +3134,4 @@ storage = ["azure-identity", "azure-storage-blob", "azure-storage-file-share", "
 [metadata]
 lock-version = "2.0"
 python-versions = ">=3.7.1,<3.11"
-content-hash = "2a2a219059f6068ffcba785acc1e9fcb40ca8f7868abd0b8c56b9379e1420397"
+content-hash = "ff4caf1a5c12e21d49ac8f16338c78bfa776f8ae42d72bd17c5058e3faaebf7d"
diff --git a/python/kserve/pyproject.toml b/python/kserve/pyproject.toml
index fe74c71599d..20a327961c6 100644
--- a/python/kserve/pyproject.toml
+++ b/python/kserve/pyproject.toml
@@ -37,7 +37,7 @@ uvicorn = "^0.16.0"
 fastapi = "^0.95.0"
 cloudevents = "^1.6.2"
 six = "^1.16.0"
-kubernetes = "^18.20.0"
+kubernetes = ">=23.3.0"
 python-dateutil = "^2.8.0"
 numpy = "^1.21.5"
 psutil = "^5.9.0"
@@ -81,7 +81,7 @@ pytest-cov = "^4.0.0"
 pytest-xdist = "^3.0.2"
 pytest-asyncio = "^0.20.2"
 mypy = "^0.991"
-portforward = "^0.3.0"
+portforward = "^0.4.3"
 avro = "^1.11.0"
 tomlkit = "^0.11.6"
 
diff --git a/python/lgbserver/poetry.lock b/python/lgbserver/poetry.lock
index e5048911606..13ebd73e655 100644
--- a/python/lgbserver/poetry.lock
+++ b/python/lgbserver/poetry.lock
@@ -1386,7 +1386,7 @@ fastapi = "^0.95.0"
 google-cloud-storage = {version = "^1.20.0", optional = true}
 grpcio = "^1.34.0"
 httpx = "^0.23.0"
-kubernetes = "^18.20.0"
+kubernetes = ">=23.3.0"
 numpy = "^1.21.5"
 orjson = "^3.8.0"
 pandas = "^1.3.5"
@@ -1412,14 +1412,14 @@ url = "../kserve"
 
 [[package]]
 name = "kubernetes"
-version = "18.20.0"
+version = "26.1.0"
 description = "Kubernetes python client"
 category = "main"
 optional = false
-python-versions = "*"
+python-versions = ">=3.6"
 files = [
-    {file = "kubernetes-18.20.0-py2.py3-none-any.whl", hash = "sha256:ff31ec17437293e7d4e1459f1228c42d27c7724dfb56b4868aba7a901a5b72c9"},
-    {file = "kubernetes-18.20.0.tar.gz", hash = "sha256:0c72d00e7883375bd39ae99758425f5e6cb86388417cf7cc84305c211b2192cf"},
+    {file = "kubernetes-26.1.0-py2.py3-none-any.whl", hash = "sha256:e3db6800abf7e36c38d2629b5cb6b74d10988ee0cba6fba45595a7cbe60c0042"},
+    {file = "kubernetes-26.1.0.tar.gz", hash = "sha256:5854b0c508e8d217ca205591384ab58389abdae608576f9c9afc35a3c76a366c"},
 ]
 
 [package.dependencies]
diff --git a/python/paddleserver/poetry.lock b/python/paddleserver/poetry.lock
index 4e1be2f453d..de61eed28fb 100644
--- a/python/paddleserver/poetry.lock
+++ b/python/paddleserver/poetry.lock
@@ -1444,7 +1444,7 @@ fastapi = "^0.95.0"
 google-cloud-storage = {version = "^1.20.0", optional = true}
 grpcio = "^1.34.0"
 httpx = "^0.23.0"
-kubernetes = "^18.20.0"
+kubernetes = ">=23.3.0"
 numpy = "^1.21.5"
 orjson = "^3.8.0"
 pandas = "^1.3.5"
@@ -1470,14 +1470,14 @@ url = "../kserve"
 
 [[package]]
 name = "kubernetes"
-version = "18.20.0"
+version = "26.1.0"
 description = "Kubernetes python client"
 category = "main"
 optional = false
-python-versions = "*"
+python-versions = ">=3.6"
 files = [
-    {file = "kubernetes-18.20.0-py2.py3-none-any.whl", hash = "sha256:ff31ec17437293e7d4e1459f1228c42d27c7724dfb56b4868aba7a901a5b72c9"},
-    {file = "kubernetes-18.20.0.tar.gz", hash = "sha256:0c72d00e7883375bd39ae99758425f5e6cb86388417cf7cc84305c211b2192cf"},
+    {file = "kubernetes-26.1.0-py2.py3-none-any.whl", hash = "sha256:e3db6800abf7e36c38d2629b5cb6b74d10988ee0cba6fba45595a7cbe60c0042"},
+    {file = "kubernetes-26.1.0.tar.gz", hash = "sha256:5854b0c508e8d217ca205591384ab58389abdae608576f9c9afc35a3c76a366c"},
 ]
 
 [package.dependencies]
diff --git a/python/pmmlserver/poetry.lock b/python/pmmlserver/poetry.lock
index 1317442a7c8..59ad821ef92 100644
--- a/python/pmmlserver/poetry.lock
+++ b/python/pmmlserver/poetry.lock
@@ -1489,7 +1489,7 @@ fastapi = "^0.95.0"
 google-cloud-storage = {version = "^1.20.0", optional = true}
 grpcio = "^1.34.0"
 httpx = "^0.23.0"
-kubernetes = "^18.20.0"
+kubernetes = ">=23.3.0"
 numpy = "^1.21.5"
 orjson = "^3.8.0"
 pandas = "^1.3.5"
@@ -1515,14 +1515,14 @@ url = "../kserve"
 
 [[package]]
 name = "kubernetes"
-version = "18.20.0"
+version = "26.1.0"
 description = "Kubernetes python client"
 category = "main"
 optional = false
-python-versions = "*"
+python-versions = ">=3.6"
 files = [
-    {file = "kubernetes-18.20.0-py2.py3-none-any.whl", hash = "sha256:ff31ec17437293e7d4e1459f1228c42d27c7724dfb56b4868aba7a901a5b72c9"},
-    {file = "kubernetes-18.20.0.tar.gz", hash = "sha256:0c72d00e7883375bd39ae99758425f5e6cb86388417cf7cc84305c211b2192cf"},
+    {file = "kubernetes-26.1.0-py2.py3-none-any.whl", hash = "sha256:e3db6800abf7e36c38d2629b5cb6b74d10988ee0cba6fba45595a7cbe60c0042"},
+    {file = "kubernetes-26.1.0.tar.gz", hash = "sha256:5854b0c508e8d217ca205591384ab58389abdae608576f9c9afc35a3c76a366c"},
 ]
 
 [package.dependencies]
diff --git a/python/sklearnserver/poetry.lock b/python/sklearnserver/poetry.lock
index d5b47ff6ddf..be0cb781cb6 100644
--- a/python/sklearnserver/poetry.lock
+++ b/python/sklearnserver/poetry.lock
@@ -1314,7 +1314,7 @@ fastapi = "^0.95.0"
 google-cloud-storage = {version = "^1.20.0", optional = true}
 grpcio = "^1.34.0"
 httpx = "^0.23.0"
-kubernetes = "^18.20.0"
+kubernetes = ">=23.3.0"
 numpy = "^1.21.5"
 orjson = "^3.8.0"
 pandas = "^1.3.5"
@@ -1340,14 +1340,14 @@ url = "../kserve"
 
 [[package]]
 name = "kubernetes"
-version = "18.20.0"
+version = "26.1.0"
 description = "Kubernetes python client"
 category = "main"
 optional = false
-python-versions = "*"
+python-versions = ">=3.6"
 files = [
-    {file = "kubernetes-18.20.0-py2.py3-none-any.whl", hash = "sha256:ff31ec17437293e7d4e1459f1228c42d27c7724dfb56b4868aba7a901a5b72c9"},
-    {file = "kubernetes-18.20.0.tar.gz", hash = "sha256:0c72d00e7883375bd39ae99758425f5e6cb86388417cf7cc84305c211b2192cf"},
+    {file = "kubernetes-26.1.0-py2.py3-none-any.whl", hash = "sha256:e3db6800abf7e36c38d2629b5cb6b74d10988ee0cba6fba45595a7cbe60c0042"},
+    {file = "kubernetes-26.1.0.tar.gz", hash = "sha256:5854b0c508e8d217ca205591384ab58389abdae608576f9c9afc35a3c76a366c"},
 ]
 
 [package.dependencies]
diff --git a/python/xgbserver/poetry.lock b/python/xgbserver/poetry.lock
index 4262b157dd6..80f91c6e307 100644
--- a/python/xgbserver/poetry.lock
+++ b/python/xgbserver/poetry.lock
@@ -1386,7 +1386,7 @@ fastapi = "^0.95.0"
 google-cloud-storage = {version = "^1.20.0", optional = true}
 grpcio = "^1.34.0"
 httpx = "^0.23.0"
-kubernetes = "^18.20.0"
+kubernetes = ">=23.3.0"
 numpy = "^1.21.5"
 orjson = "^3.8.0"
 pandas = "^1.3.5"
@@ -1412,14 +1412,14 @@ url = "../kserve"
 
 [[package]]
 name = "kubernetes"
-version = "18.20.0"
+version = "26.1.0"
 description = "Kubernetes python client"
 category = "main"
 optional = false
-python-versions = "*"
+python-versions = ">=3.6"
 files = [
-    {file = "kubernetes-18.20.0-py2.py3-none-any.whl", hash = "sha256:ff31ec17437293e7d4e1459f1228c42d27c7724dfb56b4868aba7a901a5b72c9"},
-    {file = "kubernetes-18.20.0.tar.gz", hash = "sha256:0c72d00e7883375bd39ae99758425f5e6cb86388417cf7cc84305c211b2192cf"},
+    {file = "kubernetes-26.1.0-py2.py3-none-any.whl", hash = "sha256:e3db6800abf7e36c38d2629b5cb6b74d10988ee0cba6fba45595a7cbe60c0042"},
+    {file = "kubernetes-26.1.0.tar.gz", hash = "sha256:5854b0c508e8d217ca205591384ab58389abdae608576f9c9afc35a3c76a366c"},
 ]
 
 [package.dependencies]
diff --git a/test/e2e/qpext/test_qpext.py b/test/e2e/qpext/test_qpext.py
index fbb4b64afcd..ffd3834e5aa 100644
--- a/test/e2e/qpext/test_qpext.py
+++ b/test/e2e/qpext/test_qpext.py
@@ -33,7 +33,7 @@
 
 ENABLE_METRIC_AGG = "serving.kserve.io/enable-metric-aggregation"
 METRICS_AGG_PORT = 9088
-METRICS_PATH = "/metrics"
+METRICS_PATH = "metrics"
 
 
 def test_qpext_kserve():
@@ -86,6 +86,7 @@ def send_metrics_request(kserve_client, service_name):
 
     url = f"http://localhost:{METRICS_AGG_PORT}/{METRICS_PATH}"
     with portforward.forward(KSERVE_TEST_NAMESPACE, pod_name, METRICS_AGG_PORT, METRICS_AGG_PORT):
+        logging.info(f"metrics request url: {url}")
         response = requests.get(url)
         logging.info(f"response: {response}, content: {response.content}")
         logging.info("Got response code %s, content %s", response.status_code, response.content)
diff --git a/test/scripts/gh-actions/run-e2e-tests.sh b/test/scripts/gh-actions/run-e2e-tests.sh
index ac3e992c61d..dbc49b99f15 100755
--- a/test/scripts/gh-actions/run-e2e-tests.sh
+++ b/test/scripts/gh-actions/run-e2e-tests.sh
@@ -23,5 +23,5 @@ set -o pipefail
 echo "Starting E2E functional tests ..."
 source python/kserve/.venv/bin/activate
 pushd test/e2e >/dev/null
-  pytest -m "$1" --ignore=qpext
+  pytest -m "$1" --ignore=qpext --log-level=INFO
 popd
diff --git a/test/scripts/gh-actions/run-qpext-test.sh b/test/scripts/gh-actions/run-qpext-test.sh
index f18a725c8ee..868d7927514 100755
--- a/test/scripts/gh-actions/run-qpext-test.sh
+++ b/test/scripts/gh-actions/run-qpext-test.sh
@@ -23,5 +23,5 @@ set -o pipefail
 echo "Starting E2E queue proxy extension tests ..."
 source python/kserve/.venv/bin/activate
 pushd test/e2e >/dev/null
-  pytest qpext
+  pytest --log-level=INFO qpext
 popd
diff --git a/test/scripts/gh-actions/setup-deps.sh b/test/scripts/gh-actions/setup-deps.sh
index 645c258abfa..73c3e83d285 100755
--- a/test/scripts/gh-actions/setup-deps.sh
+++ b/test/scripts/gh-actions/setup-deps.sh
@@ -23,8 +23,8 @@ set -o pipefail
 
 SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]:-$0}"; )" &> /dev/null && pwd 2> /dev/null; )";
 
-ISTIO_VERSION="1.12.0"
-KNATIVE_VERSION="knative-v1.4.0"
+ISTIO_VERSION="1.17.2"
+KNATIVE_VERSION="knative-v1.9.0"
 CERT_MANAGER_VERSION="v1.5.0"
 YQ_VERSION="v4.28.1"
 
@@ -58,7 +58,7 @@ spec:
 EOF
 
 echo "Installing Knative serving ..."
-pushd ${SCRIPT_DIR}/../../overlays/knative >/dev/null
+pushd "${SCRIPT_DIR}"/../../overlays/knative >/dev/null
   curl -s -O -L https://github.com/knative/serving/releases/download/${KNATIVE_VERSION}/serving-core.yaml
   curl -s -O -L https://github.com/knative/net-istio/releases/download/${KNATIVE_VERSION}/release.yaml
 
@@ -74,14 +74,19 @@ kubectl wait --for=condition=Ready pods --all --timeout=300s -n knative-serving
 # echo "Add knative hpa..."
 # kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.0.0/serving-hpa.yaml
 
-# Skip tag resolution for certain domains
 # sleep to avoid knative webhook timeout error
 sleep 5
 # Retry if configmap patch fails
 for i in 1 2 3; do
+  # Skip tag resolution for certain domains
   kubectl patch cm config-deployment --patch '{"data":{"registries-skipping-tag-resolving":"nvcr.io,index.docker.io"}}' -n knative-serving && break || sleep 15
 done
 
+echo "Patching knative external domain ..."
+# Patch the external domain as the default domain svc.cluster.local is not exposed on ingress (from knative 1.8)
+for i in 1 2 3; do kubectl patch cm config-domain --patch '{"data":{"example.com":""}}' -n knative-serving && break || sleep 15; done
+kubectl describe cm config-domain -n knative-serving
+
 echo "Installing cert-manager ..."
 kubectl create namespace cert-manager
 sleep 2
diff --git a/test/scripts/gh-actions/setup-kserve.sh b/test/scripts/gh-actions/setup-kserve.sh
index f4384250d0a..dd4630cf008 100755
--- a/test/scripts/gh-actions/setup-kserve.sh
+++ b/test/scripts/gh-actions/setup-kserve.sh
@@ -46,5 +46,5 @@ export PATH="$PATH:$POETRY_HOME/bin"
 echo "Installing KServe Python SDK ..."
 pushd python/kserve >/dev/null
     poetry config virtualenvs.in-project true
-    poetry version $(cat ${../python/VERSION}) && poetry install --with=test --no-interaction
+    poetry version $(cat ../VERSION) && poetry install --with=test --no-interaction
 popd

No matches for kind \"HorizontalPodAutoscaler\" in version \"autoscaling/v2beta2\
/kind bug

**What steps did you take and what happened:**
Deploy kserve in raw mode on kubernetes 1.26 where autoscaling/v2beta2 is no longer available


**What did you expect to happen:**
Kserve should support v2 of the api

