暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

云原生前沿手札丨应用开发大提速,自动化部署 SaaS 基础设施!

Azure云科技 2023-04-28
163


8 卷

在云基础设施高度完备的当下

认准高潜垂直赛道 SaaS 模式

行动迅捷,数字驱动力强劲

标志性的“订阅”服务

长期加持企业服务可持续增长 

规模化效应显著的

 SaaS 环境中

往往存在多租户隔离

以及实现租户引导自动化

两大架构挑战


应对 SaaS 开发挑战,本篇微软 Azure 云原生前沿手札中,我们将结合典型的 SaaS 基础设施要求,为您分享如何应用 Github Actions 在 Azure AKS 上创建 SaaS 应用的开发理念与操作要点,在平衡租户资源、加速应用开发的进程中助您一臂之力,以智慧工作流实现自动化管理。




SaaS 基础设施要求


整体看,在多租户的基础上,提供稳固的可靠性与安全性,才能让 SaaS 服务具备实际价值。由此,增进产品开发的成熟度,需要满足以下4项基础要求:

■  实施多重租赁

现实情况下,允许部分基础设施全面共享、为特定租户和服务提供专用基础设施,这两种模式的组合应用较为常见。值得注意的是,失衡的多重租赁需要在不假定租户之间任何信任度情况下实施“硬租户隔离”。

■  租户引导自动化

在租户注册前,即可应用 Azure Functions 采集租户环境,并为租户启动利用 Github Actions 运行的 IaC 模板,实现定制参数化和自动化的简单、可重复流程引导租户。

■  管理用户身份

结合 Azure Active Directory B2C 部署集成,为用户登录 SaaS 服务时提供 SSO 体验,允许 SaaS 用户采用首选社交、企业或本地账户身份获得对 SaaS 应用或 API 统一登录访问。

■  计费与计量指标分析

在 SaaS 基础设施组件嵌入钩子,以便对实现精细化的计量与计费分析。具体表现方式为将租户环境注入基础设施日志与监控功能,从而将相关日志作为 CDR 进行处理,并生成具体租户计费明细。




应用 K8s/AKS 支持多重租赁


针对 SaaS 的 AKS 实现细节中,同时具备本地 Kubernetes 构造和独特的 AKS 与 Azure 功能的租户隔离。谈及租户隔离,需要满足“控制面”与“数据面”的双重隔离。

AKS 控制面隔离

■  K8s 命名空间

以命名空间的机制,帮助用户实现 AKS 集群内部隔离 API 资源分组,充当共享集群存储和隔离每租户资源的逻辑容器。

■  资源配额

为缓解集群内“嘈杂邻居”问题,可使用资源配额限制租户在命名空间创建的 Pod 数量等 API 资源数量。

■  服务网格*

应用开放类、Istio、Linkerd 等服务网格,可提供对容器通信的可观察性与安全连接,借助路由规则、断路器、故障注入以及针对失败请求的重试与补偿而实现流量管理,改善 SaaS 基础设施。

■  前置 KEDA*

AKS 为 KEDA 提供支持服务,以满足快速自动扩容需求,来助力平台用户同步响应特定事件。该服务会综合内外部指标,为 K8s Horizontal Pod Autoscaler(HPA)提供帮助。多数时候也能减少节点扩容所致的隐患。

*服务网格,指的是借助代理促进服务或微服务之间服务到服务通信的层。

*KEDA,全称为Kubernetes Event-driven Autoscaling,即 Kubernetes 事件驱动自动缩放。


AKS 数据面隔离

■  网络策略

采用网络策略可以限制 pod 间通信命名空间标签或 IP 地址范围,以实现对通信的控制。

■  服务质量

为免费与付费租户配置不同的 SLA,限定 pod 优先权与 K8s 带宽插件使用权。在集群资源不足时,付费客户的高优先级 pod 可驱逐免费客户的 pod。

■  Kata 容器*

将硬件虚拟化技术加持防护后,Kata 容器可提供更卓越的工作负载隔离,在 AKS 上实现“保密计算”用例。在此基础上,借助数据面隔离更能提升合规性。

■  Defender

Microsoft Defender for Containers 云原生解决方案,可借助数据面硬化、薄弱环节评估和持续监控功能,提升运行容器的安全性。

*Kata 容器,指的是轻量化 VM(拥有具备嵌套虚拟化功能的专用内核),旨在获得拥有专用内核的安全优势,并与 K8s 无缝集成,可用于自动扩容或滚动更新等。




SaaS 应用,这样部署


万事俱备,开启实践。采用 Github Actions 在 Azure AKS 上部署云原生 SaaS 应用,可以依照如下步骤行动。


第一步,完成集群与租户配置

启动 AKS 集群并应用集群“全局”配置,是第一步。关于 AKS SaaS 集群配置所需,具体如下:

集群配置 

  针对高级网络启用 CNI(AKS 策略所需插件)

  启用网络策略

  开始 Azure 策略/启用

  启用机密库 CSI 驱动器(按租户启用)

  启用集群的“Defender for Containers


租户配置 

  实现每租户独立命名空间,将工作负载的服务账户凭证,保存为 K8s 机密

  实现每租户 K8s 计算、存储和对象数目的资源配额,并保证监控并按需调整

■  实现每租户网络策略,在 .yaml 清单定义有序规则集,以便流量的收发管理


第二步,应用 Github Actions 推送租户专用配置

完成配置后,为实现自动化,我们将采用 GitHub Actions 来推送配置。集群启动后,租户可以通过门户注册流程引导到集群,Azure Function 触发的 Github Actions 可实现租户专用配置的自动化。

实现 Github Actions 推送租户专用配置,要借助 Azure AD 这一身份桥梁,连接至 Azure,从而访问 Azure AKS 等部署所需的服务。

GitHub Actions 接入 Azure 四步走

1、配置 Github Actions 将会使用和定义范围的服务主体

2、将主体的凭证作为机密,并添加到 Github Actions

3、将记录 Github Actions 的“登录”工作流程步骤添加到 Azure

4、添加工作流程步骤,按照下方链接通过 Github Actions 使用 kubectl


⦿ 扫描二维码

通过 Github Actions 使用 kubectl


配置正确访问权限后,Github Actions 创建集群并且推送需要集群级别范围的配置


第三步,将“每租户配置”推送至定义集群

启用集群后,手动触发下一个 Github Actions 工作流程或者将流程集成到 Azure function,以便将租户专用配置推送到 ASK 集群。

总览集群智能举措

  通过 kubectl 创建命名空间

  为命名空间,配置资源配额

  针对 pod 实现每租户网络策略

  创建每个租户的机密存储器

  获取每个租户的 ACR 凭证

  部署租户的应用实例 Pod


⦿ 扫描如下 Github 库

克隆相关代码,深入探索学习


将应用程序部署至 AKS

加速云端软件交付,提升基础设施全局利用率势在必行。打造多租户模式 SaaS 环境的智能开发流程,将更有力地驱动创新迭代。速览学习之余,开发伙伴们也要记得实践哦。即刻登录 Azure 控制台,在云原生的进阶之旅中,开启您的“集群多重租赁”部署实战吧!


文章转载自Azure云科技,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论