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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
全局流量管理 GTM,标准版 1个月
简介: 快速学习从概念、部署到优化,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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
30天前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
118 60
|
1月前
|
Prometheus Kubernetes 监控
k8s部署针对外部服务器的prometheus服务
通过上述步骤,您不仅成功地在Kubernetes集群内部署了Prometheus,还实现了对集群外服务器的有效监控。理解并实施网络配置是关键,确保监控数据的准确无误传输。随着监控需求的增长,您还可以进一步探索Prometheus生态中的其他组件,如Alertmanager、Grafana等,以构建完整的监控与报警体系。
181 62
|
9天前
|
Kubernetes 负载均衡 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第27天】Kubernetes(简称K8s)是云原生应用的核心容器编排平台,提供自动化、扩展和管理容器化应用的能力。本文介绍Kubernetes的基本概念、安装配置、核心组件(如Pod和Deployment)、服务发现与负载均衡、网络配置及安全性挑战,帮助读者理解和实践Kubernetes在容器编排中的应用。
35 4
|
10天前
|
Kubernetes 监控 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第26天】随着云计算技术的发展,容器化成为现代应用部署的核心趋势。Kubernetes(K8s)作为容器编排领域的佼佼者,以其强大的可扩展性和自动化能力,为开发者提供了高效管理和部署容器化应用的平台。本文将详细介绍Kubernetes的基本概念、核心组件、实践过程及面临的挑战,帮助读者更好地理解和应用这一技术。
38 3
|
17天前
|
Kubernetes 监控 开发者
专家级实践:利用Cloud Toolkit进行微服务治理与容器化部署
【10月更文挑战第19天】在当今的软件开发领域,微服务架构因其高可伸缩性、易于维护和快速迭代的特点而备受青睐。然而,随着微服务数量的增加,管理和服务治理变得越来越复杂。作为阿里巴巴云推出的一款免费且开源的开发者工具,Cloud Toolkit 提供了一系列实用的功能,帮助开发者在微服务治理和容器化部署方面更加高效。本文将从个人的角度出发,探讨如何利用 Cloud Toolkit 来应对这些挑战。
33 2
|
18天前
|
Kubernetes 持续交付 Docker
探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
【10月更文挑战第18天】探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
64 2
|
1天前
|
Kubernetes 负载均衡 调度
Kubernetes集群管理与编排实践
Kubernetes集群管理与编排实践
|
1天前
|
Kubernetes Cloud Native 前端开发
Kubernetes入门指南:从基础到实践
Kubernetes入门指南:从基础到实践
4 0
|
18天前
|
存储 Kubernetes 监控
深度解析Kubernetes在微服务架构中的应用与优化
【10月更文挑战第18天】深度解析Kubernetes在微服务架构中的应用与优化
75 0
|
29天前
|
NoSQL 关系型数据库 Redis
高可用和性能:基于ACK部署Dify的最佳实践
本文介绍了基于阿里云容器服务ACK,部署高可用、可伸缩且具备高SLA的生产可用的Dify服务的详细解决方案。
下一篇
无影云桌面