
上QQ阅读APP看书,第一时间看更新
1.2 与Kubernetes集成
前面提到,Quarkus是要在Kubernetes上运行的。这听起来不错,但我们知道,很多应用都可以运行在Kubernetes上。应用只要能放到Docker容器中就能在Kubernetes上运行。即便如此,还必须对应用做很多裁剪、优化、配置才能在Kubernetes上高效运行,还需要编写多个YAML文件——实际上没人愿意写YAML。
Quarkus通过一系列增强功能,让我们在部署应用程序和使用Kubernetes时省去了大量工作。Quarkus应用启动时,附带了一些Dockerfile文件,用于生成Docker容器,这是很好的开始。这些文件经过优化,可以在OpenJDK JVM上运行,或者在GraalVM上作为原生可执行文件运行,其中包含了应用程序运行所必需的内容,以尽可能地避免出现臃肿的容器镜像。
其次,当使用Kubernetes扩展时,Quarkus可以为普通的Kubernetes或OpenShift部署生成资源(YAML文件)!不再需要编写YAML文件或检查缩进。毕竟,比起调试YAML文件中的格式错误,开发者更愿意把精力放在代码上。部署到Kubernetes集群之前,Quarkus还可以将镜像推送到镜像仓库中。所有这些应用镜像都可以通过Quarkus应用配置做进一步增强和定制,详见第4章。例如,在Quarkus 1.4和更高版本中,ConfigMap和Secret可以从API服务器中读取——不需要挂载Pod中的任何文件!