从概念、部署到优化,Kubernetes Ingress 网关的落地实践|学习笔记(一)

简介: 快速学习从概念、部署到优化,Kubernetes Ingress 网关的落地实践

开发者学堂课程【从概念、部署到优化,Kubernetes Ingress 网关的落地实践从概念、部署到优化,Kubernetes Ingress  网关的落地实践】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/1013/detail/15070


从概念、部署到优化,Kubernetes Ingress 网关的落地实践


点击确定

image.gif直接在终端进行查看是否安装成功。

提供 MSE Ingress Controller 主要是为了与容器服务 ACK 深度集成,使用声明式配置的方法管理资源比较符合容器内部的使用习惯。通过 K8s 定义MseIngressConfig 资源管理原生网关。 MseIngressConfig 跟 IngressClass 原生网关关系主要是如图所示,MseIngressConfig 主要管理云原生网关这个实例,IngressClass 主要是管理配置,原生网关监听由 IngressClass 提供分组管理。MseIngressConfig 是一个最小化的配置仅仅定义了一个网关的名字,这个网关名字其实也可以省略,默认就是 mse-ingress,需要配置一个交换机,apply 这个配置创建一个原生网关。

image.gif然后 apply 到 K8s上,可以看一下动态

image.gif现在处于 pending 状态,表示原生网关在初始化,大概需要三分钟。MSE Ingress Controller 的配置项,需要确保 MSE Ingress Controller 被赋予了 MSE 的访问权限,可以在集群点击到目标集群找到集群资源有一个 workRAM 角色

在角色中确保该角色拥有 AliyunMSEFullAccess 的权限。

image.gif然后回到应用市场查看配置总览,内容主要是网关的名称是可选的,默认是mse-ingress。付费类型目前只支持按量付费,用户可以忽略。instance 主要用来定义网关的规格性,规格默认是4c8g。副本数是默认3个,这是默认的推荐配置。交换机推荐配置主在前备在后,这个是必填的,用户可以填至少一个至多两个。network 主要是配置公网 SLB 和私网 SLB 的规格,同样安全组类型可以配置企业安全组和普通安全组。Ingress 下面主要配置了原生网关可以监听那些域名或对象,Ingress 资源如果为空表示监听所有云空间,如果指定值就可以监听指定命令空间下的 Ingress。虽然当前只支持一个,但是后面会推出支持多个进行选择。

IngressClass 主要定义一个 Ingress 解析类用来关联对应的 Ingress Provider,其中parameters 值用来定义额外资源用来管理 Ingress Provider,这里指向一个 MseIngressConfig 看到定义的 Ingress Class 的名字是 mse,并且关联 config 值,配置名也是 test。另外指定了 Ingress Class 值,在创建 Ingress Class 默认都是 MSE 就是 K8s新推出的一个特性。

终端查看创建成功并且处于 listen 的状态,因为这个集群中应该有一个 IngressClass

关联了 mse-config,这样的话就创建了一个 MSE 原生网关,并且已经处于 listen 状态,监听集群 Ingress 资源。

image.gif

部署后端服务先对灰度发布进行实践,按照 header 灰度,假设有一个原生网关,后端有一个 httpbin 服务,希望 header 中带有 stage 为 gray 的去访问 v2,其余流量都访问 v1。首先去部署服务,定义构写了一个v1、v2版本,定义 Ingress 资源对外暴露服务

image.gif

可以看到 host 是 test.com, path 是/version,打向v1版本。对于灰度的 Ingress  配置,同样也是 host 是 test.com, path 是/version,打向v2,只不过要求通过 header 做灰度流量标识,通过 Annotation 的方式指出 header 为 stage, value 为 gray 的灰度流量,然后应用该 Ingress 资源。

可以看到资源和 IP,然后验证。首先不带 header,访问到v1。这时加一个 header,访问到v2。这样就完成了基于 header 的灰度。

接下来展示基于权重灰度,希望无差别对待线上流量,将百分之三十流量迁移到v2版本,百分之七十流量迁移到v1版本。首先查看 Ingress 资源

这是稳定版本的资源,同样 host 是 test.com, path 是 /version,访问 v1版本。灰度 Ingress 资源定义了灰度的权重是30,权重总和默认为100,在这个 灰度 Ingress 访问v2。然后应用该 Ingress 资源,查看解析情况,解析成功,通过访问多次验证,可以看到v2大概占百分之三十的情况。

