Kubernetes 什么';openshift路线和k8s入口之间的区别是什么?

Kubernetes 什么';openshift路线和k8s入口之间的区别是什么?,kubernetes,openshift,openshift-origin,Kubernetes,Openshift,Openshift Origin,我是openshift和k8s的新手。我不确定openshift route和k8s入口这两个术语之间的区别是什么?最终,它们旨在达到相同的目的。最初Kubernetes没有这样的概念,因此在OpenShift中开发了路由的概念,以及用于提供负载平衡代理等的位。随着时间的推移,Kubernetes中有这样的东西被认为是有用的,因此使用OpenShift中的路由作为可以做的起点,Ingress是为Kubernetes开发的。在Ingress版本中,他们选择了一个更通用的基于规则的系统,因此您指定它

我是openshift和k8s的新手。我不确定openshift route和k8s入口这两个术语之间的区别是什么?

最终,它们旨在达到相同的目的。最初Kubernetes没有这样的概念,因此在OpenShift中开发了
路由
的概念,以及用于提供负载平衡代理等的位。随着时间的推移,Kubernetes中有这样的东西被认为是有用的,因此使用OpenShift中的
路由
作为可以做的起点,
Ingress
是为Kubernetes开发的。在
Ingress
版本中,他们选择了一个更通用的基于规则的系统,因此您指定它们的方式看起来有所不同,但目的是为了能够有效地执行相同的操作。

以下代码实现将在OCP中创建一个路由。 OCP将以相同的方式将入口视为路由。

// build the ingress/route object
func (r *ReconcileMobileSecurityService) buildAppIngress(m *mobilesecurityservicev1alpha1.MobileSecurityService) *v1beta1.Ingress {
    ls := getAppLabels(m.Name)
    hostName := m.Name + "-" + m.Namespace + "." + m.Spec.ClusterHost + ".nip.io"
    ing := &v1beta1.Ingress{
        TypeMeta: v1.TypeMeta{
            APIVersion: "extensions/v1beta1",
            Kind:       "Ingress",
        },
        ObjectMeta: v1.ObjectMeta{
            Name:      m.Name,
            Namespace: m.Namespace,
            Labels:    ls,
        },
        Spec: v1beta1.IngressSpec{
            Backend: &v1beta1.IngressBackend{
                ServiceName: m.Name,
                ServicePort: intstr.FromInt(int(m.Spec.Port)),
            },
            Rules: []v1beta1.IngressRule{
                {
                    Host: hostName,
                    IngressRuleValue: v1beta1.IngressRuleValue{
                        HTTP: &v1beta1.HTTPIngressRuleValue{
                            Paths: []v1beta1.HTTPIngressPath{
                                {
                                    Backend: v1beta1.IngressBackend{
                                        ServiceName: m.Name,
                                        ServicePort: intstr.FromInt(int(m.Spec.Port)),
                                    },
                                    Path: "/",
                                },
                            },
                        },
                    },
                },
            },
        },
    }

    // Set MobileSecurityService instance as the owner and controller
    controllerutil.SetControllerReference(m, ing, r.scheme)
    return ing
}

路由也面向多租户,因此在Ingress中尚不可用的路由中提供了支持,以防止命名空间A“窃取”属于命名空间B的主机名。openshift HAProxy路由器(Ingress控制器)也更为成熟,并经历了大量的安全强化(不允许使用无效的SSL证书),等等。谢谢。另一个问题,我需要向外部公开UDP端口,可以路由到UDP吗?我在openshift文档中没有找到任何示例。