diff --git a/bundle/next/eclipse-che-preview-kubernetes/manifests/che-operator.clusterserviceversion.yaml b/bundle/next/eclipse-che-preview-kubernetes/manifests/che-operator.clusterserviceversion.yaml index 1b681f694..59ec31c80 100644 --- a/bundle/next/eclipse-che-preview-kubernetes/manifests/che-operator.clusterserviceversion.yaml +++ b/bundle/next/eclipse-che-preview-kubernetes/manifests/che-operator.clusterserviceversion.yaml @@ -83,7 +83,7 @@ metadata: operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 repository: https://github.com/eclipse-che/che-operator support: Eclipse Foundation - name: eclipse-che-preview-kubernetes.v7.36.0-287.next + name: eclipse-che-preview-kubernetes.v7.36.0-288.next namespace: placeholder spec: apiservicedefinitions: {} @@ -749,12 +749,6 @@ spec: - get - patch - update - - apiGroups: - - extensions - resources: - - ingresses - verbs: - - '*' - apiGroups: - monitoring.coreos.com resources: @@ -762,6 +756,12 @@ spec: verbs: - create - get + - apiGroups: + - networking.k8s.io + resources: + - ingresses + verbs: + - '*' - apiGroups: - oauth.openshift.io resources: @@ -1174,4 +1174,4 @@ spec: maturity: stable provider: name: Eclipse Foundation - version: 7.36.0-287.next + version: 7.36.0-288.next diff --git a/bundle/next/eclipse-che-preview-openshift/manifests/che-operator.clusterserviceversion.yaml b/bundle/next/eclipse-che-preview-openshift/manifests/che-operator.clusterserviceversion.yaml index 40f368d39..e6448b634 100644 --- a/bundle/next/eclipse-che-preview-openshift/manifests/che-operator.clusterserviceversion.yaml +++ b/bundle/next/eclipse-che-preview-openshift/manifests/che-operator.clusterserviceversion.yaml @@ -76,7 +76,7 @@ metadata: operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 repository: https://github.com/eclipse-che/che-operator support: Eclipse Foundation - name: eclipse-che-preview-openshift.v7.36.0-287.next + name: eclipse-che-preview-openshift.v7.36.0-288.next namespace: placeholder spec: apiservicedefinitions: {} @@ -798,12 +798,6 @@ spec: - get - patch - update - - apiGroups: - - extensions - resources: - - ingresses - verbs: - - '*' - apiGroups: - monitoring.coreos.com resources: @@ -811,6 +805,12 @@ spec: verbs: - create - get + - apiGroups: + - networking.k8s.io + resources: + - ingresses + verbs: + - '*' - apiGroups: - oauth.openshift.io resources: @@ -1243,4 +1243,4 @@ spec: maturity: stable provider: name: Eclipse Foundation - version: 7.36.0-287.next + version: 7.36.0-288.next diff --git a/config/rbac/cluster_role.yaml b/config/rbac/cluster_role.yaml index 6c721940a..3417ebfb0 100644 --- a/config/rbac/cluster_role.yaml +++ b/config/rbac/cluster_role.yaml @@ -558,12 +558,6 @@ rules: - get - patch - update - - apiGroups: - - extensions - resources: - - ingresses - verbs: - - '*' - apiGroups: - monitoring.coreos.com resources: @@ -571,6 +565,12 @@ rules: verbs: - create - get + - apiGroups: + - networking.k8s.io + resources: + - ingresses + verbs: + - '*' - apiGroups: - oauth.openshift.io resources: diff --git a/controllers/devworkspace/controller.go b/controllers/devworkspace/controller.go index ee532ba26..f8ff85326 100644 --- a/controllers/devworkspace/controller.go +++ b/controllers/devworkspace/controller.go @@ -34,7 +34,7 @@ import ( routev1 "github.com/openshift/api/route/v1" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" - "k8s.io/api/extensions/v1beta1" + networkingv1 "k8s.io/api/networking/v1" rbac "k8s.io/api/rbac/v1" "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -105,7 +105,7 @@ func (r *CheClusterReconciler) SetupWithManager(mgr ctrl.Manager) error { bld := ctrl.NewControllerManagedBy(mgr). For(&checlusterv1.CheCluster{}). Owns(&corev1.Service{}). - Owns(&v1beta1.Ingress{}). + Owns(&networkingv1.Ingress{}). Owns(&corev1.ConfigMap{}). Owns(&appsv1.Deployment{}). Owns(&corev1.Pod{}). @@ -403,7 +403,7 @@ func (r *CheClusterReconciler) detectCheHost(ctx context.Context, cluster *checl host = list.Items[0].Spec.Host } else { - list := v1beta1.IngressList{} + list := networkingv1.IngressList{} err := r.client.List(ctx, &list, &client.ListOptions{ Namespace: cluster.Namespace, LabelSelector: lbls, diff --git a/controllers/devworkspace/controller_test.go b/controllers/devworkspace/controller_test.go index ff7b5ed9e..b3886b845 100644 --- a/controllers/devworkspace/controller_test.go +++ b/controllers/devworkspace/controller_test.go @@ -19,7 +19,7 @@ import ( routev1 "github.com/openshift/api/route/v1" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" - extensions "k8s.io/api/extensions/v1beta1" + networkingv1 "k8s.io/api/networking/v1" "k8s.io/api/node/v1alpha1" rbac "k8s.io/api/rbac/v1" "k8s.io/utils/pointer" @@ -38,7 +38,7 @@ func createTestScheme() *runtime.Scheme { scheme := runtime.NewScheme() utilruntime.Must(v1alpha1.AddToScheme(scheme)) - utilruntime.Must(extensions.AddToScheme(scheme)) + utilruntime.Must(networkingv1.AddToScheme(scheme)) utilruntime.Must(corev1.AddToScheme(scheme)) utilruntime.Must(appsv1.AddToScheme(scheme)) utilruntime.Must(rbac.AddToScheme(scheme)) @@ -459,14 +459,14 @@ func TestExternalGatewayDetection(t *testing.T) { cl := fake.NewFakeClientWithScheme(scheme, v1Cluster, - &extensions.Ingress{ + &networkingv1.Ingress{ ObjectMeta: metav1.ObjectMeta{ Name: "ingress", Namespace: ns, Labels: deploy.GetLabels(v1Cluster, "test-che"), }, - Spec: extensions.IngressSpec{ - Rules: []extensions.IngressRule{ + Spec: networkingv1.IngressSpec{ + Rules: []networkingv1.IngressRule{ { Host: "ingress.host", }, diff --git a/controllers/devworkspace/solver/che_routing.go b/controllers/devworkspace/solver/che_routing.go index d76f66f07..29934cff8 100644 --- a/controllers/devworkspace/solver/che_routing.go +++ b/controllers/devworkspace/solver/che_routing.go @@ -30,7 +30,7 @@ import ( "github.com/google/go-cmp/cmp/cmpopts" routeV1 "github.com/openshift/api/route/v1" corev1 "k8s.io/api/core/v1" - "k8s.io/api/extensions/v1beta1" + networkingv1 "k8s.io/api/networking/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "sigs.k8s.io/controller-runtime/pkg/client" @@ -422,7 +422,7 @@ func findServiceForPort(port int32, objs *solvers.RoutingObjects) *corev1.Servic return nil } -func findIngressForEndpoint(machineName string, endpoint dw.Endpoint, objs *solvers.RoutingObjects) *v1beta1.Ingress { +func findIngressForEndpoint(machineName string, endpoint dw.Endpoint, objs *solvers.RoutingObjects) *networkingv1.Ingress { for i := range objs.Ingresses { ingress := &objs.Ingresses[i] @@ -435,7 +435,7 @@ func findIngressForEndpoint(machineName string, endpoint dw.Endpoint, objs *solv rule := ingress.Spec.Rules[r] for p := range rule.HTTP.Paths { path := rule.HTTP.Paths[p] - if path.Backend.ServicePort.IntVal == int32(endpoint.TargetPort) { + if path.Backend.Service.Port.Number == int32(endpoint.TargetPort) { return ingress } } diff --git a/controllers/devworkspace/solver/che_routing_test.go b/controllers/devworkspace/solver/che_routing_test.go index 2c89a0937..bbd3c0c93 100644 --- a/controllers/devworkspace/solver/che_routing_test.go +++ b/controllers/devworkspace/solver/che_routing_test.go @@ -20,7 +20,7 @@ import ( routev1 "github.com/openshift/api/route/v1" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" - extensions "k8s.io/api/extensions/v1beta1" + networkingv1 "k8s.io/api/networking/v1" rbac "k8s.io/api/rbac/v1" apiext "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -35,7 +35,7 @@ import ( func createTestScheme() *runtime.Scheme { scheme := runtime.NewScheme() - utilruntime.Must(extensions.AddToScheme(scheme)) + utilruntime.Must(networkingv1.AddToScheme(scheme)) utilruntime.Must(corev1.AddToScheme(scheme)) utilruntime.Must(appsv1.AddToScheme(scheme)) utilruntime.Must(rbac.AddToScheme(scheme)) diff --git a/controllers/devworkspace/solver/endpoint_exposer.go b/controllers/devworkspace/solver/endpoint_exposer.go index e15e5b416..4f2235152 100644 --- a/controllers/devworkspace/solver/endpoint_exposer.go +++ b/controllers/devworkspace/solver/endpoint_exposer.go @@ -21,7 +21,7 @@ import ( "github.com/eclipse-che/che-operator/controllers/devworkspace/defaults" routev1 "github.com/openshift/api/route/v1" corev1 "k8s.io/api/core/v1" - "k8s.io/api/extensions/v1beta1" + networkingv1 "k8s.io/api/networking/v1" "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -166,12 +166,11 @@ func (e *RouteExposer) getRouteForService(endpoint *EndpointInfo) routev1.Route return route } -func (e *IngressExposer) getIngressForService(endpoint *EndpointInfo) v1beta1.Ingress { - targetEndpoint := intstr.FromInt(int(endpoint.port)) +func (e *IngressExposer) getIngressForService(endpoint *EndpointInfo) networkingv1.Ingress { hostname := hostName(endpoint.order, e.devWorkspaceID, e.baseDomain) - ingressPathType := v1beta1.PathTypeImplementationSpecific + ingressPathType := networkingv1.PathTypeImplementationSpecific - ingress := v1beta1.Ingress{ + ingress := networkingv1.Ingress{ ObjectMeta: metav1.ObjectMeta{ Name: getEndpointExposingObjectName(endpoint.componentName, e.devWorkspaceID, endpoint.port, endpoint.endpointName), Namespace: endpoint.service.Namespace, @@ -181,17 +180,21 @@ func (e *IngressExposer) getIngressForService(endpoint *EndpointInfo) v1beta1.In Annotations: finalizeIngressAnnotations(e.ingressAnnotations, endpoint.componentName, endpoint.endpointName), OwnerReferences: endpoint.service.OwnerReferences, }, - Spec: v1beta1.IngressSpec{ - Rules: []v1beta1.IngressRule{ + Spec: networkingv1.IngressSpec{ + Rules: []networkingv1.IngressRule{ { Host: hostname, - IngressRuleValue: v1beta1.IngressRuleValue{ - HTTP: &v1beta1.HTTPIngressRuleValue{ - Paths: []v1beta1.HTTPIngressPath{ + IngressRuleValue: networkingv1.IngressRuleValue{ + HTTP: &networkingv1.HTTPIngressRuleValue{ + Paths: []networkingv1.HTTPIngressPath{ { - Backend: v1beta1.IngressBackend{ - ServiceName: endpoint.service.Name, - ServicePort: targetEndpoint, + Backend: networkingv1.IngressBackend{ + Service: &networkingv1.IngressServiceBackend{ + Name: endpoint.service.Name, + Port: networkingv1.ServiceBackendPort{ + Number: endpoint.port, + }, + }, }, PathType: &ingressPathType, Path: "/", @@ -205,7 +208,7 @@ func (e *IngressExposer) getIngressForService(endpoint *EndpointInfo) v1beta1.In } if isSecureScheme(endpoint.scheme) && e.tlsSecretName != "" { - ingress.Spec.TLS = []v1beta1.IngressTLS{ + ingress.Spec.TLS = []networkingv1.IngressTLS{ { Hosts: []string{hostname}, SecretName: e.tlsSecretName,