微服务部署与安全:从容器化到认证授权
1. 运维团队思维转变
在数据中心的管理中,存在着“宠物与牛”的有趣类比。就像我们对待宠物,会给予关爱、取名,关注它们的健康,生病时还会带它们去看兽医;而对于牛,我们则不会投入如此多的精力。在服务器和容器的管理上也是如此。在 DevOps 出现之前,服务器管理员会像对待宠物一样对待服务器,为它们命名,安排专门的维护停机时间等。但随着 DevOps 实践的发展,如基础设施即代码和容器化,容器可以被视为“牛”。容器的生命周期较短,能够在集群中快速启动和销毁,作为运维团队,无需对其过度关注。这种类比改变了我们对微服务部署的看法,也推动了容器化的发展。
2. 容器:新的二进制文件
对于 .NET 开发者来说,容器成为了新的部署单元。以往,使用 Visual Studio 编译 .NET 程序后,会生成 .NET 程序集(DLL 或 EXE),并将这些程序集部署到服务器上。但在微服务的世界里,部署单元发生了变化,变成了容器。虽然我们仍然会将程序编译成程序集,但这些程序集会被推送到容器中,以便进行部署。容器部署的另一个优势是,它消除了不同操作系统、语言和运行时之间的障碍。
3. “在你的机器上能运行,那就部署你的机器!”
开发者常说“在我的机器上能运行”,这通常是因为生产环境中出现了在开发环境中无法复现的缺陷。由于容器具有不可变和可组合的特性,能够消除开发环境和生产环境之间的配置差异。
4. 引入 Docker
Docker 在应用程序容器化的普及过程中发挥了重要作用,就像 Google 在搜索引擎领域的地位一样,有时人们甚至将容器和 Docker 视为同义词。微