原文地址:https://blog.51cto.com/mahmut/7932433
目标:探讨 Kuberntes Ingress 和 Openshift Router 异同 前提:对Kubernetes 及 Openshift 有了解 背景: Kubernetes Ingress 及Openshift Route都可以以路由的方式暴露服务(Service),便于外界访问集群内部资源,同时也提供负载均衡。
Kubernetes Ingress 是一种 Kubernetes 资源,用于管理和配置将外部流量引导到集群内部服务的方式。它充当了集群和外部网络之间的入口点,可以轻松管理流量路由和负载均衡。Ingress 提供了一种规范的方法来定义应用程序的路由规则,包括主机名和路径匹配,以便根据不同的规则将请求路由到不同的后端服务。 具体请参考Kubernetes文档
OpenShift Route 是 OpenShift 容器平台的一项关键功能,用于管理应用程序的外部访问。它提供了集成的安全性、负载均衡、域名路由和TLS认证等功能。通过配置 Route,可以将外部流量引导到集群中的应用程序,实现强大的流量控制和安全性,同时简化了应用程序的公开和管理。Route充分利用了OpenShift的生态系统,支持OAuth、角色授权等特性,提供了灵活的路由策略,是在容器编排环境中轻松管理应用程序访问的关键工具。 具体请参考Openshift官网
你必须拥有一个 Ingress 控制器 才能满足 Ingress 的要求。仅创建 Ingress 资源本身没有任何效果。 你可能需要部署一个 Ingress 控制器,例如 ingress-nginx。 你可以从许多 Ingress 控制器中进行选择。 理想情况下,所有 Ingress 控制器都应遵从参考规范。 但实际上,各个 Ingress 控制器操作略有不同。 本次就以 higress 为例,本文未涉及用法可以参考 higress官网
apiVersion: v1
kind: Pod
metadata:
name: httpd-pod
labels:
app: httpd
spec:
containers:
- name: httpd-container
image: httpd:latest
ports:
- containerPort: 80
# 创建pod
kubectl apply -f httpd-pod.yaml
apiVersion: v1
kind: Service
metadata:
name: httpd-service
spec:
selector:
app: httpd
ports:
- protocol: TCP
port: 80
targetPort: 80
kubectl apply -f httpd-service.yaml
目前我们拥有了一个httpd pod 和一个service,通过labels: app: httpd
绑定在一起。
helm upgrade --install ingress-nginx ingress-nginx \
--repo https://kubernetes.github.io/ingress-nginx \
--namespace ingress-nginx --create-namespace
或者
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.2/deploy/static/provider/cloud/deploy.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: httpd-ingress
spec:
rules:
- host: httpd.example.com # 域名
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: httpd-service
port:
number: 80
# 配置生效
kubectl apply -f httpd-ingress.yaml
再随便一个节点访问URL http://httpd.example.com 可以看到 httpd的欢迎信息。
Openshift 支持两种方式创建Route资源,CLI 及 WEB。
apiVersion: route.openshift.io/v1
kind: Route
metadata:
name: httpd-route
spec:
to:
kind: Service
name: httpd-service
weight: 100
port:
targetPort: 80
tls:
termination: edge
wildcardPolicy: None
# 配置生效
oc create -f httpd-route.yaml
在Openshift Console可以 简单直接的创建出route资源,如下图
填好必要信息,在节点访问。
Kubernetes Ingress 和 OpenShift Route 有很多相似之处,因为它们都是用于路由流量到 Kubernetes 集群内部服务的资源。
尽管有这些相似之处,还是有一些重要的区别:
综上所述,Kubernetes Ingress 和 OpenShift Route 是强大的工具,可根据特定平台和需求选择使用。无论选择哪种工具,都能够帮助管理和控制应用程序的外部访问,以确保应用程序在云原生环境中高效运行。
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
加入交流群
请使用微信扫一扫!