openshift 路由和 k8s ingress 有什么区别?
what's the difference between openshift route and k8s ingress?
我是 openshift 和 k8s 的新手。我不确定这两个术语有什么区别,openshift route vs k8s ingress?
最终他们是为了达到同样的目的。最初 Kubernetes 没有这样的概念,因此在 OpenShift 中开发了 Route
的概念,以及用于提供负载平衡代理等的位。随着时间的推移,在 Kubernetes 中拥有这样的东西被认为是有用的,因此,使用 OpenShift 中的 Route
作为可以完成的工作的起点,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
}
我是 openshift 和 k8s 的新手。我不确定这两个术语有什么区别,openshift route vs k8s ingress?
最终他们是为了达到同样的目的。最初 Kubernetes 没有这样的概念,因此在 OpenShift 中开发了 Route
的概念,以及用于提供负载平衡代理等的位。随着时间的推移,在 Kubernetes 中拥有这样的东西被认为是有用的,因此,使用 OpenShift 中的 Route
作为可以完成的工作的起点,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
}