云原生应用管理在阿里云的实践和挑战
云原生应用管理的问题和挑战
云原生应用管理面临四大核心问题:应用资源、应用配置、应用发布和应用隔离。具体表现为:
- 应用配置复杂:研发和运维关注点不同,配置内容繁多,集群、地域、环境差异大,导致配置管理困难。
- 应用资源使用与应用生命周期不一致:云资源购买和使用割裂,应用管理和云资源管理责任不明确。
- 应用发布场景复杂:原生支持扩展性差、侵入性高、资源消耗大,部分Workload支持有限。
- 应用隔离问题:多应用Operator共用Master易冲突,Pod内存储、网络、资源隔离不足。
阿里云云原生如何解决应用管理的问题
阿里云通过以下方式解决应用管理问题:
- 应用配置和模型:
- 基于OAM开源框架解耦研发和运维配置,抽象用户定义模板,降低参数透出。
- 通用模型与用户态傻瓜化使用结合,区分基础项和高级项。
- 多集群、多地域、多环境:
- OAM模型解决关注点分离,90%相同项通过Application Definition管理,10%差异项通过TemplateValues解决。
- 用户侧参数越少管理越简单,代码式解决差异性问题。
- 应用多环境和云资源场景消费:
- 一套定义多处环境运行,云资源和应用生命周期一致。
- Trait可插拔和动态兼容多环境,适配公有云和专有云。
- 复杂的应用发布:
- OpenKruise兼容扩展性好,支持各种Workload,非侵入性,渐进式滚动升级。
- 安全隔离:
- Kubernetes多租架构解决安全隔离问题,控制面多租和数据面多租结合。
阿里云云原生应用管理平台架构
平台架构分为UI层、用户管理权限逻辑层、应用逻辑层、应用产品层、应用内核层和应用服务层,涵盖应用管理全生命周期,包括应用管理、应用部署、应用弹性、应用环境管理、应用集群管理、云资源管理、基础设施管理、配置中心、应用诊断等。
阿里云云原生应用管理实践
- 应用管理全生命周期:
- IaC+GitOps与产品化结合,90%普通应用通过产品化接入,10%复杂应用采用IaC接入。
- 应用管理效率:
- 流式非阻塞发布和SLO监控双重优化,应用可观测建设降低平台人员投入。
- 经验和小结:
- Flagger、Argo-rollout、OpenKruise适合重要场景,OpenKruise扩展性好、非侵入性、渐进式升级。
- 应用配置:一套定义多处运行,应用和云资源生命周期一致。
- 应用资源和多环境:OAM解决关注点分离,用户侧少暴露参数,差异性配置解决多集群、环境、地域问题。
- Virtual Cluster架构解决控制面Operator冲突和资源问题。
- 应用隔离:IaC+GitOps适用于标准化企业,产品化+IaC结合90%接入产品化,10%复杂应用接入IaC。
- 应用效率:资源效率+人效。