OpenShift内置提供了CI/CD管道,将其作为“”。读者可以查看我两年前录制的视频,其中包含了部署一个全新微服务的Jenkins CI/CD管道样例。
7.适应性Kubernetes为集群本身提供了适应性(resilience)方案,它还提供了PersistentVolumes来支持卷(volume)的副本,从而帮助应用实现适应性。Kubernetes的ReplicationControllers/部署能够确保指定数量的pod副本在整个集群中始终正常运行,它会自动处理任何可能出现的故障。
结合适应性,容错能够作为一种有效的方式来处理用户对于可靠性和可用性的关切。运行在Kubernetes上的应用还可以通过Istio 的重试规则、断路器和池弹射(pool ejection,即移除掉出现故障的容器——译注)来实现容错。如果你想自行了解一下的话,可以尝试Istio Circuit Breaker的教程。
8.认证在Kubernetes中,认证可以通过Istio的mutual TLS认证来实现,它致力于增强微服务及其通信的安全性,而无需服务代码的变更。它会负责:
为每个服务提供一个代表其角色的强标识(identity),从而允许它能够跨集群和云进行互操作;
保护服务与服务之间的通信,以及终端用户与服务之间的通信;
提供key管理系统,自动化key和证书生成、分发、轮换和撤销。
另外,值得一提的是,我们还可以在Kubernetes/OpenShift集群中运行Keycloak以提供认证和授权。Keycloak是Red Hat Single Sign-on的上游产品。关于它的更多信息,请参阅使用Keycloak简化单点登录。如果你使用Spring Boot的话,还可以观看DevNation视频:使用Keycloak保护Spring Boot微服务或阅读博客文章。
9.跟踪基于Istio的应用可以配置为使用Zipkin或Jaeger收集跟踪的span。不管使用什么语言、框架或平台来构建应用,Istio都能支持分布式跟踪。关于这方面的知识,可参考该教程。读者还可以参见“在笔记本电脑上掌握Istio和Jaeger的基础知识”以及最近的DevNation视频:使用Jaeger进行高级的微服务跟踪。
应用服务器会消亡吗?通过这些功能,你就能意识到Kubernetes + OpenShift + Istio确实能够增强你的应用,并且提供了一些特性,这些特性以前都是由应用服务器或者像Netflix OSS这样的框架来负责的。这是否意味着应用服务器将会消亡呢?
在这个新的容器世界中,应用服务器正在变得越来越像框架。软件开发的演化很自然会导致应用服务器的演化。这种演化的一个例子就是Eclipse MicroProfile规范以及WildFly Swarm应用服务器,它为开发人员提供了各种特性,比如容错、配置、跟踪、REST(客户端和服务端)等等。WildFly Swarm和MicroProfile规范的设计是非常轻量级的,WildFly Swarm并不包含完整Java企业级应用服务器的各种各样的组件。相反,它关注微服务,只保留了将应用按照简单可执行的“.jar”文件进行构建和运行的功能。在该博客中,你可以阅读到关于MicroProfile的更多信息。
另外,Java应用还包括Servlet引擎、数据库池、依赖注入、事务、消息等特性。当然,框架可能会提供这些特性,但是应用服务器必须要具备在任何环境下构建、运行、部署和管理企业级应用所需的各种功能,不管它是不是在容器中运行。实际上,应用服务器可以在任何地方执行,例如,在裸机上、在像Red Hat Virtualization这样的虚拟化平台上、在像Red Hat OpenStack平台 这样的私有云环境中以及在像Microsoft Azure或Amazon Web Services这样的公有云环境中。