Azure Kubernetes Service (AKS) 基线项目介绍
项目概述
AKS 基线项目展示了一种通用的建议起点(基线)基础设施架构,专为一般性的 AKS 集群设计。它的目标是引导一个跨学科团队或多个独立团队(比如网络、安全和开发团队)部署这一通用基线架构,并帮助他们理解其各个组成部分。
该实现通过详细的部署过程,帮助用户深入理解每个组件,这样用户能够将这一知识应用到他们的工作负载中。
Azure 架构中心指南
该项目有一组配套文章,描述了安全 AKS 集群的挑战、设计模式和最佳实践。这些文章可以在 Azure 架构中心找到。这一实现实际上是对这些架构指导的直接实施。
架构内容
此架构主要关注于基础设施,而非工作负载。重点在于 AKS 集群本身,包括身份、部署后配置、密钥管理和网络拓扑等问题。
推荐的最低基准构建整合了 Azure 服务,能够提供可观测性、支持多区域扩展的网络拓扑,以及确保集群内流量的安全。这一架构应作为生产前和生产阶段的起点。
核心架构组件
架构中包含多个重要组件,以下是其中的一些关键元素:
Azure 平台
- AKS v1.30
- 系统和用户节点池分离
- AKS 管理的微软 Entra ID 集成
- 使用微软 Entra ID 支持的 Kubernetes RBAC
- 托管身份
- Azure CNI Overlay
- Azure Monitor for containers
- Azure 虚拟网络(中心-辐射)
- Azure 防火墙托管出口
- Azure 应用网关(WAF)
- AKS 管理的内部负载均衡器
集群内 OSS 组件
- Azure Workload Identity
- Flux GitOps Operator
- ImageCleaner (Eraser)
- Kubernetes Reboot Daemon
- Secrets Store CSI Driver for Kubernetes
- Traefik Ingress Controller
部署参考实现
AKS 托管工作负载的部署通常涉及职责划分和生命周期管理(涉及项目前置要求、主机网络、集群基础设施以及工作负载本身)。不同团队通常负责不同的组件。
该项目遵循类似的方法,用逐步的流程帮助用户了解解决方案的各个部分及它们之间的关系。
部署流程
- 准备集群:在部署集群前须处理一些事项,包括确认订阅和 AD 租户权限、计划团队职责分工等。
- 构建目标网络:推荐在经过精心规划的网络中部署 AKS,通常采用中心-辐射模式。
- 部署集群:这部分主要涉及网络拓扑指引及 Azure 资源部署。
- 部署工作负载:安排工作负载的 CI/CD 部署,可能涉及更高级的部署策略。
- 验证:进行端到端部署验证。
资源清理
项目提供了资源清理步骤以避免不必要的费用。
高级话题
本参考实现暂未深入某些高级场景,如集群生命周期管理、工作负载 SDLC 集成、容器安全等。
最后思考
Kubernetes 是一个非常灵活的平台,允许基础设施和应用运营者做出多种选择以实现其业务和技术目标。我们鼓励将该参考实现作为内部团队架构讨论的起点,以适应特定需求并最终提供令人满意的客户解决方案。
相关文档
- Azure Kubernetes Service 文档
- 微软 Azure 良好架构框架
- AKS 上的微服务架构
这个项目采用了微软开源行为准则,欢迎任何 contribution 及意见建议。