image.gif另外还有一些 Ingress 的高阶用法,举了两个例子,一个是重定向,另一个是 path 重写。在最佳实践中介绍了与业务的 API,比如按照那个原则设计 API,业务刚开始发展的时候没有办法按该原则设计,对外暴露直接是/version,通过重定向可以将线上老的 API 重定向到一个新的 API,可以应用业务域拆分的原则,再由网关统一经过 path 重写将业务域前缀去掉,转发给后端服务仍然是/ version。实践一下同样查看 Ingress 资源

为了看到重定向后的效果,path 用了新的 API 叫 /meta,是精确匹配,永久重定向到/httpbin/meta,因为业务是httpbin。重定向之后需要为新的 httpbin 定义一个规则在 Ingress 中体现。同样 host 是 test.com, path 换到一个正则匹配,业务域前缀是httpbin, Annotation 用的一个 rewrite-target的重写的注解,当该注解出现之后,pathType 就失效,会被转换为最早匹配,会捕获匹配到的值并且替换这个语法,$1就是捕获组的第一个位置。

在 Ingress 终端查看是否解析成功,直接服务 meta,正常情况下会直接重定向到 httpbin/meta,然后服务该 API,可以看到访问成功,这个 meta 打印出来了网关转发给后端的请求详情,可以看到 path 变为 meta,这样就完成了一个 path 重写。

基于 Ingress 可以有更多的高阶用法, MSE 网关兼容了 Nginx Ingress 核心的 Annotation,比如跨域等,更多的可以参考官方文档:https://help.aliyun.com/document_detail/424813.html

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
8月前
|
人工智能 安全 Serverless
企业AI落地实践(三):使用 AI 网关解决 AI Agent 与 LLM 的交互挑战
无论是编码方式构建 AI Agent,还是可视化流程式构建 AI Agent,一旦脱离了 LLM,就不存在 AI 一说了。所以 AI Agent 如何合理地、生产级地与 LLM 结合,将是我们今天文章的核心内容。
978 18
|
监控 Cloud Native 安全
基于 API 网关践行 API First 开发实践
API First 开发模式的核心在于:以 API 为先,将其视为“头等公民”,在构建应用、服务及集成之前,应优先定义并设计 API 及其配套。API First 作为一种相对较新的开发模式,它已逐渐流行并获得业内的广泛认可。
681 154
|
编解码 运维 Kubernetes
政采云业务网关实践:使用 Higress 统一替代 APISIX/Kong/Istio Ingress
政采云基础架构团队技术专家朱海峰介绍了业务网关项目的背景和解决方案。
841 98
|
Kubernetes 应用服务中间件 nginx
Kubernetes上安装Metallb和Ingress并部署应用程序
Kubernetes上安装Metallb和Ingress并部署nginx应用程序,使用LoadBalancer类型的KubernetesService
1169 111
|
负载均衡 容灾 Cloud Native
云原生应用网关进阶:阿里云网络ALB Ingress 全面增强
云原生应用网关进阶:阿里云网络ALB Ingress 全面增强
388 6
|
负载均衡 容灾 Cloud Native
云原生应用网关进阶:阿里云网络ALB Ingress 全能增强
在过去半年,ALB Ingress Controller推出了多项高级特性,包括支持AScript自定义脚本、慢启动、连接优雅中断等功能,增强了产品的灵活性和用户体验。此外,还推出了ingress2Albconfig工具,方便用户从Nginx Ingress迁移到ALB Ingress,以及通过Webhook服务实现更智能的配置校验,减少错误配置带来的影响。在容灾部署方面,支持了多集群网关,提高了系统的高可用性和容灾能力。这些改进旨在为用户提供更强大、更安全的云原生网关解决方案。
1457 25
|
缓存 容灾 网络协议
ACK One多集群网关:实现高效容灾方案
ACK One多集群网关可以帮助您快速构建同城跨AZ多活容灾系统、混合云同城跨AZ多活容灾系统,以及异地容灾系统。
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
715 2
|
监控 安全 应用服务中间件
微服务架构下的API网关设计策略与实践####
本文深入探讨了在微服务架构下,API网关作为系统统一入口点的设计策略、实现细节及其在实际应用中的最佳实践。不同于传统的摘要概述,本部分将直接以一段精简的代码示例作为引子,展示一个基于NGINX的简单API网关配置片段,随后引出文章的核心内容,旨在通过具体实例激发读者兴趣,快速理解API网关在微服务架构中的关键作用及实现方式。 ```nginx server { listen 80; server_name api.example.com; location / { proxy_pass http://backend_service:5000;

热门文章

最新文章

推荐镜像

更多