大家好,欢迎来到IT知识分享网。
原创作者:吴鹏
一、 什么是Contour Ingress
Contour是Kubernetes的Ingress控制器,通过将Envoy代理部署为反向代理和负载平衡器来工作。Contour支持开箱即用的动态配置更新,同时保持轻量级配置文件。
Contour还引入了一个新的入口API HTTPProxy,该API 通过自定义资源定义(CRD)实现。它的目标是扩展Ingress API的功能,以提供更丰富的用户体验并解决原始设计中的缺点。
二、 Contour 特点
- 在不中断连接的情况下动态更新负载平衡配置
- 安全支持多组Kubernetes集群中的入口
- 允许将路径+头或域的路由配置委派给另一个namespace
- 灵活定义服务权重和负载平衡策略,无需添加注解。
- 多个上游服务(后端服务)
- TLS证书委派到另一个namespace
三、Contour 构架
Contour Ingress控制器是以下各项之间的协作:
Envoy,提供高性能的反向代理。
Contour,充当Envoy的管理服务器并为其提供配置。
尽管可以进行其他配置,但这些容器是分开部署的,“contour”作为deployments,“envoy”作为“daemonset”。
在Envoy Pods中,Contour在bootstrap模式下作为initcontainer运行,并将引导程序配置写入临时卷。该卷将传递到Envoy容器,并指示Envoy将Contour视为其管理服务器。
初始化完成后,Envoy容器启动,检索由Contour的bootstrap模式编写的引导程序配置,并与Contour建立GRPC会话以接收配置。
如果管理服务器不可用,Envoy将正常重试,从而消除了任何容器启动订购问题。
Contour是Kubernetes API的客户端。Contour监视Ingress,HTTPProxy,IngressRoute,Secret,Service和Endpoint对象,并通过将其对象的缓存转换为相关的JSON节来充当其Envoy兄弟的管理服务器:CDS的服务对象,RDS的Ingress, SDS等)。
从Kubernetes到Contour的信息传输是通过使用SharedInformer框架观察API来实现的。
Kubernetes准备就绪探针配置为检查Envoy是否已准备好接受连接。Envoy准备情况探测将GET请求发送到ready Envoy的管理端点中。
对于Contour,活动探针会检查/healthz Pod的指标端口上的运行情况。“就绪”探针是对gRPC端口已打开的TCP检查。
Contour如何在Kubernetes集群中工作的几个高层架构图
四、部署 Contour
第一种部署方式
kubectl apply -f https://projectcontour.io/quickstart/contour.yaml
第二种方式
git clone https://github.com/projectcontour/contour.git;kubectl apply -f contour/examples/contour
它将会install CRD (IngressRoute,TLSCertificateDelegation,HTTPProxy),RBAC;在deployments部署contour,daemonset 部署 envoy;在jobs中部署cergen生成grpc证书
为Envoy启用主机网络进行部署
为了在启用主机联网的情况下部署Envoy守护程序,您需要进行两项更改。
在Pod规范级别的Envoy守护程序定义中,更改:
dnsPolicy:ClusterFirst改为ClusterFirstWithHostNet
并设置hostNetwork:true
Envoy在端口80和443上运行
五、在Contour通过HTTPProxy配置映射
5.1 HTTPProxy是什么
所述入口对象加入到Kubernetes在1.1版本来描述一个集群范围的反向HTTP代理的性能。从那时起,Ingress对象一直没有超过beta阶段,它的停滞激发了批注的大量涌现,以表达HTTP路由缺少的属性 该目标HTTPProxy(以前IngressRoute)自定义资源定义(CRD)是根据所述入口API的功能扩展到允许更丰富的用户体验,以及解决后者的局限性,多tenent环境中使用
5.2 为什么使用HTTPProxy配置映射
安全地支持多团队Kubernetes集群,并能够限制哪些命名空间可以配置虚拟主机和TLS凭据。允许包括来自另一个HTTPProxy(可能在另一个命名空间中)的路径或域的路由配置。在一条路由中接受多种服务,并在它们之间负载均衡流量。本机允许定义服务加权和负载平衡策略而无需注释。在创建时验证HTTPProxy对象,并为创建后的有效性进行状态报告。
5.3 使用HTTPProxy部署一个简易的服务(实战)
kubectl create ns demo-ns kubectl run nginx --image=nginx --replicas=3 -n demo-ns kubectl expose deploy nginx --port=80 --target-port=80 --protocol=TCP -n demo-ns
六、httpproxy.yaml
apiVersion: projectcontour.io/v1 kind: HTTPProxy metadata: name: basic namespace: demo-ns spec: virtualhost: fqdn: test.com routes: - conditions: - prefix: / services: - name: nginx port: 80
kubectl apply -f httpproxy.yaml
等待服务nginx running,然后通过curl来访问
curl ${EnvoyHost}/ -H 'Host: test.com'
七、contour-cergen、envoy之bootstrap、xds简要介绍
7.1 Job contour-certgen的在Contour与envoy中承担了什么作用?
主要是保护Envoy和Contour之间的通信所需的步骤。cergen将在projectcontour名称空间中提供三个Secrets :
cacert:包含CA的公共证书。contourcert:包含Contour的密钥对,用于提供TLS安全的gRPC。该名称必须是有效的名称证书,contour才能起作用。当前由Contour硬编码。envoycert:包含Envoy的密钥对,用作连接到Contour的客户端。
7.2 Contour bootstrap有什么作用?
要使用xDS API,必须提供一个引导程序配置文件。这提供了静态服务器配置,并在需要时将Envoy配置为访问动态配置。这是通过命令行通过-c标志提供的
./envoy -c <path to config>.{json,yaml,pb,pb_text}
然后envoy与Contour建立GRPC会话以接收配置
7.3 xds是什么?
Envoy通过文件系统或查询一台或多台管理服务器发现其各种动态资源。这些发现服务及其相应的API统称为xDS。通过预订,指定要监视的文件系统路径,启动gRPC流或轮询REST-JSON URL 来请求资源。后两种方法涉及发送带有DiscoveryRequest 原型有效负载的请求。所有方法都以DiscoveryResponse原型有效负载交付资源.
推荐阅读:
https://www.envoyproxy.io/
https://projectcontour.io/
原文链接:https://mp.weixin..com/s/gMmhHP5NTDMH2wLMPrcKFg
关于睿云智合
深圳睿云智合科技有限公司成立于2012年,总部位于深圳。早期专注于为中国金融保险等大型企业提供创新技术、电子商务、CRM等领域专业咨询服务。核心骨干人员全部为来自金融、科技行业知名企业资深业务和技术专家。
自2016年始,睿云智合率先将容器技术引进到中国保险行业客户,此后,公司组建了专业的云原生技术产品研发和实施服务团队,以自主可控与开源技术的融合为产品设计宗旨,不断深耕软件定义和云原生领域创新技术以及国内企业数字化转型服务市场。并分别在成都、深圳设立了研发中心,在北京、上海设立了分支机构。旨在帮助中国企业客户将云原生趋势技术应用于企业新一代IT架构数字化底座的建设,并与生态合作伙伴一起为企业客户提供云原生数字化底座衍生出的PaaS云平台、工业互联网、大数据中心、AI机器学习平台以及区块链BaaS平台等解决方案的落地。为企业数字化转型以及业务发展赋能。
此外,凭借多年来在呼叫中心领域的业务经验与技术积累,睿云智合率先在业界推出基于开源软交换技术的微服务架构多媒体数字化业务平台,将语音、视频、webchat、微信、微博等多种客户接触渠道集成,实现客户统一接入、精准识别、智能路由的CRM策略,并通过容器化治理方式来支持平台的全生命周期管理,显著提升了数字化业务处理的灵活、高效、弹性、稳定等特性。
睿云智合是Linux与CNCF云原生基金会会员,是全球首批Kuberentes官方认证服务提供商 (KCSP),也是Kubernetes官方认证平台产品提供商。睿云智合依托趋势IT技术为企业客户的平台赋能数字化转型战略提供了包括产品、技术服务、咨询、培训等服务。通过数字化底座+行业解决方案为全国金融、政企、医疗、运营商、制造、能源、教育以及互联网等各个行业企业和用户打造一个全面感知、可靠传输、智能处理、精准决策的产业能力底座。帮助企业客户打通数据链接,加速业务创新,赋能产业竞争力。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/69686.html